プッシュプロビジョニング拡張機能
アプリケーション拡張により、イシュアアプリケーションの範囲を超えてカスタム機能やコンテンツを公開できます。これにより、エンドユーザは他のアプリやiOSとやり取りしている際にもそれらにアクセスできます。詳しくは、 Appleの拡張ドキュメント.
Apple Wallet拡張を使用すると、対応するiPhoneおよびApple Watchデバイス上のApple Walletアプリからトークンを直接プロビジョニングできます。
Apple Walletアプリでカードをプロビジョニングすると、アプリ内の体験が向上します。エンドユーザが支払いカードの詳細を手動で入力する必要がなくなります。
注意Apple Wallet拡張はエンドユーザがイシュアアプリケーションをインストールするとインストールされます。Apple Walletが利用可能な
パスを検出して拡張を表示するには、エンドユーザが少なくとも一度イシュアアプリケーションを起動する必要があります。
概要

エンドユーザがApple Walletアプリを起動したとき:
Appleはカードの利用可否を確認するためにイシュアアプリケーションに問い合わせを行い、 status APIを呼び出します。
エンドユーザがイシュアアプリケーションを選択すると、イシュアは UI拡張.
を使用してユーザ認証を要求します。Appleはイシュアアプリケーションに対して利用可能なカードを確認し、カードをエンドユーザに表示します。Appleは passEntries APIをiPhone向けに、またWatch向けには remotePassEntries を呼び出します。
エンドユーザは1つ以上のカードを選択します。選択された各カードについて、Appleはイシュアアプリケーションからプロビジョニングペイロードを要求します。Appleはその後、 generateAddPaymentPassRequest APIを呼び出します。
注意
を呼び出してプロビジョニングフローを続行します。
Push Provisioning SDKは、generateAddPaymentPassRequestForInputAPIを使用してステップ4のプロビジョニングペイロードを取得します。
ステップ2の認証データをステップ3および4でカード詳細を取得するために使用する場合は、有効期限を十分な値に設定してください。例えば5分などです。
Apple Wallet拡張はイシュアアプリケーションに2つの拡張を必要とします: 拡張のステータスとイシュアアプリケーション内でのカード検出可能性を報告する非UI拡張。これはステップ1、3、および4をカバーします。これを実装するには、 PKIssuerProvisioningExtensionHandler
のスーパークラスを拡張してください。 ステップ2でエンドユーザを認証するためのUI拡張。これは同じイシュアアプリケーションのログイン資格情報を使用する別画面です。これを実装するには、 PKIssuerProvisioningExtensionAuthorizationProviding
プロトコルに準拠してください。
Push Provisioning SDKを介したApple Walletの統合
アプリ構成
Push Provisioning SDKに特別な追加構成は必要ありません。ただし、イシュアアプリケーションにApp Group IDを設定する必要があります。これをイシュアアプリケーションとその拡張間の共有コンテナの構成に使用します。
その後、イシュアアプリケーションはこのコンテナを使用してカードの詳細(PANの下4桁やカードデザインなど)や認証データを保存でき、拡張は同じデータを取得できます。 Appleの拡張ドキュメント.
デフォルトでは、イシュアアプリケーションは拡張とストレージを共有しません。イシュアアプリケーションとその拡張の両方がApp Groupを使用してストレージを共有する必要があります。詳しくは、 Xcodeで、CapabilitiesタブにApp Group IDを追加します。以下のように。詳しくは、.

AppleのApp Groupsドキュメント
let status = SecItemUpdate(query as CFDictionary, updatedData as CFDictionary)
Apple Payのエンタイトルメント Apple Payのプロビジョニングフローと同様に、アプリ開発者はUIおよび非UI拡張ターゲットの両方に com.apple.developer.payment-pass-provisioning エンタイトルメントを追加する必要があります。詳しくは、.
SDKの構成
UI拡張
UI拡張はユーザ認証を行うために使用されます。SDKはその機能を提供しないため、イシュアアプリケーションはこの拡張内に独自の認証UIを実装する必要があります。
UI拡張を作成する Xcodeで、タイプが.
Intents UI Extension

の新しいターゲットを追加します。
</dict>
</plist>Info.plistの値を次の値に置き換えてください:
NSExtensionPointIdentifier
com.apple.PassKit.issuer-provisioning.authorization
NSExtensionPrincipalClass
このクラスは次に準拠します: ステップ2でエンドユーザを認証するためのUI拡張。これは同じイシュアアプリケーションのログイン資格情報を使用する別画面です。これを実装するには、.
Wallet UI ExtensionのInfo.plistの例:
UI拡張を実装する ステップ2でエンドユーザを認証するためのUI拡張。これは同じイシュアアプリケーションのログイン資格情報を使用する別画面です。これを実装するには、 プロトコル
Apple Wallet拡張でのエンドユーザ認証は、プロトコル ステップ2でエンドユーザを認証するためのUI拡張。これは同じイシュアアプリケーションのログイン資格情報を使用する別画面です。これを実装するには、.
に準拠することで実装されます。
Appleはこれをオプショナルとしていますが、プロビジョニング前にエンドユーザを認証することを推奨します。
//self.completionHandler?(.canceled)
非UI拡張 Push Provisioning SDKは、.
非UI拡張はカードの利用可否とカード詳細を報告します。また、プロビジョニングペイロードを取得するために
UI拡張を作成する を呼び出します。非UI拡張を作成する Intents Extension 。
前節でUI拡張を作成したため、

Include UI Extension
</dict>
</plist>Info.plistの値を次の値に置き換えてください:
NSExtensionPointIdentifier
チェックボックスはオフにしてください。
NSExtensionPrincipalClass
新しく作成したターゲットにエンタイトルメントと(オプションで)App Group IDを追加します。これらの値はイシュアアプリケーションで定義したものと同じです。 拡張のステータスとイシュアアプリケーション内でのカード検出可能性を報告する非UI拡張。これはステップ1、3、および4をカバーします。これを実装するには、.
WalletExtensions.entitlementsの例:
WalletのNon-UI拡張Info.plistの例: 拡張のステータスとイシュアアプリケーション内でのカード検出可能性を報告する非UI拡張。これはステップ1、3、および4をカバーします。これを実装するには、 <string>com.apple.PassKit.issuer-provisioning</string>
<string>$(PRODUCT_MODULE_NAME).IntentHandler</string> 拡張のステータスとイシュアアプリケーション内でのカード検出可能性を報告する非UI拡張。これはステップ1、3、および4をカバーします。これを実装するには、 非UI拡張を実装する
スーパークラス
WalletのNon-UI拡張Info.plistの例: status let data = item as? Data {
return String(data: data, encoding: .utf8) status return nil
API Appleは利用可能なカードがあるかをイシュアアプリケーションに確認するために APIを呼び出します。
Appleはハンドラからの戻りに対して100msの時間制限を課します。これを超えると、Apple Walletアプリがイシュアアプリケーションを表示しない可能性があります。ローカルのキーチェーングループからカード情報を取得することを推奨します。その後、Push Provisioning SDKの Appleは利用可能なカードがあるかをイシュアアプリケーションに確認するためにgetToken APIを使用してカードがデジタル化されているかを確認します。.
を呼び出す前に、Push Provisioning SDKを configure
WalletのNon-UI拡張Info.plistの例: passEntries let data = item as? Data {
return String(data: data, encoding: .utf8) passEntries // pass と remotePass の両方が利用可能であれば、これ以上繰り返す必要はありません。
if status.passEntriesAvailable && status.remotePassEntriesAvailable {
break
APIはiPhoneに追加してエンドユーザに表示するためのカード詳細を要求するためのものです。
カードを正しく表示するために次の情報を提供する必要があります:
カードデザイン
カード所有者名
PANの下4桁
generateAddPaymentPassRequestlet data = item as? Data {
カードスキーム
を呼び出す前に、Push Provisioning SDKを カード製品のタイトル
art: art, remotePassEntries let data = item as? Data {
addRequestConfiguration: config) else { passEntries entries.append(entry) remotePassEntries completion(entries)
非UI拡張を実装する
を呼び出す前に、Push Provisioning SDKを と同様に、
art: art, generateAddPaymentPassRequest let data = item as? Data {
TPCSDK.getToken(input: GetTokenInput(last4: last4)) { _, remote, error in generateAddPaymentPassRequest remoteEntries.append(entry)
completion(remoteEntries) Push Provisioning SDKは、 エンドユーザがプロビジョニングするカードを選択した後、Appleはプロビジョニングペイロードを取得するために
非UI拡張を実装する
を呼び出す前に、Push Provisioning SDKを APIを呼び出します。
TPCSDK.generateAddPaymentPassRequestForInput(sdkInput) { request, error in
completion(nil)
completion(request)
Appleの機能要件
Appleの機能要件に合わせるため、イシュアアプリケーションは次の慣行を採用する必要があります:
カードデザインとカード所有者名を表示すること。
カードデザインおよびアプリアイコンには角を丸めず四角のエッジを使用すること。
UI拡張での認証に対して手動ログインと生体認証の両方をサポートすること。
AppleがAPIを呼び出した後、100ms以内にカードの有効性を確認すること。
FAQ
エンドユーザがログインする前にカードがプロビジョニング可能かどうかをApple Walletに提供するために、イシュアアプリケーションはどのように情報を提供すべきですか?
エンドユーザは少なくとも一度イシュアアプリケーションにログインする必要があります。これにより、エンドユーザがApple Wallet拡張を使用する前に拡張がカードのステータスで更新されます。
ログインが失敗した場合、アプリはどこにエラーを表示しますか?
ログイン画面にエラーを表示することを推奨します。UI拡張は典型的なアプリのログインと同じポリシーに従います。
カード画像のサイズと解像度の要件は何ですか?
デジタルカード画像はAppleの機能要件に従うべきです:
ベクターPDF(推奨)またはラスターPNGを使用してください。
1536 x 969の解像度を使用してください。
画像サイズを4 MB未満にしてください。
角は丸めず四角にしてください。
カード番号、エンボス文字、ホログラム、チップ接点などの物理専用要素は除外してください。
ランドスケープ(横向き)を使用してください。物理カードがポートレート(縦向き)の場合は横向きに再配置してください。 非接触(Contactless)インジケータはNFC決済が許可される場所で追加することができます。 Apple Wallet拡張には新しいバンドル識別子が必要ですか? パス はい。新しいバンドルIDをPNOの
associatedApplicationIdentifier 非接触(Contactless)インジケータはNFC決済が許可される場所で追加することができます。に追加してください。iOSはワイルドカードのバンドル識別子をサポートします。イシュアは既存の Appleは利用可能なカードがあるかをイシュアアプリケーションに確認するために).
をPNO APIを使ってApple Wallet内で更新する必要があります。
バンドルIDが
に含まれていない場合、イシュアアプリケーションはApple Wallet拡張を通じて追加されたカード(例:
経由で)のアクセスができない可能性があります。 イシュアアプリケーションのアイコンが表示されない場合、何が問題でしょうか? 新しいイシュアアプリケーションがインストールされ、少なくとも一度開かれてApple Wallet拡張が更新されていることを確認してください。」「t346":"イシュアはApple Wallet拡張が動作するためにIn-App Provisioningを実装する必要がありますか?","t347":"はい。イシュアアプリケーションはApple Wallet拡張を実装する前に","t348":"Push Provisioning","t349":"を実装する必要があります。
最終更新
役に立ちましたか?