2017-02-20 3 views
16

Meine React Native App funktioniert im XCode-Simulator ohne Probleme, aber wenn ich in einem physischen Gerät, mein iPhone, läuft, gibt es ein Problem. Die App wird gestartet und bleibt auf dem Begrüßungsbildschirm von React Native hängen, und die App stürzt nach 10-15 Sekunden ab bzw. wird geschlossen. Was ist die Ursache dafür und wie kann ich es verhindern?Reagieren native App auf Splash-Screen auf dem Gerät fest, funktioniert aber im Simulator

+0

Ich habe eine ähnliche. Meine App funktioniert sowohl auf dem Simulator als auch auf Geräten des iPhone 5S und höher. Nach dem Login schließt sich die App jedoch auf iPhone 5 und 4S. – milkersarac

+0

Ich bin mit genau dem gleichen Problem konfrontiert, meine App funktioniert im iOS-Simulator einwandfrei, funktioniert aber nach dem ersten Laden nicht auf meinem Gerät. –

+0

Ich stehe vor einem ähnlichen Problem. Konnte jemand das lösen? – Nikant

Antwort

8

Es scheint, dass ich das Problem gefunden habe. Gemäß http://facebook.github.io/react-native/releases/0.45/docs/running-on-device.html#running-your-app-on-ios-devices lädt Ihre App bei der Erstellung und Ausführung der App auf Ihrem Gerät js-Dateien vom Packager auf Ihrem Computer, damit Sie Ihre App neu laden können. Das bedeutet, dass Ihr Gerät mit Ihrem Computer verbunden sein muss oder sich im selben WLAN-Netzwerk wie Ihr Computer befinden muss. Wenn Ihr Gerät nicht auf den Packer zugreifen kann, bleibt es auf dem Begrüßungsbildschirm hängen und wird beendet.

Um zuverlässig auf Ihrem Gerät zu laufen, bearbeiten Sie das Build-Schema und erstellen Sie die Release-Version.

+3

Wir sahen das gleiche, App würde Time Out (oder Anzeige "no bundle URL vorhanden" nach einer Weile), wenn Telefon nicht auf Wifi. Nach Produkt -> Schema -> Schema bearbeiten und den Schritt Ausführen auf Freigeben setzen. –

+0

Ja, das ist das genaue Problem, danke! – Li357

+0

Das war es auch für mich. Vielen Dank. – xenetics

1

Sie müssen wahrscheinlich die App unterschreiben.

Klicken Sie im Projektnavigator auf Ihre App. Wählen Sie dann Ihr Ziel aus der Projekt- und Zielliste. Suchen Sie auf der Registerkarte "Allgemein" nach dem Abschnitt "Signieren". Sie müssen hier ein Team angeben.

Siehe diesen Link für weitere Informationen: https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/LaunchingYourApponDevices/LaunchingYourApponDevices.html#//apple_ref/doc/uid/TP40012582-CH27-SW4

1

ich mein iPhone aus dem Internet versucht zu trennen, ist das Problem in späteren Starts verschwunden.

So etwas versucht, Netzwerk-Zeug zu tun und die Verzögerung zu verursachen. Es ist eine schnelle Lösung, wird aber tun, bis wir den spezifischen Schuldigen finden.

0

Es ist schon eine Weile her, dass ich das gepostet habe, aber die Lösung ist, die Ordner node_modules zu löschen und npm install auszuführen, um einen sauberen zu erhalten.

1

Es sollte durchaus möglich sein, die App im Debug zu starten, auf dem Gerät, ohne den Packager angeschlossen! Sie müssen react-native bundle verwenden, um ein Offline-Paket zu erstellen und es Ihrem Xcode-Projekt hinzuzufügen. Dann sollte Ihre App auf dieses Paket zurückgreifen, wenn der Paketanbieter nicht verfügbar ist.

Dies war früher in der Dokumentation zum Bereitstellen von Geräte-FBs, nicht sicher, warum es nicht mehr da ist.

Beispielaufruf (unsere index.ios.js in ./dist von Typoskript gesetzt wird):

react-native bundle --dev true --assets-dest ./ios --entry-file ./dist/index.ios.js --platform ios --bundle-output ios/main.jsbundle 

Außerdem ist es offensichtlich notwendig, um Ihre App zu sagen, direkt aus dem Bündel zu laufen, anstatt zu versuchen, die Entwicklung Server zuzugreifen, das scheint um die Zeitüberschreitung zu verursachen (wir hatten das gleiche Problem wie OP).

Kommentar aus dieser Zeile:

jsCodeLocation = // whatever 

Und fügen Sie diese Zeile:

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 
0

stand ich dieses Problem, wo ich war reagieren-native-Splash-Screen. Nach dem Entfernen funktioniert es

+0

Nein, wo steht, dass wir dieses Paket benutzen? –

+0

Ich stimme zu. Aber nicht sicher, warum dies nach dem Entfernen des Pakets funktioniert. Ich fügte das als Antwort hinzu, weil dadurch mein Problem gelöst wurde. – Sujit

0

Ich hatte das gleiche Problem.
Was ich tat, war in Xcode gehen Sie zu Produkte -> Schema -> Schema bearbeiten -> Wählen Sie die Registerkarte Ausführen -> Ändern Sie die Build-Konfiguration zu Release (Standard war es Debug-Modus) und führen Sie die App im Gerät.

Es war viel schneller und führen Sie es wie eine native App.

0

Für mich, wenn ich baue, es war gut im Simulator aber in der eigentlichen Gerät nur Splash-Bildschirm kam und nichts anderes.

Das war, weil meine Build-Konfiguration war Debug-Modus, der Standard ist ich denke, ich musste Release/Build-Konfiguration von Debug zu Release ändern und alles funktioniert wie erwartet.

enter image description here

Verwandte Themen