@abman wrote:
I'm experiencing a problem that i can't seem to figure out.
Whenever i run my ionic app on a real iOS device it sometimes works perfectly and sometimes freezes (after the splash screen hides). I'm suspecting that a plugin is failing to load causing the app to break.
Here are some details, hopefully there's a problem with my coding:
Cordova CLI: 6.0.0 Ionic Version: 1.2.4-nightly-1917 Ionic CLI Version: 1.7.14 Ionic App Lib Version: 0.7.0 ios-deploy version: 1.8.4 ios-sim version: 5.0.6 OS: Mac OS X El Capitan Node Version: v5.4.1 Xcode version: Xcode 7.2.1 Build version 7C1002
These are the plugins i'm currently using:
cordova-plugin-console 1.0.2 "Console" cordova-plugin-device 1.1.0 "Device" cordova-plugin-inappbrowser 1.3.0 "InAppBrowser" cordova-plugin-splashscreen 3.2.0 "Splashscreen" cordova-plugin-statusbar 2.1.1 "StatusBar" cordova-plugin-whitelist 1.2.0 "Whitelist" cordova-plugin-x-toast 2.4.0 "Toast" ionic-plugin-keyboard 1.0.8 "Keyboard" phonegap-plugin-push 1.5.3 "PushPlugin"
app.js file:
angular.module('starter', ['ionic','ionic.service.core', 'starter.controllers', 'firebase', 'tagged.directives.autogrow', 'ui.calendar', 'ngCordova']) .run(function($ionicPlatform) { $ionicPlatform.ready(function() { if (window.cordova && window.cordova.plugins.Keyboard) { cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); cordova.plugins.Keyboard.disableScroll(true); } if (window.StatusBar) { // org.apache.cordova.statusbar required StatusBar.styleDefault(); } var push = new Ionic.Push(); push.register(function(token) { console.log("Device token:",token.token); var tokenRef = new Firebase('https://myfirebaseapp.firebase.com/PushTokens'); tokenRef.on('value', function(data){ console.log(data.val()); var exists = false; data.forEach(function(child){ console.log(child.val()); if (child.val().token == token.token){ console.log('found match'); exists = true; return true; } }); if (exists === false){ console.log('nothing found, add token'); tokenRef.push({ "token": token.token }); } }); }); }); }) .config(function($stateProvider, $urlRouterProvider, $ionicConfigProvider) { if (ionic.Platform.isIOS()){ $ionicConfigProvider.scrolling.jsScrolling(true); } $ionicConfigProvider.views.swipeBackEnabled(false); $stateProvider .state('app', { url: '/app', abstract: true, templateUrl: 'templates/menu.html', controller: 'AppCtrl' }) .state('app.contacts', { url: '/contacts', views: { 'menuContent': { templateUrl: 'templates/contacts.html', controller: 'ContactsCtrl' } } }) etc etc ....... });
my index.html:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> <title></title> <link href="lib/fullcalendar/dist/fullcalendar.css" rel="stylesheet"> <!-- compiled css output --> <link href="css/ionic.app.css" rel="stylesheet"> <link href="css/style.css" rel="stylesheet"> <!-- ionic/angularjs js --> <script src="lib/ionic/js/ionic.bundle.js"></script> <script src="js/ng-cordova.min.js"></script> <script src="lib/ionic-platform-web-client/dist/ionic.io.bundle.min.js"></script> <!--<script src="js/ionic-ion-autoListDivider.js"></script>--> <!-- cordova script (this will be a 404 during development) --> <!-- Cordova is bootstrapped by ionic-platform-web-client, uncomment this if you remove ionic-platform-web-client... --> <!-- <script src="cordova.js"></script> --> <!-- your app's js --> <!-- Firebase --> <script src="js/firebase.js"></script> <!-- AngularFire --> <script src="js/angularfire.min.js"></script> <script src="js/taggedAutogrow.min.js"></script> <script src="js/md5.min.js"></script> <script src="js/app.js"></script> <script src="js/controllers.js"></script> <script type="text/javascript" src="lib/jquery/dist/jquery.min.js"></script> <script type="text/javascript" src="lib/moment/min/moment.min.js"></script> <script type="text/javascript" src="lib/fullcalendar/dist/fullcalendar.min.js"></script> <script type="text/javascript" src="lib/fullcalendar/dist/gcal.js"></script> <script type="text/javascript" src="lib/angular-ui-calendar/src/calendar.js"></script> </head> <body ng-app="starter"> <ion-nav-view></ion-nav-view> </body> </html>
This is my log output on a real iOS device when the app Freezes:
2016-02-15 20:13:15.388 My App Name[780:219212] Apache Cordova native platform version 4.0.1 is starting. 2016-02-15 20:13:15.392 My App Name[780:219212] Multi-tasking -> Device: YES, App: YES 2016-02-15 20:13:15.699 My App Name[780:219212] Using UIWebView 2016-02-15 20:13:15.705 My App Name[780:219212] [CDVTimer][handleopenurl] 0.474989ms 2016-02-15 20:13:15.712 My App Name[780:219212] [CDVTimer][intentandnavigationfilter] 6.397963ms 2016-02-15 20:13:15.713 My App Name[780:219212] [CDVTimer][gesturehandler] 0.388026ms 2016-02-15 20:13:15.756 My App Name[780:219212] [CDVTimer][splashscreen] 42.842031ms 2016-02-15 20:13:15.787 My App Name[780:219212] [CDVTimer][statusbar] 30.280054ms 2016-02-15 20:13:15.789 My App Name[780:219212] [CDVTimer][keyboard] 1.281977ms 2016-02-15 20:13:15.790 My App Name[780:219212] [CDVTimer][TotalPluginStartup] 84.995031ms 2016-02-15 20:13:15.807 My App Name[780:219212] active 2016-02-15 20:13:15.809 My App Name[780:219212] PushPlugin skip clear badge 2016-02-15 20:13:16.579 My App Name[780:219212] Resetting plugins due to page load. 2016-02-15 20:13:18.245 My App Name[780:219212] Finished load of: file:///var/mobile/Containers/Bundle/Application/1C64E20A-49FF-456D-BED0-969E234A8A54/My%20App%20Name.app/www/index.html#/app/notes
And here is a log output when the app Works! Please note this is the same build, i just hard closed and launched the app again:
2016-02-15 20:22:38.610 My App Name[785:220502] Apache Cordova native platform version 4.0.1 is starting. 2016-02-15 20:22:38.615 My App Name[785:220502] Multi-tasking -> Device: YES, App: YES 2016-02-15 20:22:38.965 My App Name[785:220502] Using UIWebView 2016-02-15 20:22:38.972 My App Name[785:220502] [CDVTimer][handleopenurl] 0.477016ms 2016-02-15 20:22:38.979 My App Name[785:220502] [CDVTimer][intentandnavigationfilter] 6.392002ms 2016-02-15 20:22:38.980 My App Name[785:220502] [CDVTimer][gesturehandler] 0.386953ms 2016-02-15 20:22:39.020 My App Name[785:220502] [CDVTimer][splashscreen] 39.930999ms 2016-02-15 20:22:39.050 My App Name[785:220502] [CDVTimer][statusbar] 29.722035ms 2016-02-15 20:22:39.052 My App Name[785:220502] [CDVTimer][keyboard] 1.286030ms 2016-02-15 20:22:39.053 My App Name[785:220502] [CDVTimer][TotalPluginStartup] 81.809998ms 2016-02-15 20:22:39.071 My App Name[785:220502] active 2016-02-15 20:22:39.073 My App Name[785:220502] PushPlugin skip clear badge 2016-02-15 20:22:39.848 My App Name[785:220502] Resetting plugins due to page load. 2016-02-15 20:22:43.562 My App Name[785:220502] Finished load of: file:///var/mobile/Containers/Bundle/Application/54A4B53F-F144-4CD3-BC76-A738BC266D93/My%20App%20Name.app/www/index.html#/app/notes 2016-02-15 20:22:43.970 My App Name[785:220502] Ionic Core: plugins are ready 2016-02-15 20:22:43.988 My App Name[785:220502] THREAD WARNING: ['StatusBar'] took '16.850830' ms. Plugin should use a background thread. 2016-02-15 20:22:43.991 My App Name[785:220502] Ionic Push: register 2016-02-15 20:22:44.008 My App Name[785:220566] Push Plugin register called 2016-02-15 20:22:44.009 My App Name[785:220566] PushPlugin.register: setting badge to false 2016-02-15 20:22:44.009 My App Name[785:220566] PushPlugin.register: clear badge is set to 0 2016-02-15 20:22:44.009 My App Name[785:220566] PushPlugin.register: better button setup 2016-02-15 20:22:44.017 My App Name[785:220566] GCM Sender ID (null) 2016-02-15 20:22:44.017 My App Name[785:220566] Using APNS Notification 2016-02-15 20:22:44.058 My App Name[785:220502] Push Plugin register success: <A valid token number removed for forum viewing> 2016-02-15 20:22:44.336 My App Name[785:220502] Device token: A valid token number removed for forum viewing 2016-02-15 20:22:44.550 My App Name[785:220502] Firebase is connected
Thank you.
Posts: 3
Participants: 2