Hallo zusammen,
ich brauche Eure Hilfe zum Thema "Freischalten eines IAP-Features für Bestandskunden". Allerdings weniger in der Umsetzung als mehr in der Frage des Testens...
Wie hier erwähnt, möchte ich auch in einer neuen Version meiner - bisher kostenpflichtigen - App verfahren: Die Applikation soll mit dem nächsten Update kostenlos werden. Bestimmte Features lassen sich dann per IAP freischalten. So spare ich mir das parallele Bereitstellen einer Test- und Vollversion und ein Käufer wechselt nicht von einer in eine andere Applikation.
Gelöst habe ich das Ganze mittels Receipt-Validierung über Receigen: Bei Prüfung des Receipts und der enthaltenen In-App-Käufe frage ich die Bundle-Version des ursprünglichen Kaufes ab
Alles anzeigen
Was mir mir Kummer macht, ist die Frage des Testens: Ich möchte keinen Code produktiv setzen, den ich nicht getestet habe. Allerdings liefert der App-Store im Sandbox-Environment immer "1.0" als CFBundleVersion der originären Version zurück. Wie soll ich also vernünftig testen, dass mein Code nicht irgendeinen dummen Lapsus enthält? Wie ihr oben sehen könnt, habe ich den Vergleich momentan so manipuliert, dass ich zumindest mit einem anderen Wert teste (und mir ein
Gibt es wenigstens eine Chance, wie ich mir das Receipt der aktuellen Version (aus dem Store) einmal ansehen kann? Leider funktioniert das Quick Look Plugin von Receigen zumindest bei mir nicht...
Mattes
Edit: Momentan ist meine beste Idee ein "staged rollout" und dann hoffen ... sehr unprofessionell
ich brauche Eure Hilfe zum Thema "Freischalten eines IAP-Features für Bestandskunden". Allerdings weniger in der Umsetzung als mehr in der Frage des Testens...
Wie hier erwähnt, möchte ich auch in einer neuen Version meiner - bisher kostenpflichtigen - App verfahren: Die Applikation soll mit dem nächsten Update kostenlos werden. Bestimmte Features lassen sich dann per IAP freischalten. So spare ich mir das parallele Bereitstellen einer Test- und Vollversion und ein Käufer wechselt nicht von einer in eine andere Applikation.
Gelöst habe ich das Ganze mittels Receipt-Validierung über Receigen: Bei Prüfung des Receipts und der enthaltenen In-App-Käufe frage ich die Bundle-Version des ursprünglichen Kaufes ab
[receipt_dict objectForKey:<prefix>_InApp_RECEIPT_ATTRIBUTETYPE_ORIGINAL_APPLICATION_VERSION]
. Diese vergleiche ich mit der aktuellen Version und wenn sich ergibt, das der Käufer ein Bestandskunde ist, schalte ich die Zusatzfeatures ohne IAP frei:Quellcode
- // RECEIPT_ATTRIBUTETYPE_ORIGINAL_APPLICATION_VERSION corresponds to the value of CFBundleVersion (in iOS) or CFBundleShortVersionString (in macOS) when the purchase was originally made. In sandbox environment, the value is always “1.0”.
- NSString *purchasedVersion = [receipt_dict objectForKey:STB_InApp_RECEIPT_ATTRIBUTETYPE_ORIGINAL_APPLICATION_VERSION];
- #pragma warning Required IAP Version for testing "1.0" (bundle version from sandbox)
- // NSString *requiresIAPVersion = @"2000";
- NSString *requiresIAPVersion = @"1.0";
- DebugLog(@"Purchased version: %@", purchasedVersion);
- if ([requiresIAPVersion compare:purchasedVersion options:NSNumericSearch] == NSOrderedDescending)
- {
- // App was purchased before introducing IAP (former customer), IAP features are available
- DebugLog(@"Former customer of %@, purchased version %@, IAP required starting %@", identifier, purchasedVersion, requiresIAPVersion);
- self.proPurchaseState = PURCHASE_DONE;
- }
#pragma warning
zur Erinnerung gesetzt), aber schön ist das nicht.Gibt es wenigstens eine Chance, wie ich mir das Receipt der aktuellen Version (aus dem Store) einmal ansehen kann? Leider funktioniert das Quick Look Plugin von Receigen zumindest bei mir nicht...
Mattes
Edit: Momentan ist meine beste Idee ein "staged rollout" und dann hoffen ... sehr unprofessionell
Diese Seite bleibt aus technischen Gründen unbedruckt.