2016-03-30 12 views
1

In meiner App habe ich Elemente nur für Benutzer, die für das Abonnement bezahlen angezeigt werden. Der Benutzer kann sich per E-Mail und Passwort in der App anmelden und sich abmelden und auf demselben Gerät verschiedene Benutzer anmelden.Deaktivieren Sie die Wiederherstellung IAP, wenn das gleiche Apple-Konto, aber andere Benutzerkonto in der Anwendung

Mein Problem ist, dass Apple ID im Telefon immer noch gleich ist. Wenn also ein anderer Benutzer sich anmeldete, konnte er den Kauf wiederherstellen, selbst wenn er nichts bezahlte.

Also meine Frage ist, wie kann ich es beheben? Wie kann ich ein Apple-Konto mit meinem benutzerdefinierten Konto verbinden? Oder zumindest irgendwie beim Versuch, IAP wiederherzustellen, überprüfen Sie, ob dieses Apple-Konto bereits dieses Abonnement hat, aber ein anderer Benutzer angemeldet ist. Wie andere Apps das tun? Danke

Edit: Ich möchte Auto-Erneuerung Abo in meiner App verwenden und ich weiß einfach nicht, wie Sie es mit meinem benutzerdefinierten Account-System verbinden.

+0

Ich denke, Apple würde eine App mit dieser Implementierung ablehnen. In App-Käufe müssen an AppleIDs gebunden sein und Sie sollten nicht angemeldet sein, bevor Benutzer auf IAP-Inhalte zugreifen können. Ich habe gerade ein paar Apps abgelehnt (jetzt akzeptiert) wegen der 17.2 Richtlinie: https://developer.apple.com/app-store/review/guidelines/ – r3c0d3

+0

Ich habe an der App gearbeitet wo wir was gemacht haben nachstehend beschrieben. Allerdings haben wir nicht speziell E-Mail, sondern "Benutzername" verwendet. Sie könnten ihre E-Mail machen, wenn sie wollten. Vor der Verwendung der App war eine Anmeldung erforderlich. –

Antwort

5

Wenn ein Benutzer ein IAP erstellt, werden Sie nicht die Apple ID kennen, die für den Kauf verwendet wurde. Was Sie jedoch wissen werden, ist die Transaktions-ID für den Kauf. Was Sie tun möchten, speichern Sie die Transaktions-ID des ursprünglichen Kaufs mit Ihrem benutzerdefinierten Konto.

Wenn ein Benutzer wiederhergestellt wird, werden Sie feststellen, ob der transactionIdentifier von SKPaymentTransactionOriginalTransaction mit dem benutzerdefinierten Konto übereinstimmt. Wenn nicht, dann können Sie davon ausgehen, dass dies ein anderer Benutzer ist. Sie können hier mehr darüber lesen:

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html

Beachten Sie, dass der Empfang ein Feld der ursprünglichen Transaktion-ID genannt enthält. Dies würden Sie für Abonnements verwenden, um die ursprüngliche Transaktions-ID zu verfolgen. Dies liegt daran, dass bei jeder automatischen Verlängerung eine neue Transaktions-ID für die automatische Verlängerung generiert wird. Die Quittung enthält tatsächlich alle Einkäufe.

Auf Ihrem Server möchten Sie die ursprüngliche Transaktions-ID und möglicherweise die Quittung speichern. Im Wesentlichen, je mehr Metadaten Ihr Geschäft um diese, desto besser werden Sie sein, wenn Sie irgendeine Form von Double-Check-Transaktionen tun müssen.