Crosswalk扩展在iOS中不可用
问题描述:
我想在iOS(Objective-C)中为我自己的应用程序制作Crosswalk扩展,该应用程序在Crosswalk运行时显示一个网站,但它不工作。以下是详细信息:Crosswalk扩展在iOS中不可用
- 在我的主项目的根目录创建了CocoaTouch框架项目,它是单页面应用程序。
-
下面的代码添加到我的CocoaTouch框架项目的MyXWalkExtension.h文件:
#import <UIKit/UIKit.h> #import <XWalkView/XWalkView.h> //! Project version number for MyXWalkExtension. FOUNDATION_EXPORT double MyXWalkExtensionVersionNumber; //! Project version string for MyXWalkExtension. FOUNDATION_EXPORT const unsigned char MyXWalkExtensionVersionString[]; @interface MyXWalkExtension : XWalkExtension @end @interface MyXWalkExtension() - (void) jsfunc_myFunction:(UInt32*)callId message:(NSString *)myVariable; @end @implementation MyXWalkExtension - (void) jsfunc_myFunction:(UInt32*)callId message:(NSString *)myVariable { NSLog(@"MY VARIABLE: %@", myVariable); } @end
-
新增extensions.plist(找不到更好的方式来显示的.plist内容),以CocoaTouch框架项目为如下:
<plist> <dict> <key>XWalkExtensions</key> <dict> <key>xwalk.myxwalkextension.MyXWalkExtension</key> <string>MyXWalkExtension</string> </dict> </dict> </plist>
-
新增manifest.plist到CocoaTouch框架项目:
<plist> <dict> <key>xwalk_extensions</key> <array> <key>item 0</key> <string>xwalk.myxwalkextension.MyXWalkExtension</string> </array> </dict> </plist>
-
从JavaScript调用如下:
xwalk.myxwalkextension.MyXWalkExtension.myFunction('100');
我检查是否JavaScript代码的块上面执行或不&它正在执行,但在我的Xcode记录控制台不是在获取日志。因为我认为jsfunc_myFunction
没有从javascript调用。我不知道我错过了什么或做错了什么。我正在关注crosswalk project website。我知道我们不需要在Android中扩展Crosswalk运行时,我们可以通过提供一个JavaScript接口来调用Android本地方法,但在iOS中并非如此。所以,我决定扩展Crosswalk运行时。人行横道项目网站没有太多的描述&详细。我是否忘记将扩展插入到我的项目中,如果是的话,我该怎么做?
答
[XWalkExtensionFactory register:@"xwalk.myxwalkextension.MyXWalkExtension" cls:[MyXWalkExtension class]];
//where xWalkView is XWalkView (Crosswalk's WebView).
[self.xWalkView loadExtension:[XWalkExtensionFactory createExtension:@"xwalk.myxwalkextension.MyXWalkExtension"] namespace:@"xwalk.myxwalkextension.MyXWalkExtension"];
我不得不加载我XWalkExtension &将其嵌入在ViewController.m的应用程序。