しかし、サブスクリプションをキャンセルしてアプリをアンインストール (および再度再インストール) すると、購入状態の変更 (onPurchaseStateChange) がトリガーされますか (この場合、新しい購入/サブスクリプションを作成できるため)、またはどのように機能しますか?
アンインストール/再インストール後でも、サブスクリプションはアクティブに表示されます。確かに、それはアクティブだからです。このコンテキストでのキャンセルは、現在のサイクルの終了後にユーザーに自動的に請求されないことを意味します。
アプリで HTTP ベースの API を使用して購入状態をリクエストすることもできますが (?)、アクティブな請求サイクル中に CANCELED が返されますか?
はい、Google Play Android Developer APIを使用できます。この API には認証トークンが必要であることに注意してください。また、アプリの公開に使用したのと同じ Google アカウントを使用する必要があります。したがって、セキュリティ上の理由から、これは独自のサーバーで行う必要があります。
しかし、ここで面白いことに、API を使用して最近キャンセルされたサブスクリプションを確認しても、有効であるように見えます。
この例として、キャンセルされたサブスクリプションを確認するための API への呼び出しが挙げられます。
https://www.googleapis.com/androidpublisher/v1.1/applications/YOUR-PACKAGE-NAME/
subscriptions/THE-SUBSCRIPTION-SKU/
purchases/PURCHASE-TOKEN-GOES-HERE?access_token=AUTH-TOKEN-GOES-HERE
結果は次のようになります。
{
"kind": "androidpublisher#subscriptionPurchase",
"initiationTimestampMsec": "1379986154994",
"validUntilTimestampMsec": "1382621354994",
"autoRenewing": false
}
したがって、サブスクリプションがキャンセルされたかどうかを知る必要がある唯一のヒントはautoRenewing
、false に設定されていることです。これは、サブスクリプション コンテンツの提供を停止する必要があるという意味ではありません。ドキュメントが共感するように:
重要: いずれの場合も、ユーザーがアクセスできる限り、サブスクライバーがサブスクリプションを通じて購入したコンテンツを提供し続ける必要があります。つまり、サブスクリプションが現在の請求サイクルの終了時に終了する場合でも、ユーザーがまだアクティブなサブスクリプションを持っている間は、サブスクライバーのコンテンツを削除してはなりません。サブスクライバーがアクセスできるコンテンツを削除すると、ペナルティが発生します。詳細については、ポリシー ドキュメントを参照してください。