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 中不起作用

cordova插件:inappbrowser

[Ionic2] Device Interaction in an Ionic App with Cordova Plugins

解决 Cordova 打包 vue项目为 APP 后,在安卓平台下 touchMove 事件不生效的问题

(浏览器选项卡)Browser Tab

IOS : Cordova App Crash on Google Map api zoom in ios 11.3 iphone x