はじめに
Androidではアプリ上で決済処理を行うためのBilling Libraryの最低バージョンが定期的に更新されており
定期的にBilling Libraryのバージョンを更新する必要があります。
(2022年11月から最低バージョンはBilling Library4.0になります)
UnityではUnity IAPを用いて決済関連の対応を行うことができ、本来はUnity IAPのパッケージを更新すれば良いのですが
Billing Library v3以降を含んだバージョンのUnity IAPを使用すると
「コンビニ決済」機能が勝手に有効になり特殊な対応が必要になってしまいます。
調べてみたところ「コンビニ決済に対応した」という記事は見つかるのですが
「コンビニ決済を無効にした」という情報が全く見つからなかったので
「コンビニ決済」機能を無効にし、Billing Libraryのバージョンを更新対応を行った内容をまとめました。
環境
- Windows11
- Unity 2019.4.26f1
使用しているUnity IAPバージョンを確認
Unity IAPのバージョンは「2.1.0」未満であれば問題ないとは思いますが
今回は「2.0.6」を使用しています。
上記のバージョンのパッケージを導入した状態で
ビルドが成功しapkのビルド、アプリの起動が可能で
決済まわり以外の動作に問題がないか確認しておくと良いです。
Gradleを変更する
AndroidのビルドシステムであるGradleを使用します。
Gradleについて(公式)
ProjectSettings > Player > PublishingSettings > Build
上記部分の各「Custom *** Gradle Template」のチェックボックスにチェックを入れることで
Gradle設定の変更が可能になります。
今回は「Custom Main Gradle Template」を使用します。
チェックを入れるとUnityプロジェクトフォルダ内の
Assets\Plugins\Android
上記フォルダ内に「mainTemplate.gradle」ファイルが出力されます。
ファイルを開くと上部(6行目くらい)に「dependencies」と部分あるので
そこを以下のように変更します。
dependencies {
// もとからある
implementation fileTree(dir: 'libs', include: ['*.jar'])
// ビルド時にこの部分が依存関係の記述に置き換わる
**DEPS**
// ここからカスタム設定
// Billing Library関連の依存関係を解除する
configurations.all {
exclude group: 'com.android.billingclient', module: 'billing'
}
// Billing Library v4の依存関係を追加する
def billing_version = "4.0.0"
implementation "com.android.billingclient:billing:$billing_version"
}
以上でGradleの変更は完了です。
問題なくビルド出来ればOKです。
Gradle周りでビルドエラーになる場合
これまでGooglePlayResolverを使用していた場合
Resolverのメニューから「Delete Resolved Libraries」を実行することで解決する場合があります。
内部テストにて確認を行う
課金の処理が問題ないかを含めてAndroidの内部テストにて確認を行った方が良いかと思います。
GooglePlayConsoleにて内部テスト用のリリース作成時にも対象のapkに対する警告が確認できるので
Billing Libraryの警告が無くなっていればOKです。
なぜ無効になるのか
そもそも何によってコンビニ決済が有効になるかですが
Unity IAP側でBilling Libraryの初期化時にコンビニ決済を有効にしているようでした。
ただ有効化している部分がjarファイルになっており変更が困難なため
- Billing Libraryの初期化時にコンビニ決済を有効にしていないUnity IAPを用意する
- Billing Library自体はv4以降を使用するようにする
上記のように対応した形になります。
最後に
以上でコンビニ決済を無効にすることが可能でした。
ただ、こちらの対応はおそらくイレギュラーな対応になります。
Google側に一度問い合わせたところ原則コンビニ決済には対応してくださいという回答が返ってきました。
対応は行ったものの後々Googleの審査に影響が出る可能性は0ではないということだけご了承ください。