Flutter(android) 定期購入を実装するための準備
まず初めに
in_app_purchaseで実装しようかなと思った時にまず下記を参照すると思います。
plugins/packages/in_app_purchase/in_app_purchase/example at master · flutter/plugins · GitHub
そうするとAndroidはPlay Consoleで商品を登録しないといけないことに気づきます。 iosはとりあえずは、xcode内で完結できる。
課金の商品はapkをアップロードしないと作れなさそう
デバッグビルドってなに?
flutter build apk --debug
play consoleにアップするといろいろ警告が出る
com.android.vending.BILLING 権限を削除する
AIDL から Google Play 請求サービス ライブラリへの移行ガイド | Google Play の課金システム
com.android.vending.BILLING 権限は Google Play 請求サービス ライブラリのマニフェスト内に埋め込まれています。この権限をアプリのマニフェスト内で明示的に追加する必要はなくなりました。
billingclientを加える
plugins/build.gradle at master · flutter/plugins · GitHub
gradleに加えなくてもいいパッケージと加えなきゃいけないパッケージの違いがまだよくわからない。。。
2021/7/8 追記: 最近書いたサンプルだとなくても動く
Note: It is not necessary to depend on com.android.billingclient:billing in your own app's android/app/build.gradle file. If you choose to do so know that conflicts might occur.
署名されていないAPKからBillingClientAPIを使用することはできません
plugins/packages/in_app_purchase/in_app_purchase/example at master · flutter/plugins · GitHub
テストでちょっと利用したい場合も署名が必要なのか。。?
まずはアプリの署名
この辺りでしびれを切らして、デベロッパー登録ずみ。25ドルなんて書籍買うより安い。
Build and release an Android app - Flutter
Androidの公式ではなくて、Flutterの方を見ていく。 Flutterプロジェクのandroid配下をAndroid Studioで開いたりするとうまくいくかもしれないが、 Flutterの記事の方がわかりやすかったので。
Create a keystore
コマンドを実行したときに入力した2つのパスワードは後々必要
key.properties
public source controlには入れてはいけないけど、privateならいいんだろうな。 だから、flutter createした直後の.gitignoreには入ってないんだろうな。
apkをアップロード
失敗パターン
成功
その際signingConfigs.release
じゃないとまずい
plugins/build.gradle at master · flutter/plugins · GitHub
debugなのにreleaseというのがちょっとよくわからない
定期購入が設定できるように
テスター追加
メーリングリスト追加
メーリングリストという表現がわかりづらい
内部テストにテスター追加
上で追加したメーリングリストを有効にする
この時点で、実機ではテスト可能になった。
リリース前レポート
リリース前レポートの説明
リリース前レポートを使って問題を特定する - Play Console ヘルプ
Test Lab 内でそのアプリが Android デバイスセットにインストールされます。その後、アプリが自動的に起動され、数分間クロールされます。
ということは、頑張ればTest Labではテストできる?
リリース前レポートを使って問題を特定する - Play Console ヘルプ
ここを見ると購入はできないらしい。。。
商品の表示ができていたので、もしやと思ったが残念。 上のスクリーンショットでエラーが表示されていたのはそう言うことか。。。
ちなみに、エミュレータでは、購入のテストはできます。ただ少なくとも内部テストにアプリをアップロードする必要はあります。
サービスアカウント作成
Google Play Developer API | Android Developers
上記のドキュメントを見ると
Getting Started | Google Play Developer API | Google Developers
↑に飛ばされるので両方のページをよく見ながら、Play ConsoleとGoogle Cloudを紐付ける
サーバー間アプリケーションでの OAuth 2.0 の使用
アクセス許可(プロジェクトのリンク)を与えると下記のページに誘導される。
Using OAuth 2.0 for Server to Server Applications | Google Identity
話はそれますが、サーバ間のOAuth 2.0は個人的に課題になっていた件
「2本足のOAuth」という記述があったり、1から構築しないといけないような時にも参考になりそうなページ。後からまた見直そう
サービスアカウント(json)のダウンロード
GCP側のコンソールからサービス アカウント(左メニュー)→一覧からさっき作ったアカウントをクリック→キー(上タブ)→「鍵を追加」
これをfunctionsにアップロードしないといけないんだろうけど、個人でBlazeにするのは躊躇。
[余談]nodeのパッケージはこっちが本命
でもplay関連はなさそう。定期的にwatchしないと
[余談] 他のflutterパッケージ
flutter_inapp_purchase | Flutter Package
ドキュメントがわかりやすそう