アプリに Apple Pay を実装しようとしています。Apple Pay ビューをロードしようとしている PKPaymentAuthorizationViewController があります。ウォレットにまだカードがない場合、このView ControllerはコンストラクターによってNilとして返されていました。そこで、ユーザーがカード情報を入力するプロセスをガイドすることにしました。私はこれを使用してこれを達成することができました
PKPassLibrary* lib = [[PKPassLibrary alloc] init];
[lib openPaymentSetup];
これは、PKPaymentAuthorizationViewController の初期化を行う部分です。これは、ビューを表示する Simulator で有効なオブジェクトを返します。ただし、クレジット カードが構成されていない実際のデバイスでは、nil が返され、実行時例外が発生します。初期化コードは次のとおりです。
if ([PKPaymentAuthorizationViewController canMakePayments]) {
// init arr
[arr addObject:total];
request.paymentSummaryItems = arr;
PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
paymentPane.delegate = self;
[self presentViewController:paymentPane animated:TRUE completion:nil];
}
ここで、配列は PKPaymentSummaryItem の有効な NSArray であるため、シミュレーターで正常に動作します。
ウォレットにクレジット カードがないユーザーを見つけるたびに、openPaymentSetup の上記のメソッドを呼び出す必要があります。それを検出する方法はありますか?
現在、私は使用しています
if ( [PKPassLibrary isPassLibraryAvailable] ) {
PKPassLibrary* lib = [[PKPassLibrary alloc] init];
if ([lib passesOfType:PKPassTypePayment].count == 0 ) {
[lib openPaymentSetup];
}
}
しかし、ウォレット内のパスの数を見ているので、これは機能しません。航空会社の搭乗券やイベントブライト パスなどのようなものです。
見た: nilビューコントローラーとして存在するPKPaymentAuthorizationViewController
Apple Pay PKPaymentauthorizationViewController は、Payment リクエストで読み込まれると常に nil を返します。