正如标题所说。将 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+ 一起使用。
有谁知道如何解决这个问题?
谢谢!