5

アプリに 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 を返します。

https://developer.apple.com/library/ios/documentation/PassKit/Reference/PKPaymentAuthorizationViewController_Ref/

4

1 に答える 1