Sure, here is the thing... In able to communicate - StageWebViewBridge use custom scheme as url calls in browser (UIWebView - up to AIR 25). If you open the StageWebViewBridge.js and StageWebViewDisk.as files you'll find: var sendingProtocol = checker.iphone ? 'about:' : 'tuoba:'; (~ line 58 in JS file) public static const SENDING_PROTOCOL : String = isIPHONE ? "about:" : "tuoba:"; (~ line 24 - in AS3 file) So, when you want to call function from JS to AS3 - you create "callback" method which means that you send some data from JS to AS3 (like method name, and string data - all packed in one JSON) - and this call in iOS browser (address bar) looks like: about:QwifnserWFInFROIHRa3340== -> (some Base64 string converted from JSON object) Now, from AIR 26 and above with new iOS framework packed (iOS 10) we cannot use UIWebView for browser engine in our apps, so custom URI Schemes are not supported anymore, but we can use new WKWebView that Apple provide for (mostly) hybrid applications - which use 90% web views inside the apps. In many cases WKWebView is better then UIWebView since as developer - you need more control on what is inside the web part - using handlers. But, unfortunately for us (using AIR 26 to AIR 29) we don't have all these handlers (such as handler for custom URI scheme like in our case) available inside the AIR SDK, and we still have the ONLY handler LocationChange. Unsuccessful try: - If you change ('about:' : 'tuoba:') to ("custom-scheme:" : "custom-scheme:") - you'll get browser to work - but without any communication from JS to AS3 (AS3 to JS will work) Fix: I manage to exclude StageWebViewBridge from my project totally (just switch all the views on StageWebView instead), and now I go through all the HTML pages that I generate on creation complete, and add extra JavaScript call like: function doSomethingInAS3(data){ var base64 = btoa('{"method":"doSomethingInAS3", "data":"'+ data +'"}'); // convert JSON to Base64 window.location.href = "?"+ base64; } And in AS3 I parse the href like: protected function locationChangingHandler(event:flash.events.Event):void{ var obj:Object; var loc:String = (event as LocationChangeEvent).location; var arr:Array = loc.split("?"); if(arr.length > 1){ obj = com.adobe.serialization.json.JSON.decode(Base64.decode(String(arr[1])).toString()); } ....... // now in "obj" you have 2 parameters: obj.method, and obj.data from JS json } If you want to call function from AS3 to JS - you can avoid Base64 conversion in most cases like: webView.loadURL("javascript:doSomethingInJavaScript(false, 57, 'my string')"); In other words communication now works without custom URI scheme but with direct call "javascript" on browser. Note: Be aware that when testing on Windows (desktop) you'll want to call: webView.loadURL("javascript:void(0)"); after each "locationChangingHandler" event... just to reset the browser, and make available next JS to AS3 call. I think you got the idea Cheers!
... View more