> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/classic-push-provisioning/ja/gaido/toraburushtingu/ios.md).

# iOS

### Push Provisioning SDKログの取得 <a href="#retrieving-push-provisioning-sdk-logs" id="retrieving-push-provisioning-sdk-logs"></a>

Push Provisioning SDKデバッグライブラリを使用してログを取得できます。次の場所で行ってください `Console.app`:

* フィルタ： `TPCSDK` で `Console.app`.
* の `Console.app` ウィンドウで、次の両方が有効になっていることを確認してください `情報メッセージを含める` および `デバッグメッセージを含める` が選択されていることを確認します。以下を参照してください。

<figure><img src="/files/33bb605337422e32ace55755ccddf23abbae8080" alt=""><figcaption><p>Console.appのフィルタとログレベル設定の例。</p></figcaption></figure>

本番環境でもログを取得できます。Push Provisioning SDKデバッグライブラリを使用する必要があります。

### Apple Payログの取得 <a href="#retrieving-apple-pay-logs" id="retrieving-apple-pay-logs"></a>

1. 次のデバイスには、Appleの特定のプロビジョニングプロファイルを使用してください：
   * iPhone： [iOSプロビジョニングプロファイル](https://developer.apple.com/services-account/download?path=/iOS/iOS_Logs/WalletFull.mobileconfig).
   * iWatch： [iWatchプロビジョニングプロファイル](https://developer.apple.com/services-account/download?path=/iOS/watchOS_Logs/WalletFull.mobileconfig).
2. アプリケーションが実行されていると、Console.appで `PassbookUIService` プロセスをフィルタリングしてログを表示できます。

詳細については、次を参照してください [Apple Payのプロファイルとログ](https://developer.apple.com/bug-reporting/profiles-and-logs/?name=Apple%20Pay).

### サーバーエラー <a href="#server-errors" id="server-errors"></a>

サーバー関連のエラーが発生した場合、APIリクエストIDを次の `TPCError` `requestId` パラメータから取得できる場合があります。問題をサポートチームに報告する際はこのリクエストIDを使用してください。

### 一般的なエラー <a href="#common-errors" id="common-errors"></a>

#### サンドボックス環境でカードを追加できない <a href="#unable-to-add-card-using-sandbox-environment" id="unable-to-add-card-using-sandbox-environment"></a>

考えられる原因：

* デバイスがSandboxのiCloudアカウントでサインインされていない。
* 使用中のPANがSandbox PANではない。詳細は次を参照してください [Appleのサンドボックステスト](https://developer.apple.com/apple-pay/sandbox-testing).

#### Push Provisioning SDK `getToken`/`getCardDigitizationResult` APIはまだ `nil`/`CardNotDigitized` を返します。カードのプロビジョニング処理後に。 <a href="#push-provisioning-sdk-gettokengetcarddigitizationresult-api-still-returns-nilcardnotdigitized-after" id="push-provisioning-sdk-gettokengetcarddigitizationresult-api-still-returns-nilcardnotdigitized-after"></a>

考えられる原因：

* 本番環境でのテストでは、必要な承認の後、Ad Hocプロビジョニングプロファイル、TestFlight、またはApp Store（例えばプロモコード経由）を使用して本番デバイスでテストしてください。
* プロビジョニングプロファイルに正しいエンタイトルメントが含まれていません。この [ガイド](/classic-push-provisioning/ja/gaido/sdkno/ios.md) を参照してエンタイトルメントを設定してください。
* 発行者アプリケーションの詳細が支払いネットワーク事業者（PNO）のシステム（VisaおよびMastercard）で誤って構成されている可能性があります。Appleの仕様に従い、PNOシステムで発行者アプリケーションの詳細を次の形式で構成してください：
  * `associatedApplicationIdentifiers`: `TeamId.BundleId`
  * `associatedStoreIdentifier`: `AdamId`
  * `appLaunchUrl`: [あなたのアプリケーションのURL](https://developer.apple.com/documentation/xcode/allowing_apps_and_websites_to_link_to_your_content/defining_a_custom_url_scheme_for_your_app).

次の図は、どこに構成するかを示しています `アプリケーション識別子/ADAM` IDおよび `アプリケーションURL` をMastercardで。

<figure><img src="/files/a6a79c58ff5d3ec87b40d08cc38b26efacfe2ecd" alt=""><figcaption><p>アプリケーション識別子とアプリケーションURLのMastercard設定例。</p></figcaption></figure>

#### 利用規約より前にカードが追加されていない <a href="#card-not-added-before-tcs" id="card-not-added-before-tcs"></a>

<figure><img src="blob:https://thales-dis-dbp.stoplight.io/723646d7-36c3-4d76-8e9a-55baa642bcff" alt=""><figcaption><p>「利用規約より前にカードが追加されていない」エラーの例。</p></figcaption></figure>

<figure><img src="/files/cc59b46499e0ebf559a6339c786867b391937f06" alt=""><figcaption><p>プロビジョニング失敗をトラブルシューティングするために使用されるログ表示の例。</p></figcaption></figure>

右上の検索バーにデバイスのSEIDを入力します。これによりリクエストとレスポンスを含むログが返されます。ログ出力を確認し、 `request` メッセージ（下図のように）を選択します。強調表示されたフィールドは選択したメッセージのデータを示します。

このユースケースでは、次を検証します `encryptedPassData` および `ephemeralPublicKey`. これはデバイスからサーバーに送信されたデータです。

下の図では、ログアーカイブのリクエスト/レスポンスも表示できます。サーバーの応答はより読みやすい形式で示され、エラーコードが強調表示されます。レスポンスは `エラー500`を返します。これは汎用エラーです。解決策は次のセクションに記載されています。

```
Response: ...[ここにログされていないその他のデータ]
{
   ...[ここにログされていないその他のデータ]
}
{
   statusCode = 500;
   statusMessage = "Broker Service Response exception";
}
```

<figure><img src="/files/f60921766227209305003290c24d7a3876aa07e7" alt=""><figcaption><p>サーバーエラーが強調表示されたログアーカイブレスポンスの例。</p></figcaption></figure>

考えられる原因：

* 暗号化エラー、不正なデータエンコーディング、または無効なJSON辞書。

  暗号実装とデータ形式を検証してこれを解決してください。
* ホワイトリスト（誤ったAdam IDがホワイトリスト化されている）

  これは本番環境でのテストにのみ適用されます。

  * 発行者はアプリのAdam IDのホワイトリスト登録をリクエストしていますか？
  * はいの場合、発行者はAppをTestFlightで配布していますか？TestFlightでは、サポートされる最小ビルドをiOS 10.3に設定する必要があります。発行者アプリケーションがApp Store向けにビルドされたら、サポートされる最小iOSバージョンをiOS 9.0以降に戻すことができます。
* 利用規約やカードアートなどのリソースの読み込みに問題がある。

  これは可能性が低いです。通常は、支払いネットワークポータルの構成が頻繁に変更されるプレプロダクション環境で発生します。

  これを除外するために、Apple Walletでカードを手動で追加してみてください。利用規約が表示されればこの問題は除外できます。手動でのプロビジョニングが失敗する場合は、PNOに連絡して利用規約を再アップロードしてください。

#### 適格でないカード <a href="#in-eligible-card" id="in-eligible-card"></a>

<figure><img src="/files/92bde4555cd02ae6f4fa326edaa84dc2c4dc9339" alt=""><figcaption><p>適格でないカードの応答の例。</p></figcaption></figure>

「利用規約より前にカードが追加されていない」シナリオとは異なり、サーバーはステータスコード `200`を返します。これはリクエストが正常に完了したことを意味します。ただし、レスポンスはカードが適格でないことを示します（例えば、 `eligibilityStatus=0`).

```
{
   "Content-Length" = 57;
   "Content-Type" = "application/json";
   Date = "Tue, 21 May 2019 04:40:57 GMT";
   "x-conversation-id" = 086063f209b34b84bee028a75c6af0f2;
   ...[ここにログされていないその他のデータ]
} 
{
   errorCode = 40403;
   ...[ここにログされていないその他のデータ]
}
```

この問題は、Apple Payに適格でないカード詳細が原因です（例えば、PNO/発行者によって許可リストに載っていない）。

カードが正しく構成されているかPNOに確認してください。

#### 発行者がプロビジョニングを拒否：'レッドフロー'の応答 <a href="#issuer-declines-provisioning-red-flow-response" id="issuer-declines-provisioning-red-flow-response"></a>

<figure><img src="/files/8ab635d968a3df0e9608602f8aff83fdd9cfe5f3" alt=""><figcaption><p>エンドユーザーに表示される「レッドフロー」応答の例。</p></figcaption></figure>

エンドユーザーが利用規約に同意した後の失敗は、発行者側の拒否によって引き起こされることが多いです。この拒否は `レッドレスポンス`.

で表されます。 `40403`これは発行者が試行を拒否した場合、または応答の処理に時間がかかりすぎるためにPNOが発行者の代わりに応答した場合に発生することがあります。このエラーのログには通常エラーコード

```
{
   "Content-Length" = 57;
   "Content-Type" = "application/json";
   Date = "Tue, 21 May 2019 04:40:57 GMT";
   "x-conversation-id" = 086063f209b34b84bee028a75c6af0f2;
   ...[ここにログされていないその他のデータ]
} 
{
   errorCode = 40403;
   ...[ここにログされていないその他のデータ]
}
```

が表示されます。デバイスは「カードを追加できませんでした。後でもう一度お試しください、または詳細はカード発行会社にお問い合わせください」と表示することがあります。 `レッドフローは発行者のPNOによって返されます。PNOに連絡して`conversationID

#### を提供してください。PNOはそれを使用して根本的な理由を特定できます。 <a href="#unknown-card-type" id="unknown-card-type"></a>

不明なカードタイプ

```
このエラーはバンドル識別子が正しくないときに発生します。Appleはバンドル識別子の変更を推奨しています。以下はエラーの例です：

PassbookUIService         AMSCardEnrollmentEligibilityTask: [D72FE7E2] Attempting to determine card type for passTypeIdentifier: paymentpass.com.apple, serialNumber: nc.prod.cert_5395c9ae24b346e7ad08fcca25a46912

PassbookUIService         tcp_input [C127.1:3] flags=[F.] seq=1370165038, ack=1840204742, win=502 state=CLOSED rcv_nxt=1370165014, snd_una=1840204718

PassbookUIService         AMSCardEnrollmentEligibilityTask: [D72FE7E2] Card is unknown type of PKPaymentPass

PassbookUIService         PKNotifyCoalescer: unregistered for notification com.apple.NPKCompanionAgent.listener.resumed.

PassbookUIService         {public}<private>:0x282608f30 (0x282530a00): Tearing down existing connection

PassbookUIService         AMSCardEnrollmentEligibilityTask: [D72FE7E2] Found card type: 0

                PassbookUIService         AMSURLRequestEncoder: [D72FE7E2] Encoding request for URL: https://p19-buy.itunes.apple.com/account/stackable/applePay/silentEnroll/eligible {

                account = <ACAccount: 0x282d2e5a0 type = iTunesStore | backingID = BE105BB6-8208-4E56-AEA9-8615DE4C093F | username = proccotester@gmail.com | altDSID = 000014-10-8f1f9b5d-1c5e-4f41-b9e4-85ee3dc81e11 | DSID = 20100559835 | active = true | storefront = 143441-1,29>
```

#### mediaType = com.apple.AppleMediaServices.accountmediatype.production `1` <a href="#push-provisoning-returns-status-code-1" id="push-provisoning-returns-status-code-1"></a>

* Push provisioningはステータスコードを返します [Appleのサンドボックステスト](/classic-push-provisioning/ja/gaido/sandobokkusutesuto.md) PPROD: Apple Sandboxテストアカウントを使用してテストがトリガーされていません。サンドボックステストの手順については、次のページを参照してください。
* PROD: 発行者アプリケーションがApp Storeに公開されておらず、Appleがこれを制限しています。

エラーの例は以下の通りです：

```
//L_Stage[866:312743] [TPCSDK] ProvisionViewController addPaymentPassViewController: ephemeralPublicKey: BNEz67GTNp2YEtS/hkUDaMJh/zGjBVFbMMIYu5E4xsMoCgeCsR8Qy8A/YGnmXDCZVBpAzmhdrD+e3WpFswdU7e8=

2021-03-26 18:49:21.422819+0300 UCFS_TAS_HEEL_Stage[866:312743] [TPCSDK] ProvisionViewController addPaymentPassViewController: Create request

2021-03-26 18:49:32.050545+0300 UCFS_TAS_HEEL_Stage[866:311885] [TPCSDK] ProvisionViewController addPaymentPassViewController:didFinishAdding BEGIN

2021-03-26 18:49:32.056856+0300 UCFS_TAS_HEEL_Stage[866:311885] [TPCSDK] ProvisionViewController addPaymentPassViewController:didFinishAdding error: The operation couldn't be completed. (PKPassKitErrorDomain error 1.)

TSHではフローは正しく開始されますが、MasterCardはプッシュを受信しません。デバイスログにはエラーが表示されます
```

#### mediaType = com.apple.AppleMediaServices.accountmediatype.production `403` <a href="#push-provisoning-returns-status-code-403" id="push-provisoning-returns-status-code-403"></a>

このエラーはプッシュプロビジョニングフローが発行者バックエンドによって拒否されたときに発生しますが、フロー自体はその他は成功している（レッドフロー）場合に発生します。エラーの詳細は以下の通りです：

\[PassbookUIService error] Received Status Code 403.

#### Push provisioningは次を返します `500` <a href="#push-provisioning-returns-500" id="push-provisioning-returns-500"></a>

このエラーは、Apple Sandboxテストアカウントがテストデバイスに設定されていないときに発生します。

エラーの例は以下の通りです：

```
{ 
  "Content-Length" = 49; 
  "Content-Type" = "application/json"; 
  Date = "Fri, 21 May 2021 14:06:16 GMT"; 
  Vary = "accept-language"; 
  "x-conversation-id" = 8a7e25b542b34cc9a4077fb411c1b2eb;
  "x-envoy-upstream-service-time" = 625; 
  "x-pod" = "crt-pod1"; 
  "x-pod-region" = "paymentpass.com.apple"; 
} 
{ 
  errorCode = 40456; 
  statusCode = 500; 
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.payments.thalescloud.io/classic-push-provisioning/ja/gaido/toraburushtingu/ios.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
