Ich verwende derzeit, IONIC v1.0.0, AngularJs und ngCordova v0.1.23-alpha auf iOS und Android.ngCordova InAppBrowser Plugin einfrieren App auf iOS aber nicht auf Android
Ich bin auf ein Problem mit meiner Login-Ansicht Einfrieren gestoßen. Es geschieht nach dem Öffnen von InAppBrowser und "Zurück zur App" (Schließen Schaltfläche Beschriftung für IOS verwendet, um wieder zu bekommen) friert meine Login-Ansicht deaktivieren die Fähigkeit auf dem ganzen Bildschirm zu berühren und mich nicht einloggen können. Es passiert nur, wenn ich InAppBrowser beim Start der App anrufe, wenn ich es während des App-Lebenszyklus benutze (nach dem Login), es tut es nicht.
Hier einige meiner Code Stücke sind
In app.js:
angular.module('MyApp', ['ionic', 'MyApp', 'ngCordova', 'mainController', 'loginController', 'pascalprecht.translate', 'ngStorage', 'ngSanitize', 'ngAnimate', 'ngTouch', 'ngCookies', 'ngLocale', 'testController'])
In mainController Ich habe Fabrik:
.factory('customMainFunction', function ($rootScope, $ionicLoading, $ionicScrollDelegate, $ionicPopup, $timeout, $localStorage, $location, $ionicHistory, $window, $cordovaInAppBrowser) { var Token = ""; return { openBrowser: function (link) { var options = { location: 'yes', clearcache: 'yes', toolbar: 'yes', closebuttoncaption: 'Back to App' }; document.addEventListener("deviceready", function() { $cordovaInAppBrowser.open(link, '_blank', options) .then(function (event) { // success }) .catch(function (event) { // error }); }, false); $rootScope.$on('$cordovaInAppBrowser:loadstart', function (e, event) { //console.log(event); var url = ""; var positionNumber; var res; url = event.url; positionNumber = url.search("ssoToken="); res = url.substr(Number(positionNumber)+9); /*positionNumber = url.search("module="); res = url.substr(Number(positionNumber)+6);*/ if(url !== "" && positionNumber >= 0 && res.length > 0) { $rootScope.$broadcast('ssoToken', { token: res }); $cordovaInAppBrowser.close(); } }); $rootScope.$on('$cordovaInAppBrowser:loadstop', function (e, event) { console.log("loadstop"); //console.log(event); // insert CSS via code/file //$cordovaInAppBrowser.insertCSS({ // code: '' //}); // insert Javascript via code/file //$cordovaInAppBrowser.executeScript({ // file: '' //}); }); $rootScope.$on('$cordovaInAppBrowser:loaderror', function (e, event) { }); $rootScope.$on('$cordovaInAppBrowser:exit', function (e, event) { }); } } })
Wenn jemand eine solche Frage hat begegnen lassen Sie es mich wissen Was kann getan werden, um es zu lösen? Jede Frage oder Klarstellungen lassen mich wissen. Danke im Voraus.
Ich habe das gleiche Problem. Ich habe den Punkt 2, den Sie oben erwähnt haben, versucht. Für Punkt 1 habe ich die Methode openInSystem in CDVInAppBrowser.m geändert, um die Zeile dispatch_async (dispatch_get_main_queue(),^{ [[UIApplication sharedApplication] openURL: url]; aber ich bekomme immer noch das Problem. Irgendwelche Ideen? }); –
Hallo, @the_best Ich bin ein wenig verwirrt, ich muss den browser.on ('loadstart') oder inAppBrowser.create() umbrechen, der das Plugin aufruft. –
browser = this.iab.create (this.url, '_blank', Optionen); let Hörer = browser.on ('loadstart') browser.on ('loadstop') browser.on ('Loaderror') browser.on ('exit') Ich verwende das folgende Ereignis auf dem Ich muss das Timeout einstellen? –