2015-10-05 78 views
1

試圖通過外部服務驗證我的離子應用程序上的用戶,我需要使用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

我已經安裝了插件,所以我不知道它是如何丟失的插件。有沒有人有這方面的補救措施?謝謝!

回答

0
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'; 

      } 
     } 
           ); 
+0

不幸工作。還是)感謝你的建議! – MattA

+0

@MattA你能找到解決這個問題的方法。我面對同樣的情況 –

相關問題