Apple Pay检测钱包没有信用卡

时间:2015-11-20 21:23:40

标签: ios objective-c applepay

我正在尝试为我的应用实施Apple Pay。我有PKPaymentAuthorizationViewController试图加载Apple Pay View。如果我的钱包里已经没有任何卡,那么这个视图控制器被构造函数返回为Nil。所以,我决定引导用户通过他们输入卡信息的过程。我能够使用

实现这一目标
PKPassLibrary* lib = [[PKPassLibrary alloc] init];
[lib openPaymentSetup];

这是我对PKPaymentAuthorizationViewController进行初始化的部分。这将返回模拟器上显示视图的有效对象。但是在没有配置信用卡的真实设备上返回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];
   }
}

但是这不起作用,因为我正在查看钱包中的通行证数量。这可能是航空公司的登机牌,或者eventbrite通行证等。

看着: PKPaymentAuthorizationViewController present as nil view controller

Apple pay PKPaymentauthorizationViewController always returning nil when loaded with Payment request

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

1 个答案:

答案 0 :(得分:5)

我按照@maddy的建议做了,它确实有效。不幸的是苹果公司的文件非常有限。谢谢Maddy。

这是我的代码

let cell = tableView.cellForRowAtIndexPath(indexPath)

现在我指示用户在钱包应用中添加卡片向导。在他/她完成在钱包中添加卡后,有什么方法可以让用户回到应用程序?

谢谢!

相关问题