[英]Cordova In App Browser event not firing IOS
嘗試通過外部服務在我的離子應用程序上對用戶進行身份驗證,我需要在應用程序瀏覽器中使用cordovas! 該代碼可在android上完美運行,但是在iOS上,“ loadstop”事件不會觸發,因此,瀏覽器也不會將自身重定向回應用程序。 我的代碼如下所示:
$rootScope.$on('$cordovaInAppBrowser:loadstop', function (e, event) {
console.log('inappbrowser loaded', event);
var regex = /* regex to determine if url is correct redirected url */
var res = regex.test(event.url);
alert('loaded: ' + event.url);
alert('regex result: ' + res);
if(res === true) {
$cordovaInAppBrowser.close();
}
});
if(okta) {
if (typeof window.localStorage.msRefreshToken === 'undefined') {
document.addEventListener('deviceready', function () {
$cordovaInAppBrowser.open('urlforExternalservicehere', '_blank', options);
}, false);
} else {
TokenStore.refreshAccessToken();
}
}
運行代碼時,屏幕上不顯示警報。 同樣,一旦應用程序到達了外部服務並輸入了用戶名,便會將其重定向到另一個URL,然后該用戶將使用另一組憑據進行身份驗證。 依次返回一個令牌,供應用程序驗證其使用。
因此,在一個完美的iOS世界中,它與當前的Android體驗相匹配,將觸發loadstop事件3次,並第三次觸發“ loadstop”事件,而regex將返回true並關閉應用程序內瀏覽器。
如果我需要提供更多代碼來幫助解決此問題,請告訴我!
科爾多瓦版本:4.2.0
離子性:1.4.5
iOS:8和9
使用NgCordova實現Cordova功能
更新:在模擬器上運行應用程序並檢查控制台日志時,我發現此錯誤:
錯誤:模塊cordova-plugin-inappbrowser.inappbrowser不存在。, http ://10.117.1.46:8100/cordova.js,行:1402
我已經安裝了插件,所以我不知道它怎么缺少插件。 有人對此有補救辦法嗎? 謝謝!
iabRef = window.open('http://XYZ.php', '_blank', 'location=no,toolbar=no');
iabRef.addEventListener('loadstart', iabLoadStart);
iabRef.addEventListener('loadstop', iabLoadStop);
iabRef.removeEventListener('loaderror', iabLoadError);
iabRef.addEventListener('exit', iabClose);
iabRef.addEventListener('loadstart', function(event) {
if (event.url.match("mobile/close")) {
iabRef.close();
window.location = 'index.html';
}
}
);
問題是我的iOS平台不是最新的。
因此,當您使用cordova開發應用程序時,請確保您的平台版本和插件是最新的且已升級操作系統。
所以我要做的就是
刪除iOS平台。
科爾多瓦平台rm ios
添加iOS平台-最新版本
科爾多瓦平台添加ios
刪除插件cordova-plugin-inappbrowser
cordova插件刪除cordova-plugin-inappbrowser
添加插件cordova-plugin-inappbrowser-最新版本
cordova插件添加cordova-plugin-inappbrowser
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.