试图通过外部服务验证我的离子应用程序上的用户,我需要使用cordovas在应用程序浏览器!该代码在Android上完美工作,但是在iOS上,“loadstop”事件永远不会触发,因此浏览器不会将其自身重定向回应用程序。代码我看起来像这样:科尔多瓦在应用程序浏览器事件不发射IOS
$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事件触发三次,第三次“loadstop”事件触发,正则表达式返回true并关闭应用程序中的大括号。
如果我需要提供更多的代码来帮助解决这个问题,请让我知道!
Cordova Version: 4.2.0
Ionic: 1.4.5
iOS: 8 and 9
Using NgCordova for Cordova functionality
UPDATE:运行在模拟器上的应用程序和检查控制台日志的时候,我发现这个错误:
Error: Module cordova-plugin-inappbrowser.inappbrowser does not exist., http://10.117.1.46:8100/cordova.js , Line: 1402
我已经安装了插件,所以我不知道它是如何丢失的插件。有没有人有这方面的补救措施?谢谢!
不幸工作。还是)感谢你的建议! – MattA
@MattA你能找到解决这个问题的方法。我面对同样的情况 –