Phonegap 1.5 (Cordova) ios childbrowser вообще не открывается - PullRequest
6 голосов
/ 14 марта 2012

Я полный новичок в PhoneGap, так что будь осторожен со мной, если сможешь :) 1001 *

У меня установлен phonegap 1.5 и он работает нормально. Я изо всех сил пытался установить плагин childbrowser, но я считаю, что он установлен правильно. Тем не менее, я не могу заставить ребенка показать это? Я пробовал следовать различным учебникам здесь (http://bit.ly/ifK9lM) и здесь (http://bit.ly/wOlq6k).). Я не получаю никаких ошибок сборки или консольных ошибок, но дочерний браузер просто не отображается, когда я нажимаю на ссылку .

Все, что я получаю в консоли, когда я нажимаю на кнопку, это "Открытие URL: http://www.google.com". Так что, как будто он пытается ... но у меня просто нет визуального вывода ??

У меня есть файл ChildBrowser.js в корне моей папки www вместе с файлом cordova.js. У меня есть все файлы плагинов для дочернего браузера, добавленные в папку плагинов в xcode.

Я использую Xcode 3.2.6

Если кто-нибудь может подсказать, что я делаю неправильно, это будет высоко ценится.

Я не могу опубликовать весь связанный код здесь, потому что он просто вышел из-под контроля. Рады опубликовать запрошенный код.

Вот мой текущий файл appdelegate.h:

#import "AppDelegate.h"
#import "MainViewController.h"

#ifdef CORDOVA_FRAMEWORK
#import <Cordova/CDVPlugin.h>
#import <Cordova/CDVURLProtocol.h>
#else
#import "CDVPlugin.h"
#import "CDVURLProtocol.h"
#endif

#import "ChildBrowserCommand.h"
#import "ChildBrowserViewController.h"

@implementation AppDelegate

@synthesize invokeString, window, viewController;

//Code excluded for brevity here.....

#pragma UIWebDelegate implementation

- (void) webViewDidFinishLoad:(UIWebView*) theWebView 
{
// only valid if FooBar.plist specifies a protocol to handle
if (self.invokeString)
{
    NSString* jsString = [NSString stringWithFormat:@"var invokeString = \"%@\";", self.invokeString];
    [theWebView stringByEvaluatingJavaScriptFromString:jsString];
}

 // Black base color for background matches the native apps
theWebView.backgroundColor = [UIColor blackColor];

return [self.viewController webViewDidFinishLoad:theWebView];
}

- (void) webViewDidStartLoad:(UIWebView*)theWebView 
{
return [self.viewController webViewDidStartLoad:theWebView];
}

- (void) webView:(UIWebView*)theWebView didFailLoadWithError:(NSError*)error 
{
return [self.viewController webView:theWebView didFailLoadWithError:error];
}

- (BOOL) webView:(UIWebView*)theWebView shouldStartLoadWithRequest:                (NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
    return [self.viewController webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType];
}


- (void) dealloc
{
[super dealloc];
}

@end

Вот мой index.html:

<!DOCTYPE html>
<html>
<head>
<title></title>

<meta name="viewport" content="width=device-width, initial-scale=1.0, 
maximum-scale=1.0, user-scalable=no;" />
<meta charset="utf-8">
<script type="text/javascript" charset="utf-8" src="cordova-1.5.0.js"></script>
<script type="text/javascript" charset="utf-8" src="ChildBrowser.js"></script>

<script type="text/javascript">
var childBrowser;
function onBodyLoad()
{       
    document.addEventListener("deviceready", onDeviceReady, false);
}


function onDeviceReady()
{
    childBrowser = ChildBrowser.install();
}

function openChildBrowser(url)
{
    try {
        childBrowser.showWebPage(url);
    }
    catch (err)
    {
        alert(err);
    }
}

</script>
</head>
    <body onload="onBodyLoad()">
    <h1>Hey, it's Cordova!</h1>
    <button onclick="openChildBrowser('http://www.google.com');">Open Google</button>
</body>
</html>

Ответы [ 5 ]

6 голосов
/ 02 апреля 2012

Брэд

У меня была такая же проблема, как и у вас, и я понял, что все сводилось к тому, как я добавил файлы в Xcode.Убедитесь, что вы действительно перетаскиваете файлы в папку плагинов в XCode - не просто помещайте их в саму папку.

Также убедитесь, что вы добавили файл .xib.Если вы следуете инструкциям здесь: http://blog.digitalbackcountry.com/2012/03/installing-the-childbrowser-plugin-for-ios-with-phonegapcordova-1-5/ он упоминает только о добавлении .h, .m и файла комплекта, но на скриншоте вы можете видеть, что там также находится файл xib.

Вам также может понадобиться перейти на Xcode 4 - у меня работает на Xcode 4.2 и Cordova 1.5

3 голосов
/ 21 марта 2012

Вам не нужно ничего менять в файле appdelegate. Без импорта, без изменений кода, ничего. Просто скопируйте специфичные для ОС файлы в каталог Plugin, измените файл Cordova.plist и скопируйте файлы JS в свою папку www. И вы должны быть установлены.

Дайте мне знать, если это поможет - http://blog.digitalbackcountry.com/2012/03/installing-the-childbrowser-plugin-for-ios-with-phonegapcordova-1-5/

0 голосов
/ 01 апреля 2012

Я использую тот же плагин, который использует Райан Стюарт, и он работает. Он написал хорошую статью, так что проверьте его.Я смог заставить его работать с файлами readme в папке плагина, есть некоторые небольшие моды, которые вы должны сделать.

Кроме того, вам, возможно, придется обновить свою версию XCode.Для меня это работало на 4.2, а теперь я на 4.3.1., Но если вы работаете на более ранней версии, вам, возможно, придется совершить прыжок

Убедитесь, что вы также следовали 'обновлению Cordovaдокумент при установке самой Cordova.Внимательно прочитайте все, потому что именно здесь у меня возникла проблема с установкой плагина, а не самого плагина.

Удачи!

0 голосов
/ 20 марта 2012

Не думаю, что Childbrowser еще работает с Cordova (1.5).

Вы должны использовать phonegap 1.4.1. Вот несколько примеров для 1.4.1: https://github.com/RandyMcMillan/CDVPluginDemos

Если у кого-то есть работа с Cordova, пожалуйста, опубликуйте несколько примеров здесь:

0 голосов
/ 14 марта 2012

Попробуйте вызвать функцию, чтобы показать страницу следующим образом:

window.plugins.childBrowser.showWebPage (URL);

Какой ключ и значение вы указали в файле Cordova.plist? Вы помните тот для внешних хостов?

...