0

我正在尝试在 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调用。我不知道我错过了什么或做错了什么。我正在关注人行横道项目网站。我知道在 Android 中我们不需要扩展 Crosswalk 运行时,我们可以通过提供 javascript 接口从 javascript 调用 Android 本机方法,但在 iOS 中并非如此。所以,我决定扩展 Crosswalk 运行时。人行横道项目网站没有太多描述性和详细信息。我是否忘记在我的项目中嵌入扩展程序,如果是,我该怎么做?

4

1 回答 1

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 并将其嵌入到 ViewController.m 中的应用程序中。

于 2016-03-28T13:05:55.897 回答