Ich möchte eine OSX-Anwendung erstellen, die einige der neuen 10.7 SDK-Funktionen (insbesondere In-App-Käufe) verwendet. Ich möchte jedoch nicht verhindern, dass 10.6 Benutzer die Anwendung installieren.
Wie kann ich dafür sorgen, dass 10.7 Benutzer auf die neuen Funktionen zugreifen können und 10.6 Benutzer einfach nicht über die neuen Funktionen verfügen, aber trotzdem die grundlegenden Funktionen nutzen können?
Wenn ich für 10.6 kompiliere, lädt es nicht wie erwartet das SDK, das "InApp" hat. Und ich nehme an, wenn ich für 10.7 kompiliere, können Benutzer es nicht vom AppStore installieren.
Sie können eine diese Methoden verwenden, um die Betriebssystemversion des Benutzers zu ermitteln. Wenn sie Lion ausführen, führen Sie die Code, wenn sie nicht ausgeführt werden (verwenden Sie eine if-Anweisung)
Bearbeiten: Sie müssen auch das Storekit-Framework schwach verknüpfen
Nicht sicher, ob das hilft, aber für neuere APIs (wie zB nur für Lion) verwende ich einfach eine IF-Anweisung mit respondToSelector:
Dies ist eine der von Apple vorgeschlagenen Methoden, und Sie müssen sich nicht mit der Kenntnis eines bestimmten Betriebssystems zur Laufzeit herumschlagen.
Könnten Sie ein Paket erstellen, das geladen werden kann und die Funktionen von 10.7 bietet? Ihre echte App könnte überprüfen, unter welchem Betriebssystem sie läuft, und das 10.7-Bundle nicht laden. Ich weiß nicht, ob das funktionieren würde, da es für ein 10.7-SDK-Paket nicht unangemessen wäre, das Laden in eine 10.6 SDK-App zu verweigern.
Eine andere Möglichkeit wäre, zwei Apps unter der Haube zu haben und eine sehr kleine Shell-App (möglicherweise sogar ein Skript) zu haben, die das Host-Betriebssystem erkennt und die OS-korrekte ausführbare Datei ausführt.
Tags und Links macos app-store mac-app-store backwards-compatibility