Crosswalk扩展程序在iOS中无效

时间:2016-03-01 09:34:38

标签: ios objective-c crosswalk-runtime crosswalk

我正在尝试在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. 添加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');
    
  6. 我检查了上面的javascript代码块是否正在执行&amp;它正在执行,但我没有登录我的xcode日志记录控制台。因为我认为jsfunc_myFunction没有从javascript调用。我不知道自己错过了什么或做错了什么。我关注crosswalk project website。我知道我们不需要在Android的情况下扩展Crosswalk运行时,我们可以通过提供javascript界面​​从javascript调用Android本机方法,但在iOS中并非如此。所以,我决定扩展Crosswalk运行时。人行横道项目网站没有太多的描述性和详细。我忘记将扩展嵌入到我的项目中,如果是,我该怎么做?

1 个答案:

答案 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中的应用程序。