Crosswalk扩展在iOS中不可用

问题描述:

我想在iOS(Objective-C)中为我自己的应用程序制作Crosswalk扩展,该应用程序在Crosswalk运行时显示一个网站,但它不工作。以下是详细信息:Crosswalk扩展在iOS中不可用

  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. 新增extensions.plist(找不到更好的方式来显示的.plist内容),以CocoaTouch框架项目为如下:

    <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接口来调用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的应用程序。