Inapp Billing v3 を使用してサブスクリプション機能を備えたアプリケーションを開発しています。アプリケーションにアクセスするためのログイン メカニズムがあります。ユーザー「X」が機能に登録してログアウトした場合。ユーザー「Y」が同じデバイスでアプリケーションにログインし、ユーザーがサブスクライブしようとすると、Google Play は製品が既に購入されていることを伝えます。サブスクリプションは、アプリケーションにログオンしたユーザーではなく、デバイスで同期されたアカウントに基づいていますか? もしそうなら、どのように私のシナリオを実装することが可能ですか?
2 に答える
Google Play アプリ内課金のサブスクリプションは、Google Play アカウントにバインドされています。したがって、Google アカウントが変更されない限り、サブスクリプションはこのアカウントに対して有効であると見なされ、再度購入することはできません。
Google アカウント システムを自分のアカウントに置き換えたい場合は、Google Play を「チート」する必要があります。できることは、いくつかの異なるアプリ内課金サブスクリプション (サブスクリプション #1、サブスクリプション #2 など) のプールを作成することです。サブスクライブするときは、自分のログインをdeveloperPayload
フィールドの追加パラメーターとして渡します。
利用可能なすべてのサブスクリプションを列挙するときに、フィールドに現在のユーザー アカウントがあるサブスクリプションがあるかどうかを確認しdeveloperPayload
ます。そうでない場合は、現在のユーザーがサブスクリプションを持っていないと見なし、生成したサブスクリプションのプール (サブスクリプション #1、サブスクリプション #2 など) から最初のまだ使用されていないサブスクリプションを使用してサブスクライブできるようにします。プール内のサブスクリプションの数が、同じデバイス上のユーザー数よりも多いことを確認してください。
これは簡単な方法ではなく、状況に応じた回避策を見つけるためのチートです。
現在、Google IAB は 1 つのデバイスで 1 つのアカウント (デバイスのプライマリ Gmail アカウント) のみをサポートしています。しかし、Android 4.2 からマルチユーザー機能が利用可能になり、Google は IAB に対して同じサポートを提供することに取り組んでいます。