サブスクリプション製品をAndroidアプリに組み込むところですが、キャンセルされたサブスクリプションについて知るための最良の方法が少しわかりません。ユーザーにキャンセルさせることを計画している唯一の方法は、サブスクリプションを削除することです。 Google Playストアにアクセスして明示的にキャンセルしますが、この場合、バックエンドには通知されません。
Google Play Developer APIのドキュメントには、すべてのサブスクリプションのステータスについてAPIにクエリを実行してはならないと明示的に記載されているので、どのユーザーがサブスクリプションをキャンセルしたかをどのように知る必要がありますか?
どんな助けでも大歓迎です!
サブスクリプションの変更(更新、キャンセルなど)に関するサーバー側の通知を受信できるようになりました。
アプリ内課金APIは、Playが管理するサブスクリプションの状態変化を監視する機能を開発者に提供するサーバープッシュ通知を提供します。
詳細については、このページを参照してください: https://developer.Android.com/google/play/billing/billing_subscriptions.html#realtime-notifications
アプリ内サブスクリプションのドキュメントによると、ユーザーがサブスクリプションをキャンセルしたことを検出するメカニズムはありません。すぐにキャンセルされないので。代わりに、サブスクリプションの有効期限が切れるまでサイクルの終わりを待ちます。
ドキュメントからの抜粋( ソース )
ユーザーがサブスクリプションをキャンセルした場合、GooglePlayは現在の請求期間の払い戻しを提供しません。代わりに、ユーザーは現在の請求サイクルが終了するまでキャンセルされたサブスクリプションにアクセスでき、その時点でサブスクリプションが終了します。たとえば、ユーザーが月額サブスクリプションを購入し、サイクルの15日目にキャンセルした場合、Google Playはサブスクリプションが30日目(または月によっては他の日)の終わりまで有効であると見なします。
ユーザーがサブスクリプションをキャンセルしても、アプリはいかなる種類の通知も受け取りません。
サブスクリプションの動作は、アプリでインベントリをクエリするたびに、サブスクリプションが有効な場合にSKUが返されます。サブスクリプションの有効期限が切れると、インベントリをクエリしたときにSKUは返されません。
このドキュメントによると リンク
サブスクリプションが終わりに近づいているときはいつでもバッチクエリを実行しても問題ありません
ドキュメントからの抜粋( ソース ):
有効期限のみのサブスクリプションステータスのクエリ—サーバーがサブスクリプショントークンの有効期限を取得した後は、サブスクリプションが有効期限に達するか、有効期限を過ぎるまで、GooglePlayサーバーにサブスクリプションステータスを再度照会しないでください。通常、サーバーは毎日バッチクエリを実行して、期限切れのサブスクリプションのステータスを確認してから、データベースを更新します。
次のサーバーAPIを使用すると、サブスクリプションステータスをクエリできます。
変数autoRenewing
およびcancelReason
は、サブスクリプションがキャンセルされたかどうかを通知します。
上記のAPIを使用することで、有効期限が近づいているサブスクリプションのステータスを照会し、キャンセルされたかどうかを判断できるシステムを実装できます。
サブスクリプションのキャンセルの詳細については、こちらをご覧ください リンク 。
注:
ドキュメントには、ユーザーが有効なサブスクリプションを持っている限り、コンテンツを提供し続ける必要があると記載されています。誰かがサブスクリプションをキャンセルした場合にコンテンツへのアクセスを拒否することを計画している場合、Googleポリシーに違反します
ドキュメントからの抜粋( ソース )
重要:すべての場合において、すべてのユーザーがアクセスできる限り、サブスクリプションを通じて購入したコンテンツを引き続き提供する必要があります。つまり、現在の請求サイクルの終了時にサブスクリプションが終了する場合でも、ユーザーがまだアクティブなサブスクリプションを持っている間は、コンテンツを削除しないでください。