2015-10-05 2 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 и закроет в приложении broswer.

Если мне нужно предоставить больше кода, чтобы помочь решить эту проблему, пожалуйста, дайте мне знать!

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 Вы могли найти решение этой проблемы. Я столкнулся с тем же –

Смежные вопросы