我尝试在我的应用中实施 Apple Pay ,但我收到的错误是"应用程序尝试在目标上提供一个零模态视图控制器" 在下面的片段中,任何一个人都可以说我出错了。
PKPaymentAuthorizationViewController *vc = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:payment];
vc.delegate = self;
[self presentViewController:vc animated:YES completion:nil];
答案 0 :(得分:2)
实际上它可以在模拟器上运行,但在设备所在国家的Apple Pay IS NOT SUPORTED 时,它不适用于真实设备。请考虑一下。
答案 1 :(得分:1)
您应用的Apple Pay权利可能未正确设置。
我注意到canMakePayments
返回YES
而canMakePaymentsUsingNetworks:
在未设置权利时返回NO
。
(我还注意到,当您在YES
上设置的商家ID与Apple Pay权利的商家ID不匹配时,他们都可以返回PKPaymentRequest
。在这种情况下,你的PKPaymentAuthorizationViewController
将是非零的,但是它会在控制台中记录一个神秘的错误。
因此,要确认为您的应用配置了Apple Pay,请确保" Apple Pay"是" On"在目标设置的“功能”部分中,它具有商家标识符(如果您还没有,则需要set up)。
然后:
PassKit
集成方法,请确保将merchantIdentifier
属性设置为权利中匹配的商家标识符。请检查此代码:
if ([PKPaymentAuthorizationViewController canMakePayments]) {
NSLog(@"Can Make Payments");
PKPaymentAuthorizationViewController *viewController = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
if (!viewController) { /* ... Handle error ... */ }
viewController.delegate = self;
[self presentViewController:viewController animated:YES completion:nil];
}
else {
NSLog(@"Can't Make payments");
}
或
答案 2 :(得分:1)
//检查你的控制器是否正确初始化
if (!viewController) {
[self presentViewController:vc animated:YES completion:nil];
} else {
// handle error , may be request is not proper to initializing the PKPaymentAuthorizationViewController
}