iphone - tutorial - ios app programmieren windows




Wie sollte ich eine universelle iOS-App entwickeln, die iOS 4-Funktionen enthält, obwohl das iPad noch nicht iOS 4 ausführt? (3)

Ich möchte ein Spiel für iPhone und iPad erstellen. Daher wäre es sinnvoll, dieses Projekt von Grund auf als universelle App zu starten. Allerdings laufen auf dem iPhone und iPad derzeit zwei verschiedene Versionen des iOS, da iOS 4 noch nicht für das iPad verfügbar ist. Es gibt zwei iOS 4-Funktionen (GameCenter und iAd), die ich in meinem Spiel unterstützen möchte.

  1. Ist es in diesem Fall eine schlechte Idee, dieses Projekt als universelle App zu erstellen?
  2. Wenn nicht, welche Gedanken sollte ich berücksichtigen, wenn ich eine universelle App entwickle, die zwei verschiedene Versionen von iOS unterstützt?
  3. Ist es etwas sicher, auf Apple zu setzen, das im Herbst das iOS 4 für das iPad veröffentlicht, wie spekuliert?
  4. Wenn ja, kann ich auf jeden Fall beginnen, diese iOS 4-Funktionen (GameCenter und iAd) in meine iPad-Version meines Spiels zu integrieren?

Vielen Dank im Voraus für all deine Weisheit!

EDIT: Ich verstehe, dass dieses Problem mit dem Management von Risiken verbunden ist. Ich bin mir der Risiken bewusst, aber ich interessiere mich mehr für Überlegungen zum technischen Design, wenn es um die Erstellung einer universellen App geht, wenn das iOS unter den verschiedenen iOS-Geräten fragmentiert ist.


Dies ist eine Frage, bei der es um das Risikomanagement geht. Risiken beinhalten:

  1. Apple veröffentlicht das erwartete "Unified 4.1" Betriebssystem nicht innerhalb des von Ihnen benötigten Zeitrahmens
  2. Das Betriebssystem wird rechtzeitig für Ihre Bedürfnisse freigegeben, aber eines oder beide von GameCenter oder iAds sind nicht enthalten
  3. GameCenter und / oder iAds sind enthalten, aber sie entsprechen nicht genau der API, die Sie erwartet haben
  4. Die APIs sind, was Sie erwartet haben, aber sie sind fehlerhaft, da es die erste Version auf dem iPad ist
  5. etc...

Nur Sie können bestimmen, auf welcher Ebene jedes einzelne Risiko Sie sich befinden, wie wahrscheinlich Sie jedes Risiko einschätzen, ob Sie jedes Risiko mindern können und welche Kosten für diese Probleme auf dem Weg entstehen.



Wenn Sie eine Universal-App erstellen möchten, denken Sie nur an die folgenden zwei Quellcode-Snippets:

  • Verwenden von Klassen nur, wenn sie auf dem aktuellen Gerät verfügbar sind

    Betrachten Sie diesen Code:

    UILocalNotification* n = [[UILocalNotification alloc] init];

    Beim Erstellen einer Universal App führt dieser Code zu einem Laufzeitfehler auf jedem Gerät, auf dem eine iOS-Version ausgeführt wird, die die UILocalNotification-Klasse nicht kennt.

    Sie können UILocalNotification weiterhin in Ihrem Code unterstützen und gleichzeitig die Rückwärtskompatibilität mithilfe des folgenden Code-Snippets aufrechterhalten:

    Class notificationClass = NSClassFromString(@"UILocalNotification");
    if (notificationClass) {
      UILocalNotification* n = [[notificationClass alloc] init];
    }

    Mit dieser Technik können Sie Klassen verwenden, die in bestimmten Betriebssystemversionen auf Geräten, die die Klassen unterstützen, nicht verfügbar sind.

  • Methoden nur verwenden, wenn sie auf dem aktuellen Gerät verfügbar sind

    Angenommen, Sie möchten Folgendes tun:

    [[UIApplication sharedApplication] scheduleLocalNotification:n];

    Verwenden Sie den folgenden Code, um die Methode bedingt aufzurufen, falls sie auf dem aktuellen Gerät verfügbar ist:

    if ([UIApplication instancesRespondToSelector:@selector(scheduleLocalNotification:)]) {
      [[UIApplication sharedApplication] scheduleLocalNotification:n];
    }

Diese beiden Techniken sind wahrscheinlich die einzigen Dinge, die Sie wissen müssen, um Ihre Universal App zu erstellen. Führen Sie Ihren Code abhängig von den Gerätefunktionen bedingt aus und Sie sollten in Ordnung sein.

Allerdings müssen Sie berücksichtigen, dass das iPad wahrscheinlich eine andere Benutzeroberfläche als Ihr iPhone-Gegenstück verwenden wird. Leider können Sie Ihre iPad-Benutzeroberfläche erst dann mit den iOS 4-Funktionen testen, wenn sie auf dem iPad verfügbar sind. Aber das sollte kein allzu großes Problem sein: Wenn Sie [[UIDevice currentDevice] userInterfaceIdiom] , um zu prüfen, ob Sie auf einem iPad laufen, können Sie verhindern, dass Ihre Universal App Code ausführt, der noch keine iPad-Benutzeroberfläche hat. Sobald Apple iOS 4 für iPads veröffentlicht hat, können Sie die Benutzeroberfläche implementieren, diese Überprüfung entfernen und ein Update für den Speicher freigeben.





universal-binary