0

考えられる解決策の 1 つは、カスタム URL を使用することです。

次のチュートリアルに従い、IOS での 2 つの AIR アプリケーションの通信についてさらに調べます。- 最初のアプリは、最初の手順で説明したように、カスタム URI "fbMY_APP_ID" を使用します。これは、Safari によって呼び出されても問題ありません。- 2 番目のアプリは、URLRequest とカスタム URI を使用して、最初のアプリと通信します。

「SecurityError: エラー #2193: セキュリティ サンドボックス違反: navigateToURL: app:/secondApp.swf は tfbMY_APP_ID://test にアクセスできません」というエラーが表示されます。

  1. このアプローチで何か不足していますか? 問題を解決する方法はありますか?
  2. カスタム URL を使用する以外に方法はありますか?
4

2 に答える 2

1

このように、アプリケーション マニフェスト ファイルからカスタム プロトコルを追加できます (複数のプロトコルを追加できます)。

<iPhone>
...
    <InfoAdditions>
        <![CDATA[
            ...
            <key>CFBundleURLSchemes</key>
            <array>
                <string>thisIsSomeCustomAppProtocol</string>
            </array>
            ...
            ]]>
    </InfoAdditions>
    ...
</iPhone>

そして、次のようにカスタム プロトコルを呼び出します。

<a href="thisIsSomeCustomAppProtocol://SomeCustomDataString_goes_here&use_url_encoded_strings:">This will call the App with some parameters included (if need be)</a>

または、次のように navigateToURL(...) を使用します。

var _customURL_str:String       = "thisIsSomeCustomAppProtocol://SomeCustomDataString_goes_here&use_url_encoded_strings";
var _isProtocolAvailable:Boolean= URLUtils.instance.canOpenUrl(_customURL_str);
//
if(_isProtocolAvailable)
{
    navigateToURL(new URLRequest(_customURL_str));
}

呼び出しをリッスンし、渡されたデータを実際に処理するには、次のようにします。

NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE,_invokeHandler);

イベント ハンドラーは、次のようにデータを処理します。

private function onInvoke(e:InvokeEvent):void
{
    //...
    var _queryString:String = e.arguments[0] ? e.arguments[0] : "";
    //
    if(_queryString.length > 0){
        //handle the incomming data string
    }else{
        //no extra data string was sent
    }
    //...
}

それが役立つことを願っています

乾杯:

-ニック

于 2014-09-30T08:35:55.700 に答える
1

Adobe AIR によって課されたセキュリティ サンドボックスによると、navigateURL は http:、https:、sms:、tel:、mailto:、file:、app:、app-storage:、vipaccess:、connectpro: などのよく知られたプロトコルに制限されています。 . 詳細については、こちらこちらをご覧ください。

回避策の 1 つは、ページが呼び出しを中継する中間として html ページを利用することです。

于 2012-07-09T16:03:13.753 に答える