Apple Pay检测钱包没有信用卡
Apple Pay detect Wallet has no credit cards
我正在尝试为我的应用程序实施 Apple Pay。我有 PKPaymentAuthorizationViewController 试图加载 Apple Pay 视图。如果我的钱包里没有任何卡片,构造函数将此视图控制器返回为 Nil。因此,我决定引导用户完成输入卡信息的过程。我能够使用
实现这一目标
PKPassLibrary* lib = [[PKPassLibrary alloc] init];
[lib openPaymentSetup];
这是我初始化 PKPaymentAuthorizationViewController 的部分。这 returns 模拟器上显示视图的有效对象。但是在没有配置信用卡 returns 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
我按照@maddy 的建议做了,确实有效。不幸的是,苹果关于它的文档非常有限。谢谢麦迪。
这是我的代码
-(BOOL) openAddCardForPaymentUIIfNeeded
{
if ( [PKPassLibrary isPassLibraryAvailable] )
{
if ( ![PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:[NSArray arrayWithObjects: PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa, nil]] )
{
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Add a Credit Card to Wallet" message:@"Would you like to add a credit card to your wallet now?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
[alert show];
return true;
}
}
return false;
}
现在我正在引导用户去钱包应用程序中添加卡片向导。在 he/she 完成将卡添加到电子钱包后,有什么方法可以让用户回到应用程序吗?
谢谢!
我正在尝试为我的应用程序实施 Apple Pay。我有 PKPaymentAuthorizationViewController 试图加载 Apple Pay 视图。如果我的钱包里没有任何卡片,构造函数将此视图控制器返回为 Nil。因此,我决定引导用户完成输入卡信息的过程。我能够使用
实现这一目标PKPassLibrary* lib = [[PKPassLibrary alloc] init];
[lib openPaymentSetup];
这是我初始化 PKPaymentAuthorizationViewController 的部分。这 returns 模拟器上显示视图的有效对象。但是在没有配置信用卡 returns 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
我按照@maddy 的建议做了,确实有效。不幸的是,苹果关于它的文档非常有限。谢谢麦迪。
这是我的代码
-(BOOL) openAddCardForPaymentUIIfNeeded
{
if ( [PKPassLibrary isPassLibraryAvailable] )
{
if ( ![PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:[NSArray arrayWithObjects: PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa, nil]] )
{
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Add a Credit Card to Wallet" message:@"Would you like to add a credit card to your wallet now?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
[alert show];
return true;
}
}
return false;
}
现在我正在引导用户去钱包应用程序中添加卡片向导。在 he/she 完成将卡添加到电子钱包后,有什么方法可以让用户回到应用程序吗?
谢谢!