アプリにサブスクリプションを追加するためにアプリ内課金ライブラリを使用しました。すべてが正常に機能していますが、ユーザーの現在のアクティブなサブスクリプションを取得する方法がわかりません。
docs に従って、メソッドqueryPurchaseHistoryAsync
は、購入の有効期限が切れている、キャンセルされている、または消費されている場合でも、各SKUに対してユーザーが行った最新の購入を返します。このため、現在のサブスクリプションがアクティブかどうかを知ることができません。
this postによると、サブスクリプションをキャンセルした場合でも、その日はアクティブであると見なされます。しかし、15日前にキャンセルされたサブスクリプションを応答で取得しています。
どんな助けでもありがたいです。前もって感謝します。
ユーザーのサブスクリプションを照会するには、次の方法を使用します。
public void querySubscriptions() {
Runnable queryToExecute = () -> {
Purchase.PurchasesResult purchasesResult = mBillingClient.queryPurchases(BillingClient.SkuType.SUBS);
if (mBillingClient == null ||
purchasesResult.getResponseCode() != BillingClient.BillingResponse.OK) {
return;
}
mPurchases.clear();
onPurchasesUpdated(BillingClient.BillingResponse.OK, purchasesResult.getPurchasesList());
};
executeServiceRequest(queryToExecute);
}
詳細が必要な場合は、お問い合わせください。
ユーザーはいつでも複数のサブスクリプションをアクティブにすることができます。 isAutoRenewing
メソッドを使用して、サブスクリプションがアクティブかどうかを確認できます。このメソッドのドキュメントは次のとおりです。
サブスクリプションが自動的に更新されるかどうかを示します。 trueの場合、サブスクリプションはアクティブであり、次の請求日に自動的に更新されます。 falseの場合、ユーザーがサブスクリプションをキャンセルしたことを示します。ユーザーは次の請求日までサブスクリプションコンテンツにアクセスでき、自動更新(または手動更新で説明されているように手動更新)を再度有効にしない限り、その時点でアクセスできなくなります。猶予期間を提供する場合、猶予期間が経過していない限り、この値はすべてのサブスクリプションでtrueに設定されたままになります。次の請求日は、猶予期間が終了するまで、またはユーザーが支払い方法を修正するまで、毎日動的に延長されます。