Rus*_*abh 5 objective-c ios applepay
我正在尝试为我的应用实施Apple Pay.我有PKPaymentAuthorizationViewController试图加载Apple Pay View.如果我的钱包里已经没有任何卡,那么这个视图控制器被构造函数返回为Nil.所以,我决定引导用户通过他们输入卡信息的过程.我能够实现这一目标
PKPassLibrary* lib = [[PKPassLibrary alloc] init];
[lib openPaymentSetup];
Run Code Online (Sandbox Code Playgroud)
这是我有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];
}
Run Code Online (Sandbox Code Playgroud)
这里的数组是PKPaymentSummaryItem的有效NSArray,这就是为什么在模拟器上成功运行的原因.
我需要调用openPaymentSetup的上述方法,每当我看到钱包里没有信用卡的用户时.有没有办法检测到它?
目前我正在使用
if ( [PKPassLibrary isPassLibraryAvailable] ) {
PKPassLibrary* lib = [[PKPassLibrary alloc] init];
if ([lib passesOfType:PKPassTypePayment].count == 0 ) {
[lib openPaymentSetup];
}
}
Run Code Online (Sandbox Code Playgroud)
但是这不起作用,因为我正在查看钱包中的通行证数量.这可能是航空公司的登机牌,或者eventbrite通行证等.
看看: PKPaymentAuthorizationViewController存在为nil视图控制器
我按照@maddy的建议做了,它确实有效.不幸的是苹果公司的文件非常有限.谢谢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;
}
Run Code Online (Sandbox Code Playgroud)
现在,我指示用户在钱包应用程序中添加卡向导.在他/她完成在钱包中添加卡后,有什么方法可以让用户回到应用程序?
谢谢!
| 归档时间: |
|
| 查看次数: |
2690 次 |
| 最近记录: |