人行横道扩展在 iOS 中不起作用
Crosswalk extension not working in iOS
我正在尝试在 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 调用。我不知道我错过了什么或做错了什么。我正在关注 crosswalk project website。我知道在 Android 的情况下我们不需要扩展 Crosswalk 运行时,我们可以通过提供 javascript 接口从 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 中的应用程序中。
我正在尝试在 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 调用。我不知道我错过了什么或做错了什么。我正在关注 crosswalk project website。我知道在 Android 的情况下我们不需要扩展 Crosswalk 运行时,我们可以通过提供 javascript 接口从 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 中的应用程序中。