Phonegap 1.5 (Cordova) ios childbrowser 根本无法打开

Posted

技术标签:

【中文标题】Phonegap 1.5 (Cordova) ios childbrowser 根本无法打开【英文标题】:Phonegap 1.5 (Cordova) ios childbrowser doesn't open at all 【发布时间】:2012-03-14 01:00:58 【问题描述】:

我是一个完整的Phonegap新手,所以如果可以的话,请放轻松:)

我已经安装了 phonegap 1.5 并且运行良好。我努力安装 childbrowser 插件,但我相信它现在已正确安装。但是,我似乎无法让 childbrowser 显示?我在这里(http://bit.ly/ifK9lM)和这里(http://bit.ly/wOlq6k)尝试了各种教程。我没有收到任何构建错误或控制台错误,但是当我单击链接时子浏览器不会显示。

当我单击按钮时,我在控制台中得到的只是“打开网址:http://www.google.com”。所以就好像它在尝试......但我只是没有视觉输出??

我的 www 文件夹的根目录中有 ChildBrowser.js 文件,旁边还有 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>

【问题讨论】:

您是否记得将文件添加为组而不是引用? 【参考方案1】:

布拉德

我遇到了和你一样的问题,并意识到这取决于我如何将文件添加到 Xcode。确保您确实将文件拖到 Xcode 中的 Plugins 文件夹中 - 不要只是将它们放在文件夹本身中。

还要确保添加 .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 上

【讨论】:

谢谢,你救了我一大堆 :) xib 文件就在上面 谢谢伙计,结合 Ryan 的链接,您的 cmets 非常有帮助。我认为我最大的问题是使用过时的 Xcode。现在一切都好。谢谢 Xcode 中的“刷新项目”命令在哪里?为了爱,我花了一个小时在这上面,这完全是因为,即使我的文件在正确的位置,Xcode 也不知道该看!无论如何,非常感谢您指出这一点。现在效果很好! 有谁知道为什么实际上需要.xib?我没有看到它在代码中的任何地方引用。【参考方案2】:

您无需更改 appdelegate 文件中的任何内容。没有导入,没有代码更改,什么都没有。只需将特定于操作系统的文件复制到插件目录中,修改 Cordova.plist 文件,然后将 JS 文件复制到您的 www 文件夹中。你应该准备好了。

如果这有帮助,请告诉我 - http://blog.digitalbackcountry.com/2012/03/installing-the-childbrowser-plugin-for-ios-with-phonegapcordova-1-5/

【讨论】:

感谢 Ryan,我将接受 supermethod 的答案作为正确答案,仅仅是因为他提供了额外的信息。非常感谢您的贡献。【参考方案3】:

尝试调用该函数以显示如下页面:

window.plugins.childBrowser.showWebPage(url);

您在 Cordova.plist 文件中添加了什么键和值?您还记得用于外部主机的那个吗?

【讨论】:

您好,感谢您的回答。我已经尝试过这种方式并得到了相同的结果。在我的控制台中打印出相同的内容......并且什么也没有出现。我现在已经将我的外部主机设置为“*”以允许一切。就 ChildbrowserEntries 而言,我有以下内容: 键:ChildBrowserCommand 类型:字符串(默认) 值:ChildBrowserCommand 键:ChildBrowser 类型:字符串(默认) 值:ChildBrowser.js 对于 ChildBrowser 的 Cordova.plist 中的正确条目有什么明确的答案吗?【参考方案4】:

我认为 Childbrowser 还不能与 Cordova (1.5) 一起使用。

您应该使用 phonegap 1.4.1。 这里有一些 1.4.1 的示例: https://github.com/RandyMcMillan/CDVPluginDemos

如果有人使用 Cordova,请在此处发布一些示例:

【讨论】:

【参考方案5】:

我正在使用 Ryan Stewart 使用的同一个插件,它确实有效。他确实写了一篇关于它的好文章,所以检查一下。我能够让它与插件文件夹中的自述文件一起工作,你必须做一些轻微的修改。

另外,您可能需要升级您的 Xcode 版本。对我来说,它在 4.2 上工作,现在我在 4.3.1 上。但如果你使用的是早期版本,你可能不得不采取飞跃

确保您在安装 Cordova 本身时也遵循了“Cordova 升级”文档。仔细阅读所有内容,因为这是我安装插件而不是插件本身的问题所在。

祝你好运!

【讨论】:

以上是关于Phonegap 1.5 (Cordova) ios childbrowser 根本无法打开的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap/Cordova:如何使用 cookie (iOS)?

Phonegap (Cordova) iOS 按钮单击

Phonegap (Cordova 2.9.0) iOS 上的地理定位

在 iOS 上安装 PushWoosh (PhoneGap/Cordova)

ios状态栏phonegap/cordova的黑色文本颜色

在 iOS 上调试 Cordova (PhoneGap) 代码