InApp Purchases sicher speichern

  • InApp Purchases sicher speichern

    Hallo,
    ich habe hier im Forum in einem anderen Beitrag gelesen, dass es ein guter Weg ist die Daten, die man sicher speichern will, mittels CommonCrypter und einem Device spezifischen Key zu verschlüsseln.
    Ich habe bisher schon einiges gesucht, konnte aber leider noch nichts wirklich brauchbares dazu finden. Wie kann man an die MAC Adresse (oder anderer Key?) kommen und wie verwendet man CommonCrypter vernünftig?
    Hat hier irgendjemand damit Erfahrung bzw. kennt ein gutes Tutorial, das einem die Thematik näher bringt?

    Des Weiteren habe ich das Problem, dass ich meine InApp Purchases in einer Plist abgelegt habe, auf die jeder zugreifen kann. Ich will dies nun, wie gesagt, verschlüsseln. Die App ist allerdings schon am Markt und ich will einen Übergang von umverschlüsselt zu verschlüsselt ermöglichen, der dem Benutzer nicht auffällt, aber all jene, die sich die InApps "gecrackt" haben, das weitere Benutzen der InApps untersagt.

    Mittels Restore Purchases kann man ja über SKPaymentTransactionStateRestored herausfinden, ob die InApps schon getätigt wurden. Die Idee ist nun im Hintergrund zu Restoren und wenn da was kommt, dann weiß ich, dass der User einer von der braven Sorte war und gekauft hat.
    Frage: Wie unterscheide ich da zwischen nicht gekauft und keine Verbindung / Fehler / etc.
    Ich will nicht brave User aussperren und unnötig dazu zwingen selbst auf Restore Purchases zu klicken, wenn keine Verbindung zum Apple Server aufgebaut werden konnte.

    Zur Verfügung habe ich ja nur diese Möglichkeiten:

    Quellcode

    1. enum {
    2. SKPaymentTransactionStatePurchasing,
    3. SKPaymentTransactionStatePurchased,
    4. SKPaymentTransactionStateFailed,
    5. SKPaymentTransactionStateRestored,
    6. SKPaymentTransactionStateDeferred,
    7. };
    8. typedef NSInteger SKPaymentTransactionState;





    Was würdet ihr mir da raten, wie ich vorgehe und wie unterscheide ich zwischen bösem User und sonstigem Fehler?

    Danke! Freu mich auf Antworten!
  • Bei einem Restore Purchases wird der User zu einem Login aufgefordert. Es wird also nicht funktionieren, dass Du dies einfach mal im Hintergrund startest. Wenn eine App ohne direkte Aufforderung durch mich einen Login für den App Store verlangt, dann werde ich da immer auf Abbrechen drücken. ;)

    Du musst also alle User zu einem Restore Purchases zwingen oder die Hacker weiterhin supporten und bei diesen auf ein echtes Restore Purchases warten.

    Ein Restore Purchases ohne vorherige User Aktion ist laut Apple auch nicht erlaubt, wenn ich dies jetzt noch richtig im Kopf habe.