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.

Apple Wallet拡張機能

Apple Wallet拡張機能

Apple Wallet拡張機能を使用すると、エンドユーザーはイシュアアプリケーションに加えて、Apple Walletアプリケーションから直接カードを見つけてプロビジョニングできるようになります。

アプリケーション拡張機能を通じて、イシュアアプリケーションの外部にカスタム機能やコンテンツを公開し、エンドユーザーがApple Walletまたはシステムとやり取りしている間に利用できるようにできます。

Apple Walletアプリケーション内でカードをプロビジョニングすると、支払いカード情報を手動で入力する必要がなくなるため、アプリ内体験が向上します。

を参照してください。 Apple拡張機能の概要 iOS拡張機能に関する一般的な情報については、

ユーザー体験

Apple Wallet拡張機能のエンドツーエンドのフローには、主に2つのフェーズがあります。

  1. Apple Walletは、イシュアアプリケーションにプロビジョニング可能なカードがあることを検出します。

  2. エンドユーザーは認証を行い、追加するカードを選択します。その後、Apple WalletはD1 SDKを介してイシュアアプリケーションからプロビジョニングペイロードを要求します。

検出と認証

Apple Wallet showing issuer application option for adding a card
カードがプロビジョニング可能な場合、Apple Walletはイシュアアプリケーションを選択肢として表示します。
1

Apple Walletでイシュアアプリケーションを検出する

Apple Walletは、カードが利用可能かどうかを判断するためにイシュアアプリケーションと照会します。カードが利用可能な場合、イシュアアプリケーションはオプションの一覧に表示されます。

2

エンドユーザーがイシュアアプリケーションを選択する

エンドユーザーがイシュアアプリケーションを選択すると、Apple WalletはイシュアアプリケーションのUI拡張機能を起動して、エンドユーザーを認証します。

3

エンドユーザーを認証する

イシュアアプリケーションのUI拡張機能は、メインのイシュアアプリケーションと同じ認証情報と方法(たとえば、手動ログインや生体認証)を使用してエンドユーザーを認証します。

カードの選択とプロビジョニング

Apple Wallet showing available cards from the issuer application
Apple Walletは、イシュアアプリケーションから利用可能なカードを取得して表示します。
1

Apple Walletが利用可能なカードを取得する

Apple Walletは、非UI拡張機能を通じてイシュアアプリケーションから利用可能なカードの一覧を要求します。エンドユーザーには、追加するカードの一覧が表示されます。

2

カードの詳細を表示

エンドユーザーは、カードを追加する前にカードの詳細(たとえば、カードアート、商品名、下4桁の数字)を確認できます。

3

利用規約に同意する

エンドユーザーは、イシュアと決済ネットワークの利用規約を確認し、同意します。

4

プロビジョニングペイロードとトークン化

選択された各カードについて、Apple Walletはイシュアアプリケーションからプロビジョニングペイロードを要求し、その後、決済ネットワークのTSPとのトークン化フローを開始します。

拡張機能

Apple Walletとの統合には、イシュアアプリケーションから2種類の拡張機能が必要です。

  • 非UI拡張機能 拡張機能フローの状態とカードの利用可能性を報告します。これには、カード検出とプロビジョニングペイロードの手順が含まれます。これは、D1 SDKのベースクラスを拡張して実装されます D1IssuerProvisioningExtensionHandler.

  • UI拡張機能 エンドユーザーを認証します。これは、イシュアアプリケーションと同じログイン認証情報を使用する別画面です。次を実装します D1IssuerProvisioningExtensionAuthorizationProviding プロトコル。

Apple Wallet拡張機能は、イシュアアプリケーションと同時にインストールされます。Apple Walletが追加するパスを検出して拡張機能を表示するには、エンドユーザーは少なくとも1回、イシュアアプリケーションを起動する必要があります。

D1 SDKは、非UI拡張機能向けの基本実装を提供するため、完全なロジックを自分で実装する必要はありません。イシュアアプリケーションは D1Task.configure()WalletExtensionConfig とともにアプリケーション起動時に呼び出して、カードの詳細を拡張機能と共有します。この構成はインストール後に1回だけ必要ですが、カード情報を最新の状態に保つため、アプリケーション起動のたびに呼び出すことを推奨します。

High-level flow for configuring the Apple Wallet extension via D1 SDK
高レベルのフロー: イシュアアプリケーションがD1 SDKを構成し、Apple Walletがカードを検出できるようにします。

UI拡張機能で認証に成功した後、イシュアアプリケーションは D1IssuerProvisioningExtensionAuthorizationProviding.bindingHash() を呼び出して、エンコードされたハッシュ済みクライアントバインディングペイロード(cbp)を取得する必要があります。イシュアアプリケーションはこの cbp イシュア トークンを要求する際のイシュア バックエンドへの値。その後、次を呼び出す必要があります D1イシュアProvisioningExtensionAuthorizationProviding.login() これにより、SDK は UI なしの拡張フローを継続できます。

シーケンス図

1. Apple Wallet にイシュアアプリケーションのボタンが表示されます

Sequence diagram showing how Apple Wallet discovers the issuer application
Apple Walletは、イシュアアプリケーションにプロビジョニング可能なカードがあることを検出します。

2. エンドユーザー認証

Sequence diagram showing Apple Wallet triggering issuer UI extension for authentication
Apple Wallet は認証のためにイシュアアプリケーションの UI 拡張機能を起動します。

3. 利用可能なカードが表示されます

Sequence diagram showing Apple Wallet requesting card list from issuer
Apple Wallet は利用可能なカードの一覧を要求し、エンドユーザーに表示します。

4. トークン化

Sequence diagram showing Apple Wallet requesting provisioning payload and tokenizing
Apple Wallet はプロビジョニング ペイロードを要求し、選択したカードをトークン化します。

D1 SDK を介して Apple Wallet を統合する

SDK の設定

を実行するとき iOS SDK の初期化、イシュアアプリケーションも次を呼び出す必要があります configure(ConfigParams.walletExtensionConfig(...)) および以下を指定します:

cardParamsList

単一の consumerId および単一の issuerId:

  • cardParamsList – カード ID、カードアート、商品タイトル、下 4 桁の一覧。カードアートと商品タイトルは Apple Wallet に表示されます。

  • appGroupID – D1 SDK がイシュアアプリケーションとその拡張機能の間でデータを共有できるようにする共有コンテナー ID。

issuerParamsList

複数の組み合わせをサポートする場合は、このバリアントを使用します issuerIdconsumerId:

  • issuerParamsList – の一覧 cardParamsList 対応する issuerIdconsumerId.

  • appGroupID – D1 SDK がイシュアアプリケーションとその拡張機能の間でデータを共有できるようにする共有コンテナー ID。

次の使用を強く推奨します last4 パラメータ。

これがないと last4、SDK は共有デバイスのシナリオでトークン化状態を誤って解釈する可能性があります。たとえば、ユーザー A がカードをトークン化し、その後ユーザー B が同じデバイス上の同じイシュアアプリケーションにログインすると、SDK はユーザー B に対してトークン化がすでに完了していると誤って判断する可能性があります。

App Group ID

既定では、イシュアアプリケーションとその拡張機能はストレージを共有しません。両者でストレージを共有するには app groups を使用してください。詳細は Apple拡張機能の概要 をご覧ください。

appGroupID イシュアアプリケーションとその拡張機能間の共有コンテナを識別します。Xcode では 機能.

Xcode configuration for app groups used by issuer application and extensions
イシュアアプリケーションとその拡張機能のために Xcode で app group を構成する例。

で使用する前に、App Group ID が Xcode に正しく追加されていることを確認してください configure(ConfigParams.walletExtensionConfig(...))。そうでない場合、D1 SDK は invalidAppGroupID エラーを返します。

Apple Pay のエンタイトルメント

アプリ内 Apple Pay のプロビジョニングと同様に、次のエンタイトルメントを追加する必要があります com.apple.developer.payment-pass-provisioning を UI 拡張ターゲットと非 UI 拡張ターゲットの両方に追加してください。オンボーディングの詳細については、Apple Wallet のプロビジョニングドキュメントまたは ウォレット向けプッシュプロビジョニングのオンボーディング.

UI拡張機能

UI 拡張機能を作成する

Xcode dialog for creating an intents UI extension
Apple Wallet UI 拡張機能用に、Xcode で Intents UI Extension ターゲットを作成します。
1

Xcode に次の種類の新しいターゲットを追加します Intents UI Extension.

2

新しいターゲットでは、イシュアアプリケーションと同じ App Group ID とエンタイトルメント値を有効にします。App Group ID が異なる場合、 ログイン APIは次を返します walletExtensionAppGroupIDが見つかりません エラーを返します。

3

拡張機能を更新 Info.plist:

  • 設定 NSExtensionPointIdentifiercom.apple.PassKit.発行者プロビジョニング.認可.

  • 設定 NSExtensionPrincipalClass 〜に準拠するクラスに D1IssuerProvisioningExtensionAuthorizationProviding.

エンタイトルメントと拡張機能の設定の例:

UI拡張機能用のSDKを統合する

D1 SDK は提供します D1IssuerProvisioningExtensionAuthorizationProviding Apple のものを拡張するプロトコル、 PKIssuerProvisioningExtensionAuthorizationProviding および追加し bindingHash()login() API。

UI 拡張では、次に準拠するビューコントローラを実装します D1IssuerProvisioningExtensionAuthorizationProviding、エンドユーザーを認証し、次を呼び出します bindingHash() を取得するために cbp、この情報を使ってイシュアのバックエンドからイシュアトークンを要求し、 cbp、その後次を呼び出します ログイン. あなたの SDKログイン トークン生成のためのドキュメント。

単一のissuerIdでログイン

複数のイシュアIDでログイン

カードが同じ issuerId しかし異なる consumerId 値を持つ場合、1つの イシュアトークン をその issuerId.

非UI拡張機能

UIなしの拡張機能を作成

Xcode dialog for creating an intents extension without UI
Apple Wallet の UIなし拡張機能用に、Xcode で Intents Extension ターゲットを作成します。
1

Xcode に次の種類の新しいターゲットを追加します Intents Extension. クリア UI拡張機能を含める UI拡張機能が以前に作成されていたため。

2

新しいターゲットでは、発行元アプリケーションと同じ App Group ID とエンタイトルメント値を有効にします。App Group ID が異なる場合、D1 SDK の操作は次を返します walletExtensionAppGroupIDが見つかりません エラーを返します。

3

拡張機能を更新 Info.plist:

  • 設定 NSExtensionPointIdentifiercom.apple.PassKit.issuer-provisioning.

  • 設定 NSExtensionPrincipalClass 拡張するクラスへ D1IssuerProvisioningExtensionHandler.

エンタイトルメントと拡張機能の設定の例:

UI以外の拡張機能用のSDKを統合する

D1 SDK は基底クラスを提供します D1IssuerProvisioningExtensionHandler、Appleのものを拡張する PKIssuerProvisioningExtensionHandler そして、必要な API を実装します。ほとんどの場合、このクラスを継承するだけで十分です。

エラー処理

必要に応じてオーバーライドします errorEncountered(_:) UI なしの拡張で、拡張フロー中に受信したエラーをログに記録したり追跡したりします。

典型的なエラーケースには次が含まれます:

  • この appGroupID 無効です、または見つかりません。

  • D1バックエンドがエラーを返します。

Appleの機能要件

Appleの機能要件に合わせるため、D1 SDK D1IssuerProvisioningExtensionHandler およびイシュアアプリケーションは、次の手法を採用します:

  • カードアートとカード所有者名を表示します。

  • AppleがAPIを呼び出してから100ミリ秒以内に、カードが利用可能かどうか(有効性)を判定します。

  • カードアートとアプリアイコンは角を直角にして提供します。

  • UI拡張機能での認証に、手動ログインと生体認証ログインの両方をサポートします。

FAQ

エンドユーザーがログインする前に、イシュアアプリケーションはどのようにしてApple Walletにカードの利用可否を提供できますか?

エンドユーザーは、拡張機能がカードのステータスで更新されるように、少なくとも一度はイシュアアプリケーションにログインする必要があります。イシュアアプリケーションは configure(ConfigParams.walletExtensionConfig()) D1 SDK にカード一覧を提供するため。

ログインに失敗した場合、エラーはどこに表示されますか?

ログインエラーは UI 拡張のログイン画面に直接表示することを推奨します。UI 拡張は、イシュアアプリケーションのログインと同じ UX ガイドラインに従う必要があります。

カード画像のサイズと解像度の要件は何ですか?

デジタルカード画像は Apple の機能要件に従う必要があります:

  • 画像は PNG(推奨)またはベクター PDF で提供してください。

    • Wallet 拡張は、メインアプリよりも厳しいメモリ制限があります。

    • PDF ファイルは、OS が PNG に変換するため、メモリ使用量が増加します。

  • 解像度は 1536 × 969 を使用してください。

  • 画像サイズが 4 MB 未満であることを確認してください。

  • 角は四角形(丸めない)にしてください。

  • 物理カードにのみ存在する要素(たとえば、PAN、エンボス文字、ホログラム、チップ接点)は含めないでください。

  • 横向きで使用してください。物理カードが縦向きの場合は、横向きに変更してください。

  • NFC 支払いがサポートされている場合は、必要に応じて非接触インジケーターを追加してください。

拡張機能には新しいバンドル識別子が必要ですか?

はい。新しいバンドル識別子は、 associatedApplicationIdentifier 支払いネットワークオペレーター(PNO)の。iOS はワイルドカードのバンドル識別子をサポートしています。

イシュアは、PNO API を使用して Apple Wallet 内の既存のパスも更新する必要があります。バンドル ID が含まれていない場合、Apple Wallet 拡張経由で追加されたカードにはイシュアアプリケーションからアクセスできません(たとえば、デジタル化状態の確認など)。

イシュアアプリケーションのアイコンが Apple Wallet に表示されない場合、何が問題なのでしょうか?

次の点を確認してください:

  • イシュアアプリケーションがインストールされており、少なくとも一度は起動されている。

  • イシュアアプリケーションが呼び出す configure(ConfigParams.walletExtensionConfig()) カード一覧を更新するために

  • イシュアアプリケーションと両方の拡張機能が同じ appGroupIDconfigure(ConfigParams.walletExtensionConfig()) および Xcode の機能設定で。

Apple Wallet 拡張を機能させるには、アプリ内プロビジョニングが必要ですか?

はい。Apple Wallet 拡張を追加する前に、イシュアアプリケーションはまずウォレットへのアプリ内プッシュプロビジョニングを実装する必要があります。

最終更新

役に立ちましたか?