AndroidでNFC決済を制御する
概要
Android のシステム設定により、あなたの デジタルウォレットアプリケーション が正しくても、非接触決済がブロックされることがあります。
このページでは、NFC 決済に影響する Android の制御項目と、それらをサポートするためのアプリ側の要件について説明します。
NFC 決済に影響するデバイス設定
NFC の切り替え
Android には、Wi‑Fi やモバイルデータと同様の、NFC のマスター スイッチがあります。
非接触決済を実行するには NFC を有効にする必要があります。エンドユーザーは、決済をブロックするために NFC を無効にすることもできます。

デバイスのロック解除を必須にする(Android 12+)
一部のデバイス(Android 12+)では、デバイスのロックが解除されているときのみ NFC が機能するように設定できます。
有効になっている場合、エンドユーザーはタップする前にデバイスのロックを解除する必要があります。

アプリケーション ソースの選択(OEM 固有)
一部のデバイスは複数の「支払い場所」(たとえば、セキュア エレメントと HCE)をサポートしています。
デバイスのハードウェアは、受信した NFC コマンドを選択された場所にルーティングします。

デフォルトの支払いアプリケーション
Android では、Tap & Pay のデフォルトの支払いアプリケーションをエンドユーザーが選択できます。

デジタルウォレット アプリケーションの要件(HCE)
あなたの デジタルウォレットアプリケーション は HCE サービスを宣言する必要があります。
NFC Wallet SDK は HCE サービスを自動では宣言しません。代わりに次を提供します AbstractHCEService 実装を簡素化するためのものです。
背景については、次を参照してください ホストベースのカードエミュレーションの概要.
デフォルトの支払いアプリケーションを検出して要求する
起動時には、次を推奨します:
次を使用して、あなたの HCE サービスがデフォルトかどうかを確認する CardEmulation#isDefaultServiceForCategory.
そうでない場合は、次を起動して、アプリをデフォルトの支払いサービスとして設定するようエンドユーザーに促します CardEmulation#ACTION_CHANGE_DEFAULT.
Android はシステム ダイアログを表示します。アプリのラベルを除き、そのテキストは変更できません。

ユーザーの選択を監視するには、次を呼び出します startActivityForResult そして、次で結果を確認します onActivityResult:
Android 設定でのアプリの表示方法を制御する
Tap & Pay / Contactless payments の UI は、OEM、モデル、Android のバージョンによって異なります。

Android は、次のリソースを使用してアプリケーションの項目を表示します:
AndroidManifest.xml支払いサービスのメタデータ リソース(次を介して宣言)
/manifest/application/service/meta-data/@android:resource)
制御できる項目:
アプリケーション アイコン:
/manifest/application/@android:icon支払いサービス バナー:支払いサービスのメタデータ、
/host-apdu-service/@android:apduServiceBanner支払いサービス ラベル:
/manifest/application/service/@android:labelこのラベルは、「デフォルトの支払いアプリを設定」ダイアログでも使用されます。
支払いサービスの説明:支払いサービスのメタデータ、
/host-apdu-service/@android:description
リスト内のアプリケーションの並び順は制御できません。
フォアグラウンド アプリで支払う
一部のデバイスでは、次のような設定が表示されます 現在開いているアプリで支払う または 現在実行中のアプリを優先する.
この設定は、エンドユーザーがフォアグラウンド アプリにデフォルトの支払いサービスを上書きすることを許可する、という意味にすぎません。この動作を強制するものではありません。
これを活用するには、次を実装します CardEmulation#setPreferredService と CardEmulation#unsetPreferredService Android のガイドラインに従ってください。
推奨事項:
次を使用してフォアグラウンド優先が有効かどうかを確認する
CardEmulation.categoryAllowsForegroundPreference(CATEGORY_PAYMENT).前述のとおり、デフォルト アプリケーションの上書きを実装してください。
デジタルウォレット アプリケーションがフォアグラウンドにあるときにのみ非接触取引を処理する場合は、支払い体験が一貫しない可能性があることをエンドユーザーに警告してください。
最終更新
役に立ちましたか?