webentwicklung-frage-antwort-db.com.de

Reagieren Sie die native App auf dem Startbildschirm des Geräts, funktioniert jedoch im Simulator

Meine React Native-App funktioniert im XCode-Simulator ohne Probleme. Wenn ich jedoch auf einem physischen Gerät, meinem iPhone, laufe, gibt es ein Problem. Die App wird gestartet und bleibt auf dem Startbildschirm "React Native" hängen. Nach 10-15 Sekunden stürzt die App ab. Was ist die Ursache und wie kann ich das verhindern? 

25

Es scheint, dass ich das Problem gefunden habe. Laut http://facebook.github.io/react-native/releases/0.45/docs/running-on-device.html#running-your-app-on-ios-devices , wenn Sie bauen und Wenn Sie die App auf Ihrem Gerät ausführen, lädt Ihre App JS-Dateien vom Packager auf Ihrem Computer, sodass Sie Ihre App live laden können. Das bedeutet, dass Ihr Gerät an Ihren Computer angeschlossen sein muss oder sich in demselben WLAN-Netzwerk befinden muss wie Ihr Computer. Wenn Ihr Gerät nicht auf den Packager zugreifen kann, bleibt es auf dem Begrüßungsbildschirm hängen und wird beendet.

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

32
Guannan He

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

Früher befand sich dies in den FBs "Bereitstellung auf Gerät", nicht sicher, warum es nicht mehr vorhanden ist. 

Beispielaufruf (unser index.ios.js wird durch TypeScript in ./dist abgelegt): 

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 anscheinend notwendig, dass Ihre App direkt vom Bundle aus ausgeführt wird, anstatt auf den Entwicklungsserver zuzugreifen. Dies scheint die Zeitüberschreitung zu verursachen.

Kommentieren Sie diese Zeile aus:

jsCodeLocation = // whatever

Und füge diese Zeile hinzu:

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
3
Luke Williams

Wenn ich baue, funktionierte es im Simulator gut, aber im eigentlichen Gerät kam nur der Splash-Screen und sonst nichts.

Dies lag daran, dass meine Build-Konfiguration der Debug-Modus war. Dies ist standardmäßig der Standardwert. Ich denke, ich musste die Release-/Build-Konfiguration von Debug auf Release ändern und alles funktionierte wie erwartet.

 enter image description here

2
Anjum....

Ich habe versucht, mein iPhone vom Internet zu trennen, das Problem ist jedoch später verschwunden.

Etwas versucht also, Netzwerksachen zu machen und die Verzögerung zu verursachen ... Es ist eine schnelle Lösung, die aber solange dauert, bis wir den jeweiligen Schuldigen gefunden haben.

2
Guy

Sie müssen wahrscheinlich die App signieren. 

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

Weitere Informationen finden Sie unter diesem Link: https://developer.Apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/LaunchingYourApponDevices/LaunchingYourApponDevices.html#//Apple_ref/doc/uac/ucc/u/pu

1
TheJizel

Für mich verwende ich Firebase-Framework in meinem Projekt. Ich habe die Datei " GoogleService-Info.plist " zu meinem Xcode-Projekt vergessen. Nach dem Hinzufügen ist das Problem weg.

1
Mehmet

Ich hatte das gleiche Problem.
Was ich in Xcode getan habe, gehe zu Products -> Scheme -> Edit Scheme -> Wählen Sie die Registerkarte Run -> Ändern Sie die Build-Konfiguration in Release (standardmäßig war es der Debug-Modus) und führen Sie die App in der Gerät. 

Es war viel schneller und lief wie eine native App. 

0
Udaya Sri

Ich war mit diesem Problem konfrontiert, als ich mit dem native-Startbildschirm reagierte. Nach dem Entfernen funktioniert es

0
Sujit

Dieses Problem kann aufgrund der folgenden Möglichkeiten auftreten:

  1. Ihr Laufschema ist auf release anstelle von debug gesetzt. Erwarten Sie daher immer, main.jsbundle zu laden, anstatt vom Debug-Server auszuführen. Ändern Sie es mit Product-> Schema-> Schema bearbeiten-> Ausführen-> Build-Konfiguration: Debug

Überprüfen Sie im Xcode-Protokoll, dass eine beliebige Nachricht wie NSURLConnection finished with error - code -1004 oder NSURLConnection finished with error - code -1022 angezeigt wird. Gehen Sie zu Project-> Target-> Build Phases-> + -> New Run Script Phase 

  1. (-1004) Sie haben Ihr XCode-Projekt aus der Skizze konfiguriert und haben vergessen, das X-Code-Skript für reaktives Einrichten unter Build Phases einzugeben:

Für die nachfolgende Version von React Native 50: export NODE_BINARY=node ../node_modules/react-native/packager/react-native-xcode.sh

Für die höhere Version von React Native 50: export NODE_BINARY=node ../node_modules/react-native/scripts/react-native-xcode.sh

  1. (-1022) Ihr App-ATS-Problem, überprüfen Sie Info.plist, und Sie können ATS mit folgendem Code deaktivieren: <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
0
dayitv89