9

私のアプリには、購読料を支払っているユーザーだけに表示するアイテムがあります。ユーザーは電子メールとパスワードでアプリにログインでき、ログアウトでき、同じデバイスで別のユーザーをログインできます。

私の問題は、電話のApple IDがまだ同じであることです。そのため、別のユーザーがログインすると、何も支払わなくても購入を復元できました。

私の質問は、どうすれば修正できますか?Apple アカウントをカスタム アカウントに接続するにはどうすればよいですか? または、少なくとも何らかの形で IAP を復元しようとするときに、この Apple アカウントには既にこのサブスクリプションがあるが、別のユーザーがログインしていることを確認してください。他のアプリはどのようにこれを行うのでしょうか? ありがとう

編集: アプリで自動更新サブスクリプションを使用したいのですが、それをカスタム アカウント システムに接続する方法がわかりません。

4

1 に答える 1

17

ユーザーが IAP を作成するとき、購入に使用された Apple ID はわかりません。ただし、購入のトランザクション ID はわかります。あなたがしたいことは、カスタムアカウントで元の購入のトランザクションIDを保存することです.

ユーザーが復元すると、SKPaymentTransaction の originalTransaction の transactionIdentifier がカスタム アカウントと一致するかどうかを判断します。そうでない場合は、これが別のユーザーであると見なすことができます。詳細については、こちらをご覧ください。

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

レシートには、元のトランザクション ID と呼ばれるフィールドが含まれていることに注意してください。これは、サブスクリプションで元のトランザクション ID を追跡するために使用するものです。これは、自動更新するたびに、自動更新用に新しいトランザクション ID が生成されるためです。領収書には実際にすべての購入品が含まれます。

サーバーでは、元のトランザクション ID と、場合によっては領収書を保存する必要があります。基本的に、これに関連するメタデータが多いほど、トランザクションを二重チェックする必要がある場合に有利になります。

于 2016-04-03T05:58:03.563 に答える