私のアプリにApple Payを実装しようとしています。私はPKPaymentAuthorizationViewControllerをApple Pay Viewをロードしようとしています。私のウォレットにすでにカードがない場合、このビューコントローラはコンストラクタによってNilとして返されていました。だから、私は彼らがカード情報を入力するプロセスを介してユーザーを導くことに決めました。私はここでApple Pay detectウォレットにはクレジットカードがありません
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];
}
}
を使用しています。しかし、私は財布でパスの数で探していますので、これは動作しません。 @maddyによって提案された、とのように私はそれが実際に働いていなかった PKPaymentAuthorizationViewController present as nil view controller
Apple pay PKPaymentauthorizationViewController always returning nil when loaded with Payment request
AppleのドキュメントからcanMakePaymentsメソッドを使用できない理由はありますか? (https://developer.apple.com/library/ios/documentation/PassKit/Reference/PKPaymentAuthorizationViewController_Ref/#//apple_ref/occ/clm/PKPaymentAuthorizationViewController/canMakePayments) – bplattenburg
@bplattenburg常にtrueを返します。編集を確認してください。 – Rushabh
'canMakePaymentsUsingNetworks:'メソッドを使う必要があります。 'canMakePayments'メソッドではありません。 – rmaddy