我正在尝试在 iOS (Objective-C) 中为我自己的应用程序制作 Crosswalk 扩展程序,该应用程序在 Crosswalk 运行时显示一个网站,但它不工作。以下是详细信息:
- 在我的单页应用程序的主项目的根目录下创建了 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
在 CocoaTouch 框架项目中添加了 extensions.plist(找不到更好的显示 .plist 内容的方法),如下所示:
<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调用。我不知道我错过了什么或做错了什么。我正在关注人行横道项目网站。我知道在 Android 中我们不需要扩展 Crosswalk 运行时,我们可以通过提供 javascript 接口从 javascript 调用 Android 本机方法,但在 iOS 中并非如此。所以,我决定扩展 Crosswalk 运行时。人行横道项目网站没有太多描述性和详细信息。我是否忘记在我的项目中嵌入扩展程序,如果是,我该怎么做?