InAppPurchaseConnection#queryPastPurchases はどこへ消えた?|InAppPurchase|Android|Flutter
課金済みの「アプリ内アイテム」や「定期購入(サブスクリプション)」を確認するメソッドは何かと調べていると、殆どのサイトで「InAppPurchaseConnection#queryPastPurchases」だと紹介されていた。ChatGPT の回答もそうだった。でも、え、今、in_app_purchase 3.1.5 にこれって無くない?
この件は in_app_purchase: add back queryPastPurchases #82677 の冒頭で問題提起されていた。代わりに「InAppPurchase#restorePurchases」を使うという話で。
The InAppPurchaseConnection.queryPastPurchases method has been removed. Instead, you should use InAppPurchase.restorePurchases
これではダメらしいよ?
※ちなみにこれは Changelog 0.6.0 の内容
復元処理との混同を問題視
「InAppPurchase#restorePurchases」はその名の通り「復元」を目的としているから、呼び出すと購入ステータスが「PurchaseStatus#restored」に変更された状態で購入フローへ流れてくる。
課金済みかどうかの情報を取得したいだけなのに、これでは適切ではないという指摘だね。納得。
課金済みの情報を取得するの?
それで結論として用意されたメソッドが「InAppPurchaseAndroidPlatformAddition#queryPastPurchases」だよ~。
---
if (defaultTargetPlatform == TargetPlatform.android) {
final addition = InAppPurchase.instance.getPlatformAddition<InAppPurchaseAndroidPlatformAddition>();
QueryPurchaseDetailsResponse response = await addition.queryPastPurchases();
}
final addition = InAppPurchase.instance.getPlatformAddition<InAppPurchaseAndroidPlatformAddition>();
QueryPurchaseDetailsResponse response = await addition.queryPastPurchases();
}
---
取得できる内容は「InAppPurchase#restorePurchases」と同じで、重要な点は、これだと購入ステータスが「PurchaseStatus#restored」に変更されていないってこと!
関連する記事
参照した記事
- 【Flutter】in_app_purchaseのrestorePurchasesメソッドをAndroidで使った場合の注意点
- Flutterアプリ内購入サブスクリプション機能を構築する3つの方法
- Understanding `in_app_purchase` APIs in Flutter
- FlutterでKotlin, Dartでの課金
- Flutterのin_app_purchaseプラグインゴミ
直近に読んでいた漫画(おすすめ)
コメント
コメントを投稿