0

Ich habe eine Sencha Touch-App, die ohne Probleme funktionierte, bis das Windows 10 Anniversary Update gestartet wird. Mit dem neuen SDK wird das Ereignis onDeviceReady meiner App nach dem Erstellen der Speicherpakete nicht ausgelöst. Aber es funktioniert einwandfrei im Debug-Modus.OnDeviceReady nicht in Cordova Windows 10 App nur im Freigabemodus

Ich glaube, das hat etwas mit der .NET Native Tool Chain zu tun. Aber ich bin immer noch nach 3 Tagen der Fehlersuche und viel und viel Googeln verloren. Folgendes habe ich bereits ausprobiert:

  • Re-generierte Sencha Touch App mit der neuesten Sencha CMD Version.
  • Entfernt und fügte die neuesten Versionen von Cordova, Plattformen und Plugins von Grund auf neu hinzu.
  • Die Datei index.html wurde so minimal wie möglich gehalten, um zu sehen, ob es etwas mit dem Code in dieser Datei zu tun hat.

Unten ist die Liste der Plugins, die ich installiert habe.

com.phonegap.plugins.PushPlugin 2.5.0 "PushPlugin" 
com.verso.cordova.clipboard 0.1.0 "Clipboard" 
cordova-plugin-camera 2.3.0 "Camera" 
cordova-plugin-compat 1.1.0 "Compat" 
cordova-plugin-contacts 2.2.0 "Contacts" 
cordova-plugin-device 1.1.3 "Device" 
cordova-plugin-device-orientation 1.0.4 "Device Orientation" 
cordova-plugin-file 4.3.0 "File" 
cordova-plugin-geolocation 2.4.0 "Geolocation" 
cordova-plugin-inappbrowser 1.5.0 "InAppBrowser" 
cordova-plugin-media 2.4.0 "Media" 
cordova-plugin-network-information 1.3.0 "Network Information" 
cordova-plugin-screen-orientation 1.4.2 "Screen Orientation" 
cordova-plugin-statusbar 2.2.0 "StatusBar" 
cordova-plugin-whitelist 1.3.0 "Whitelist" 
cordova-sms-plugin 0.1.11 "Cordova SMS Plugin" 
cordova.plugins.navbar 1.0.0 "NavBar" 
phonegap-plugin-push 1.9.0 "PushPlugin" 

Ich hatte Zweifel, ob das Body Onload Event nicht ausgelöst wird. Daher habe ich onLoad() Funktion innerhalb des Skript-Tags in HTML-Body auch aufgerufen. Kein Glück.

index.html Körper

<body onload="onLoad()"> 
    <div id="appLoadingIndicator"></div> 
    <script type="text/javascript"> 
     onLoad(); 
     var apploading = document.getElementById('appLoadingIndicator'); 
     apploading.style.lineHeight = document.body.clientHeight + 'px'; 
     var img = document.createElement('img'); 
     img.setAttribute('src', resourceURL + '/loading/logo-splash.png'); 
     apploading.appendChild(img); 
    </script> 
</body> 

Beiladen Funktionsdefinition

function onLoad() { 
    console.log('xxxxxx addEventListener onDeviceReady'); 
    document.addEventListener("deviceready", onDeviceReady, false); 
    document.addEventListener("resume", onDeviceResume, false); 
} 

Hat über irgendwelche ähnliche Probleme jemand kommen? Jeder Hinweis darauf wird sehr hilfreich sein.

+0

Könnten Sie es bitte mit einem leeren Cordova oder Sencha Touch App versuchen? –

+0

Eine leere App funktioniert ohne Probleme. Dies ist eine ziemlich große App, die bereits seit 2+ Jahren in den Läden ist. Wie auch immer, ich habe es gelöst. Ich werde es als Antwort hier posten. – vahissan

Antwort

0

Ich habe festgestellt, dass die onDeviceReady tatsächlich feuern, aber erst nach 5+ Sekunden. Die Sencha Touch-App wurde geladen, bevor onDeviceReady ausgelöst wurde und die App während des Starts auf das Objekt device zugreift. Dies war undefined. Dies führte zum Absturz der App. Daher hat das Auslösen des App-Starts innerhalb des onDeviceReady-Handlers den Zweck erfüllt.

onDeviceReady() in der Datei index.html

function onDeviceReady() { 
    if (Ext.os.is.Phone) { 
     myApp.app.launchPhone(); 
    } else { 
     myApp.app.launchTablet(); 
    } 
    ... 
} 

Start() in app.js

launch: function() { 
    // left empty intentionally 
} 
Verwandte Themen