2

私は現在、iOS と Android の両方で Web ビューを積極的に使用してコンテンツをレンダリングし、それをネイティブ クロームで囲む​​アプリに取り組んでいます。JavaScriptメソッドを介してこのクロムを制御できるようにしたいと考えています。

Android Webview にはこれを可能にするaddJavascriptInterfaceがありますが、iOS にはこの機能がありません。私はすでにiOS JavaScript bridgeで SO の回答をチェックアウトしました。これには有用な情報がありますが、iOS のみです。最適には、同じ基本 Web コードが Andorid と iOS デバイスの両方でコールバックを強化できます。

PhoneGap や Appcelerator のようなものがこれを簡単に行う方法を提供するかどうか疑問に思っています。ただし、コア製品(基礎となるhtml / css / jsを介してネイティブエクスペリエンスを提供する)は必要ありません。必要なものがパッケージに含まれているかどうかさえわかりません。

情報をありがとう!

4

3 に答える 3

1

最善の方法は、次の2つの例を組み合わせて、自分で行うことです。

function nativeDoStuff() {
  if (androidbridge != null {
    androidbridge.doStuff();
  }
  else {
    //construct url
    window.location = "myiphonescheme://dostuff";
  }

考えてみると、野心的な場合は、簡単なjavascriptオブジェクトをコーディングしてそれを実行できます。

function NativeAppBridge () {
  function runMethod(methodName, params) {
    if (androidbridge != null {
      // If the android bridge and the method you're trying to call exists,
      // we'll just call the method directly:
      if (androidbridge[methodName] != null) {
        androidbridge[methodName].apply(this, params);
      }
    }
    else {
      // building the url is more complicated; best I can think
      // of is something like this:
      var url = "myiphonescheme://" + methodName;
      if (params.length > 0) {
        url += "?"
        var i = 0;
        for (param in params) {
          url += "param" + i + "=" + param;
          ++i;
          if (i < params.length) {
            url += "&";
          } 
        }
      }
    }
  }
}

その場合、それを使用するのは次のように簡単です。

var bridge = new NativeAppBridge();

function onClick() {
  bridge.runMethod("doStuff", null);
}

これを頭のてっぺんからコーディングしたので、現時点ではテストする時間がないことに注意してください。ただし、大きな間違いをしなければ、十分に機能するはずです。

于 2012-10-29T21:41:36.233 に答える
0

phonegap プラグインを使用してそれを行うことができます。それらは、WebView とネイティブ レイヤーの間で通信するための優れた方法を提供します。

ここでは、作成方法を確認できます。

この件に関する私の個人的な意見: 私はしばらく phonegap を使用してきました。Web ビューを使用している場合は、やり方を再考し、モバイル Web プラットフォームに移行することを強くお勧めします。おそらく多くの時間を節約できます。

私の見方では、これを使用する上での大きな欠点は、モバイル アプリではなく Web ページを作成していることです。ネイティブ コンポーネントを使用できず、アプリの応答性が低下します。既に WebView を使用しているため、これらのプラットフォームでのみメリットが得られると思います。

于 2012-10-29T20:20:09.757 に答える