Cordova In App Browser 事件未触发 IOS
Posted
技术标签:
【中文标题】Cordova In App Browser 事件未触发 IOS【英文标题】:Cordova In App Browser event not firing IOS 【发布时间】:2015-10-05 18:54:12 【问题描述】:尝试通过外部服务对我的 ionic 应用程序上的用户进行身份验证,我需要在应用程序浏览器中使用 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 世界中,loadstop 事件会触发 3 次,“loadstop”事件会触发第三次,正则表达式将返回 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
我已经安装了插件,所以我不知道它是如何丢失插件的。有没有人对此有补救措施?谢谢!
【问题讨论】:
【参考方案1】: 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';
);
【讨论】:
不幸的是没有工作。不过感谢您的建议! @MattA 你能找到解决这个问题的方法吗?我也面临同样的情况【参考方案2】:问题是我的 iOS 平台不是最新的。
因此,当您使用 cordova 开发应用程序时,请确保您的平台版本和插件在操作系统升级后是最新的。
所以我要做的就是
移除 iOS 平台。
cordova 平台 rm ios
添加 iOS 平台 - 最新版本
cordova平台添加ios
删除插件 cordova-plugin-inappbrowser
cordova 插件删除 cordova-plugin-inappbrowser
添加插件cordova-plugin-inappbrowser - 最新版本
cordova 插件添加cordova-plugin-inappbrowser
【讨论】:
以上是关于Cordova In App Browser 事件未触发 IOS的主要内容,如果未能解决你的问题,请参考以下文章
Firebase SSO Auth 在 Facebook In App Browser 中不起作用
[Ionic2] Device Interaction in an Ionic App with Cordova Plugins
解决 Cordova 打包 vue项目为 APP 后,在安卓平台下 touchMove 事件不生效的问题
IOS : Cordova App Crash on Google Map api zoom in ios 11.3 iphone x