2

正如标题所说。将 CocoonJS iOS WebView+ 插件添加到我的 Cordova PhoneGap 项目会阻止它加载和运行插件。

我也尝试了一个空项目,但它也没有工作。

这是我添加 CocoonJS 插件的方法:

cocoonjs plugin add com.ludei.ios.webview.plus

我尝试使用以下插件:

com.google.cordova.admob 1.1.1 "AdMob Plugin Pro"
com.ludei.ios.webview.plus 1.0.4 "Webview+"
com.rjfun.cordova.plugin.lowlatencyaudio 1.1.4 "LowLatencyAudio"
nl.x-services.plugins.socialsharing 4.3.7 "SocialSharing"
org.apache.cordova.camera 0.3.2 "Camera"

他们都没有工作。

对于 SocialSharing,初始化函数被调用。但是没有调用其他插件函数。

对于其余的插件,甚至不调用初始化函数。

在将项目与 WebView+ 进行比较后,似乎它调用插件初始化的位置在 CordovaLib.xcodeproj/Classes/Cleaver/CDViewController.m 中,在第 669 行,它尝试通过检查 url 方案是否是对于 PhoneGap 应用程序:

(

BOOL)webView:(UIWebView)theWebView shouldStartLoadWithRequest:(NSURLRequest)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL* url = [request URL];

    /* Execute any commands queued with cordova.exec() on the JS side.
    The part of the URL after gap:// is irrelevant. */ 
    if ([[url scheme] isEqualToString:@"gap"]) 
    { 
        [commandQueue fetchCommandsFromJs]; // The delegate is called asynchronously in this case, so we don't have to use // flushCommandQueueWithDelayedJs (setTimeout(0)) as we do with hash changes. 
        [commandQueue executePending]; 
        return NO; 
    }
...
}

在我没有 CocoonJS 的 PhoenGap 项目中,theWebView shouldStartLoadWithRequest被调用了 3 次。最后一次与@"gap://ready"

然后它输入那部分代码并加载所有插件。

使用 CocoonJS,theWebView shouldStartLoadWithRequest只会被调用一次,并且永远不会使用@"gap://ready". 所以没有一个插件被初始化。

在 CocoonJS 站点上,它们似乎表明您可以将 PhoneGap 插件与 WebView+ 一起使用。

有谁知道如何解决这个问题?

谢谢!

4

1 回答 1

0

这是官方的回答:他们不支持 phonegap 插件。

你好,

很抱歉回复晚了,还有坏消息。我们还不兼容 PhoneGap 插件。另外,我不知道我们是否会在不久的将来。

问候。

http://support.ludei.com/hc/communities/public/questions/201575145-iOS-PhoneGap-Plugins-not-loading-after-adding-CocoonJs-plugin

于 2014-12-29T19:27:48.173 回答