2016-07-14 11 views
0

Ich entwickle neue App für WatchOS, während App funktioniert normalerweise auf Simulator es stürzt auf tatsächlichen Gerät ohne Fehlerprotokoll. Zuerst dachte ich, dass es auf meine Uhr und die eingereichte App zu überprüfen sein könnte und es abgelehnt wurde, da es auf dem tatsächlichen Gerät abstürzt. Der Code von Watch ist wirklich einfach, es sendet nur HTTP-Anfrage und das ist alles.Apple Watch App funktioniert nicht auf dem Gerät

override func willActivate() { 
     // This method is called when watch view controller is about to be visible to user 

     let request = NSURL(string: "[MY SERVER URL]") 
     var response = try! String(contentsOfURL: request!) 

     if response == "X"{ 
      response = ":D" 
     } 

     watch_text.setText(response) 

     super.willActivate() 
    } 
+0

nur raten, haben Sie eine Internetverbindung? vielleicht Antwort ist ungültig, wenn nicht richtig initialisiert, so dass Sie "nil" als Text in "watch_text" zuweisen und aus diesem Grund wird es stürzen – ddb

+0

Ja habe ich, auch ich denke, dass Apple Review-Team hat auch eine Internetverbindung – user897234

Antwort

0

Zwei Fragen auf der Hand:

  • Sperrung die App

    Sie machen eine synchrone Netzwerkanforderung in willActivate(), und die Benutzeroberfläche zu blockieren. Der Benutzer wartet darauf, dass Ihre App geladen wird. Sie müssen jedoch möglicherweise lange warten, bis die Netzwerkanforderung abgeschlossen oder fehlgeschlagen ist.

    Zusätzlich zu diesem sein eine negative Erfahrung, Sie nicht darüber nachdenken, wie das Betriebssystem Ihren Prozess es denkt, dass es hängt hängt.

    Sie sollten use NSURLSession to load your URL, und legen Sie die Bezeichnung in seiner Abschlussbehandlungsroutine.

  • Kraft auszupacken und zu ignorieren Fehler

    Sie sollten Fehler und nil optionals behandeln, statt sie zu ignorieren Fehler und Kraft-auspackt optionals.

    Immer wenn Sie eine ! sehen, denken Sie daran, dass Ihr Code abstürzt, wenn etwas Unerwartetes passiert, das Sie nicht behandelt haben.

Ich dachte, dass es

auf meine Uhr sein kann, wenn es nicht auf Ihre Uhr funktioniert, ist es wahrscheinlich nicht auf einer anderen Uhr arbeiten.

Wenn etwas nicht funktioniert (so wie Sie es erwarten), ist es eher ein Softwareproblem (mit Ihrem Code) als ein Hardwareproblem mit der Uhr.

+0

Ich habe meinen Code geändert zu asynchron, ich werde Sie wissen lassen, ob die App akzeptiert wird – user897234

+0

Bitte haben Sie Verständnis, dass Apple-Rezensenten nicht zum Beta-Test Ihrer App da sind. Sie sollten testflight oder einen anderen Dienst verwenden, damit Benutzer Feedback * geben können *, bevor Sie sie an den App Store senden. –