16.02.2011 / Timo Hetzel

Neue In-App-Abos

Apple hat heute die technische Dokumentation für die neuen Abonnement-In-App-Käufe veröffentlicht. Wir haben ja in Bits und so #233 und #234 ausführlich über den ersten Anbieter eines solchen Abos, “The Daily” gesprochen.

Hintergrund

inappflow
Bisher gab es zwei Hauptsorten von In-App-Käufen:

  • Verbrauchsgüter (Consumables)
    • z.B. Munition in einem Shooter. Einmal aufgebraucht muss für neues Geld nachgekauft werden
  • Nicht-Verbrauchsgüter (Non-Consumables)
    • z.B. ein Level-Pack in einem Spiel, oder ein e-Book-Download. Kann durch erneuten Kauf auf dem gleichen iTunes-Account auf einem anderen Gerät gratis erneut geladen werden.
    • Eine App kann solche vorhandenen Käufe für einen Kunden beim App Store anfordern und bekommt dann Kopien der Kaufquittungen verarbeiten. Das wird meiner Erfahrung nach bisher nur von wenigen Apps tatsächlich implementiert.

Einen Sonderfall von Verbrauchsgütern stellen die alten Abonnements dar. Sie kosten bei jedem Kauf erneut Geld, nur muss der Anbieter der App selbst über einen Account auf dem eigenen Server sicherstellen, dass der Benutzer der App auch auf anderen Geräten auf den bezahlten Inhalt zugreifen kann. Die Bits und so App vergibt deshalb beim ersten Kauf eines solchen alten, nicht verlängernden Abos einen anonymen Benutzernamen, der anschließend mit Name und Emailadresse personalisiert werden kann. Damit kann der Benutzer den Account auf einem anderen Gerät eintragen, ohne erneut zu bezahlen, oder den Account auf dem Mac/PC in iTunes nutzen, um auf das Premium-Angebot zuzugreifen.

Die komplette Businesslogik hinter diesen Abos findet in der App und auf dem Server des Inhalteanbieters statt. Apple hat für diesen Typ von In-App-Kauf keinerlei Konzept von “Laufzeit”.

Andere Apps, wie z.B. der Spiegel auf dem iPad verlangen zuerst die Registrierung, und buchen dann im Anschluss das alte Abo auf diesen Account.

Die c’t App auf dem iPad dagegen verwendet für einzelne Ausgaben einzelne Nicht-Verbrauchsgüter, die (theoretisch) über den Wiederherstellungsmodus oder über erneuten kostenlosen Kauf auf anderen Geräten heruntergeladen werden könnten.

Neue In-App-Abos

autorenewingDie neuen verlängernden In-App-Abos ähneln zunächst wider Erwarten den Nicht-Verbrauchsgütern, mit dem Unterschied, dass sie beim Überschreiten des bezahlten Zeitraums automatisch Geld abbuchen.

Für Entwickler verhalten sich die neuen Abos wie alle anderen Käufe auch. Deswegen konnten sie auch ohne spezifische Änderungen an iOS 4.2 (speziell: StoreKit) rein auf dem App Store Server implementiert werden. Nur auf dem Server des Anbieters ist eine kleine Änderung (Shared Secret für Quittungsverifizierung) nötig.

In most cases, your iOS client application should not need to change. In fact, your client application is now made simpler, as you can use the same code to recover auto-renewable subscriptions as you do to recover nonconsumable products.

StoreKit Reference

Ein Beispiel

Ich kaufe mir “The Daily” für einen Monat. Die App erhält nach Eingabe von iTunes-Account und Passwort eine Quittung vom App Store und schickt diese an den eigenen Server. Dieser überprüft die Quittung an der App vorbei beim App Store-Server, notiert sich die neue Laufzeit und schaltet den Inhalt für den Kunden in der App frei.

Wenn ich auf einem weiteren Gerät die App installiere, und mich mit dem gleichen Account anmelde, erhält die App beim Wiederherstellen der Transaktionen eine Kopie der Kaufquittung vom ersten Gerät, und kann den Inhalt für das zweite Gerät freischalten.

Sobald der Monat verstreicht, bucht mir Apple das Geld für den nächsten Monat ab. Die App weiß nichts davon, und Server von “The Daily” auch nicht. Solange, bis die App auf einem der Geräte wieder geöffnet wird. Dann werden die Transaktionen wiederhergestellt und der App Store schickt neue Kaufquittung(en) an die App. Diese schickt sie dann an den Server des Anbieters, der sie dann wieder bei Apple verifizieren kann und wieder den Inhalt freischalten kann. Bei jedem weiteren Gerät funktioniert das analog.

Das heißt, für das Abo laufen zwei unterschiedliche Uhren. Eine bei Apple im App Store, und eine in der App bzw. auf dem Server des Anbieters. Diese beiden Uhren werden erst beim Start der App und dem Wiederherstellen der Transaktionen synchronisiert.

Neue und Alte Abos

Für Apps mit dem “alten” Abomodell mit einem eigenen Account auf dem Server des Anbieters bedeutet das: Ein Übergang auf die neuen Abos ist nur mit Einschränkungen möglich:

Ein Vermischen von Laufzeiten aus dem “alten” Account auf dem Anbieter-Server und neuen Abos ist nicht möglich. Die angezeigten Laufzeiten im App Store und im Web könnten unkontrollierbar durch gemischte Käufe auseinanderlaufen.

Falls ein Vergeben eines externen Accounts für neue Abos noch zulässig sein sollte (ich habe eine entsprechende Passage in den Vertragsbedingungen noch nicht gefunden), kann die Situation entstehen, dass der Kunde automatisch bezahlt, aber die App nicht öffnet. Die Abo-Uhren würden nicht synchronisiert und der Inhalt wäre für den Account nicht freigeschaltet, bis der Benutzer einmal pro Abolaufzeit die App öffnet. Update: Geht doch.

Für die Bits und so App bedeutet das mit dem heutigen Wissensstand: Ein einfaches Umsteigen auf das neue Abomodell ist nicht möglich. Ein gemischtes Verlängern via Web-Shop und In-App-Abo wäre nicht möglich, und der Plus-Feed in iTunes auf Mac/PC würde auslaufen, wenn die App nicht geöffnet würde. Ein reines App-Plus-Abo ist zwar denkbar, wäre aber durch das Wegfallen des iTunes-Plus-Feeds eingeschränkt.

Die App entspricht zum Glück den verschärften, bzw. jetzt durchgesetzten In-App-Regeln: Die Käufe, die im Web angeboten werden, werden zu den gleichen Preisen auch in der App angeboten, und die App linkt nicht in den Web-Shop. Sie sollte damit auch über den Juni hinaus bedenkenlos das Bergwerk passieren.

TL; DR

Ganz abgesehen von der 30%-Diskussion, die die Verleger von toten Bäumen™ gerade mit sich selbst führen, ist das neue Abomodell von Apple unüberraschenderweise App-zentrisch und sieht einen Mischbetrieb mit eigenen, extern abgeschlossenen Abos mit Laufzeit nicht vor.

Update: War etwas voreilig – Die Subscriptions sind von außen überprüfbar. Vielleicht doch alles gar nicht so übel?