我正在尝试在iOS(Objective-C)中为我自己的应用程序进行Crosswalk扩展,该应用程序在Crosswalk运行时显示一个网站,但它无法正常工作。以下是详细信息:
将以下代码添加到我的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代码块是否正在执行&amp;它正在执行,但我没有登录我的xcode日志记录控制台。因为我认为jsfunc_myFunction
没有从javascript调用。我不知道自己错过了什么或做错了什么。我关注crosswalk project website。我知道我们不需要在Android的情况下扩展Crosswalk运行时,我们可以通过提供javascript界面从javascript调用Android本机方法,但在iOS中并非如此。所以,我决定扩展Crosswalk运行时。人行横道项目网站没有太多的描述性和详细。我忘记将扩展嵌入到我的项目中,如果是,我该怎么做?
答案 0 :(得分:0)
[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&amp;将它嵌入ViewController.m中的应用程序。