0

Crosswalk ランタイムで Web サイトを表示する自分のアプリ用に、iOS (Objective-C) で 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. CocoaTouch フレームワーク プロジェクトに manifest.plist を追加しました。

    <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 プロジェクトのウェブサイトをフォローしています。Android の場合、javascript インターフェイスを提供することで javascript から Android ネイティブ メソッドを呼び出すことができる場合、Crosswalk ランタイムを拡張する必要がないことはわかっていますが、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 に答える