2012-10-03 7 views
31

Wir müssen unsere App im Rahmen eines iOS-Upgrades testen (z. B. 5.1 -> 6.0). Leider erlaubt Apple keine Downgrade-Geräte. Wir dachten daran, es im Simulator zu tun, aber verschiedene Versionen des Simulators sind unterschiedliche Umgebungen für sich. Ich denke, wir können das Paket von einem Simulator zum anderen kopieren, aber das wird den Schlüsselbund nicht migrieren (oder?).Wie simuliere ich das iOS Versionsupgrade?

Danke!

+1

Was möchten Sie damit testen? Testen der App separat auf 5.1 und auf 6.0 sollte ausreichen. Die Anwendung kann nicht ausgeführt werden, wenn das System aktualisiert wird. – Sulthan

+3

Es gibt tatsächlich Möglichkeiten, Ihr Betriebssystem herunterzustufen - halten Sie Ausschau nach einem kleinen Regenschirm - z. http://www.idownloadblog.com/2012/05/25/save-your-shsh-blobs-5-1-1/ – Till

+1

Sulthan, ah, die Unterschiede zwischen Theorie und Praxis ... wir denken, dass es eine gewisse Logik gibt unsere App, die den Übergang unterbricht und einige der App-Daten in einem inkonsistenten Zustand lässt. Till, danke, wir versuchen das, wenn wir ein Gerät finden, das wir noch nicht auf iOS 6.0 aktualisiert haben. Trotzdem wäre es am einfachsten durch den Simulator. –

Antwort

5

Vorläufig können Sie noch iOS 8.2 installieren. Wenn eine neue Version veröffentlicht wird, lässt Apple beide Versionen für eine kurze Zeit zur Installation geöffnet. Während dieses "Signierfenster" geöffnet ist, können Sie ein Gerät aktualisieren, testen und es dann von einem Image der älteren Version wiederherstellen. Sie können also intensiv testen, während das Fenster geöffnet ist, aber das ist natürlich keine langfristige Lösung (es dauert in der Regel nur ein paar Tage).

Wenn Sie das Budget dafür haben, können Sie 8.2 auf einem Gerät installieren, einen großen Aufkleber mit der Aufschrift "Do not upgrade" anbringen und so lange auf 8.2 halten, wie es relevant ist. Installieren Sie Ihre App auf diesem Gerät und erstellen Sie ein Backup (mit aktivierter Backup-Verschlüsselung, so dass Schlüsselbundeinträge enthalten sind) und stellen Sie dann das Backup auf einem anderen Gerät mit Version 8.3 wieder her - dies ist im Wesentlichen das gleiche Verfahren wie beim Upgrade/Wiederherstellen über iTunes, so sollte es ziemlich nah sein. Es wird natürlich nicht genau das gleiche wie ein OTA-Update auf dem Gerät sein, aber dafür siehe Option 1 oben (und es bald sehen).

11

Um einen Übergang von einem Zustand (vorher) zu einem anderen (nach) zu testen, benötigen Sie eine Möglichkeit, die App in den Zustand vor zu versetzen.

Ihre App wird sicherlich nicht während laufen das Betriebssystem aktualisiert wird, so dass Sie wirklich nur um die App kümmern Anfahren und entdecken, dass das Betriebssystem aktualisiert wurde. Es gibt ein paar Optionen:

  • Kopieren Sie alle Ihre App-Datendateien von einem Gerät der „alte“ iOS-Version (5.1 entsprechend Ihre Frage) laufen auf ein Gerät mit der neuen (6.0) Version ausgeführt wird. Mit dem Organisator in Xcode können Sie den "Container" Ihrer App ganz einfach von einem Gerät auf Ihren Mac kopieren oder umgekehrt.

  • Lassen Sie Ihre App die Daten im "alten" Format schreiben. Es ist nicht ungewöhnlich, dass eine App je nach Umgebung über Methoden zum Lesen und Schreiben von Daten in verschiedenen Formaten verfügt. Daher ist es oft einfacher, Ihre App dazu zu bringen, Daten im alten Format zu schreiben, als von einem alten Gerät zu kopieren.

Welchen Weg Sie wählen, denken Sie an anderen Orten (wie Benutzereinstellungen), wo Sie könnten OS versionsabhängige Änderungen vorgenommen und diejenigen wieder auf Werte gesetzt, die dem vorherigen OS entsprechen. Dies gilt insbesondere für Keychain-Elemente, die nicht in der Sandbox Ihrer App gespeichert sind.

Einheit Test-Frameworks (wie Apples XCTest Framework) hat in der Regel einen Setup-Mechanismus, den Sie Ihre Anwendung auf den vor Zustand zurückgesetzt werden, einschließlich Kopieren von Dateien verwenden könnten, das Hinzufügen und Schlüsselbund Artikel zu entfernen, das Setzen von Voreinstellungen Elementen, etc. Sie Anschließend können Komponententests hinzugefügt werden, die Code ausführen, der an einem Update beteiligt ist, und die Ergebnisse testen. Mit einer Reihe von leicht wiederholbaren Tests können Sie Probleme leichter beheben.

Wie auch immer Sie vorgehen, das Ziel besteht darin, die App in denselben Zustand zu versetzen, in dem sie sich befinden würde, wenn sie zum ersten Mal nach einer Betriebssystemaktualisierung ausgeführt würde.Sie müssen sich keine Gedanken darüber machen, das eigentliche Betriebssystem-Update zu simulieren. Sie müssen die App nur dazu bringen, zu glauben, dass das Update gerade passiert ist.

+1

Deckt dies Keychain-Einträge (Hauptpunkt der Frage, die ich dachte)? – CupawnTae

+0

@CupawnTae Das * bringt die App in den Zustand vor Zustand * Die Idee trifft sicherlich auf Schlüsselbund-Elemente zu, aber da der Schlüsselbund eine Sache ist, die außerhalb der Sandbox der App bestehen bleibt, müsste Code dafür geschrieben werden. Vielen Dank, dass Sie darauf hingewiesen haben - ich werde bearbeiten, um den Schlüsselbund gezielt anzusprechen. – Caleb

Verwandte Themen