App Store Receipts / IAPs validieren - Erfahrungen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • App Store Receipts / IAPs validieren - Erfahrungen

    Moin zusammen,

    mir fehlt momentan die Zeit, konzentriert zu programmieren. Das hat mal wieder zur Folge, dass ich mir eher konzeptionell Gedanken mache und hier interessiert mich Eure Meinung / Erfahrung:

    Meine Apps werden als "Freemium"-Programme exklusiv über die Apple App Stores vertrieben: Sie sind quasi Testversionen mit reduziertem Funktionsumfang zum Ausprobieren, welcher dann durch einen einmaligen In-App-Kauf ("non-consumable good") freigeschaltet wird. Hierbei nutze ich Receigen (und OpenSSL), um das Receipt zu prüfen und IAPs zu verarbeiten. So weit, so gut ... und seit Jahren erfolgreich im Einsatz.

    Allerdings bin ich etwas paranoid was externe Abhängigkeiten angeht, und Receigen beschäftigt mich gedanklich immer wieder: Obwohl es sehr zuverlässig ist und ich mit seiner Funktion - insbesondere zu dem Preis - sehr zufrieden bin, wäre ein GAU, wenn es einmal nicht mehr funktionierte. Insbesondere da sein Autor auf meine bisherigen Kontaktversuche zu unterschiedlichen Themen nicht reagierte. Also habe ich mir einmal (rein theoretisch) Gedanken um einen Plan B gemacht:
    1. Ich programmiere die lokale Receipt-Validierung selber. Hierzu gibt es einige gute Beschreibungen deren Struktur, z. B. auch vom Receigen-Autor selber. Allerdings dürfte dies ein ziemlicher Zeitaufwand sein ... und da ich bisher wenig mit Krypto-Funktionen gearbeitet habe, auch fehleranfällig.
    2. Ich nutze einen anderen Drittanbieter zur Receipt-Validierung, z. B. RevenueCat. Hier erfolgt eine Online-Validierung über deren Backend (das dann wahrscheinlich die Apple-Server nutzt). Primär für Abonnements erforderlich, aber bei meinem Volumen kostenlos nutzbar. Allerdings tausche ich hier nur einen Drittanbieter gegen einen anderen und binde fremde Frameworks mit ungewünschten Funktionen und weiteren Abhängigkeiten ein.
    3. Ich baue selber auf meinem Server ein kleines Backend auf, dass eine Online-Validierung durchführt und frage aus der App den IAP-Status dort ab. Eigentlich Overkill, da ich keine Abonnements verwalten muss und auch so keine Backend-Anforderungen habe.
    4. Ich nutze aus der App heraus das Apple-Backend zur Online-Validierung. Dann muss ich nur ein base64-kodiertes Object (das Receipt) posten und erhalte ein JSON mit den Daten / IAPs. Klingt toll, allerdings warnt Apple ausdrücklich davor, dies auf einem Endgerät zu nutzen: Zu groß wäre das Risiko, dass die Validierung z. B. per MitM kompromittiert würde.
    Ihr merkt vielleicht schon, ich tendiere zur letzten Lösung: Validieren des Receipts bei App-Start, dann Speichern der IAPs z. B. in den User Defaults. Dort bleiben sie auch bestehen, falls einmal kein Netzwerk verfügbar ist, werden beim nächsten Mal mit Internet-Verbindung aber aktualisiert. Natürlich ein möglicher Angriffsvektor z. B. durch Blocken des App-Store-Verkehrs nach erster Validierung, aber das ist m. E. eher hypothetisch: Mein Klientel besteht hauptsächlich aus älteren amerikanischen Damen ... die wenigsten werden HTTPS-Traffic aufbrechen und den Netzwerkverkehr sniffern. Oder übersehe ich etwas Maßgebliches?

    Wie geht Ihr mit Receipt-Validierung / In-App-Käufen um? Wie schätzt Ihr Vor- / Nachteile der Online-Validierung aus der App heraus ein?

    Schönen Rest-Sonntag, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MyMattes ()

  • Storekit 2 ist für dich noch keine Option? Dort sollte die Validierung durch JSON Web Signature (JWS) ja eigentlich deutlich vereinfach sein.

    Meine Erfahrungen damit sind zwar auch nur rudimentär aber insgesamt sieht das für mich deutlich einfacher und runder aus als das bisheriger Storekit.

    Diesen Blog-Beitrag und auch die Videos von Apple dazu fand ich ziemlich interessant.
    So Long, and Thanks for All the Fish.
  • Der Apple-Vortrag war sehr interessant (den Code-Teil fand ich eher unübersichtlich), aber ich scheitere wie gesagt schon am Deployment Target. Ansonsten wäre die Transaktions- / Kaufhistorie eine nette Methode, IAPs in der App zu prüfen.

    Hat jemand noch eine Meinung zum Thema "IAP Backend-Validierung aus der App"? Ich schätze mich eher als paranoid ein, bin an der Stelle aber vergleichsweise entspannt. Was übersehe ich?

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.