人行横道扩展在 iOS 中不起作用

Crosswalk extension not working in iOS

我正在尝试在 iOS (Objective-C) 中为我自己的应用程序制作 Crosswalk 扩展,该应用程序在 Crosswalk 运行时显示网站,但无法正常工作。详情如下:

  1. 在我的单页应用程序主项目的根目录下创建了 CocoaTouch 框架项目。
  2. 将以下代码添加到我的 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
    
  3. 向 CocoaTouch 框架项目添加 extensions.plist(无法找到显示 .plist 内容的更好方法)如下:

    <plist>
    
    <dict>
    
        <key>XWalkExtensions</key>
    
        <dict>
    
            <key>xwalk.myxwalkextension.MyXWalkExtension</key>
    
            <string>MyXWalkExtension</string>
    
        </dict>
    
    </dict>
    
    </plist>
    
  4. 已将 manifest.plist 添加到 CocoaTouch 框架项目:

    <plist>
    
    <dict>
    
        <key>xwalk_extensions</key>
    
        <array>
    
            <key>item 0</key>
    
            <string>xwalk.myxwalkextension.MyXWalkExtension</string>
    
        </array>
    
    </dict>
    
    </plist>
    
  5. 从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 中的应用程序中。