Welcome to our new developer portal! Use the "Ask" button to chat with our AI Agent.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

AndroidでNFC決済を制御する

概要

Android のシステム設定により、あなたの デジタルウォレットアプリケーション が正しくても、非接触決済がブロックされることがあります。

このページでは、NFC 決済に影響する Android の制御項目と、それらをサポートするためのアプリ側の要件について説明します。

NFC 決済に影響するデバイス設定

NFC の切り替え

Android には、Wi‑Fi やモバイルデータと同様の、NFC のマスター スイッチがあります。

非接触決済を実行するには NFC を有効にする必要があります。エンドユーザーは、決済をブロックするために NFC を無効にすることもできます。

例: クイック設定の NFC 切り替え

デバイスのロック解除を必須にする(Android 12+)

一部のデバイス(Android 12+)では、デバイスのロックが解除されているときのみ NFC が機能するように設定できます。

有効になっている場合、エンドユーザーはタップする前にデバイスのロックを解除する必要があります。

例: NFC に対してロック解除済みデバイスを必須にするオプション

アプリケーション ソースの選択(OEM 固有)

一部のデバイスは複数の「支払い場所」(たとえば、セキュア エレメントと HCE)をサポートしています。

デバイスのハードウェアは、受信した NFC コマンドを選択された場所にルーティングします。

例: 非接触決済用のアプリケーション ソース選択

NFC Wallet SDK はホストベースのカード エミュレーション(HCE)を使用します。

デバイスでアプリケーション ソース設定が表示される場合は、次に相当するオプションを選択するようエンドユーザーに案内してください HCE Wallet.

デフォルトの支払いアプリケーション

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

例: デフォルトの支払いアプリケーション設定

一部のデバイスでは、次のようなスイッチも表示されます 現在開いているアプリで支払う.

これにはアプリ側のサポートが必要です。次を参照してください 「現在開いているアプリで支払う」をサポートする.

デジタルウォレット アプリケーションの要件(HCE)

あなたの デジタルウォレットアプリケーション は HCE サービスを宣言する必要があります。

NFC Wallet SDK は HCE サービスを自動では宣言しません。代わりに次を提供します AbstractHCEService 実装を簡素化するためのものです。

背景については、次を参照してください ホストベースのカードエミュレーションの概要.

デフォルトの支払いアプリケーションを検出して要求する

起動時には、次を推奨します:

Android はシステム ダイアログを表示します。アプリのラベルを除き、そのテキストは変更できません。

例: デフォルトの支払いアプリを変更する Android ダイアログ

ユーザーの選択を監視するには、次を呼び出します startActivityForResult そして、次で結果を確認します onActivityResult:

Android 設定でのアプリの表示方法を制御する

Tap & Pay / Contactless payments の UI は、OEM、モデル、Android のバージョンによって異なります。

例: デバイス間での Tap & Pay UI の違い

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#setPreferredServiceCardEmulation#unsetPreferredService Android のガイドラインに従ってください。

その Activity に渡される setPreferredService(...) は再開状態である必要があります。

呼び出します setPreferredService(...) 次に Activity#onResume.

呼び出します unsetPreferredService(...) 次に Activity#onPause.

使用する CardEmulation#categoryAllowsForegroundPreference を使用して、支払いカテゴリでフォアグラウンド優先が許可されているかどうかを検出します。

推奨事項:

  • 次を使用してフォアグラウンド優先が有効かどうかを確認する CardEmulation.categoryAllowsForegroundPreference(CATEGORY_PAYMENT).

  • 前述のとおり、デフォルト アプリケーションの上書きを実装してください。

  • デジタルウォレット アプリケーションがフォアグラウンドにあるときにのみ非接触取引を処理する場合は、支払い体験が一貫しない可能性があることをエンドユーザーに警告してください。

最終更新

役に立ちましたか?