一种可能的解决方案是使用自定义网址:
我按照following tutorial进行操作,然后进一步探索IOS中两个AIR应用程序的通信。 - 第一个应用程序使用自定义URI“fbMY_APP_ID”,如第一步所述,可以通过Safari调用。 - 第二个应用程序使用带有自定义URI的URLRequest与第一个应用程序进行通信。
我收到错误:“SecurityError:错误#2193:安全沙箱违规:navigateToURL:app:/secondApp.swf无法访问tfbMY_APP_ID:// test”。
答案 0 :(得分:1)
根据Adobe AIR强加的安全沙箱,navigateURL仅限于众所周知的协议,例如http:,https:,sms:,tel:,mailto:,file:,app:,app-storage:,vipaccess:和connectpro:。您可以通过here和here找到更多信息。
解决办法的一种方法是利用html页面作为中间页面,页面将转发呼叫。
答案 1 :(得分: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
}
//...
}
希望有所帮助
干杯:
-Nick