如何修复应用程序试图在目标上呈现一个零模态视图控制器?

时间:2016-09-17 05:19:47

标签: ios ios7 applepay

我尝试在我的应用中实施 Apple Pay ,但我收到的错误是"应用程序尝试在目标上提供一个零模态视图控制器" 在下面的片段中,任何一个人都可以说我出错了。

PKPaymentAuthorizationViewController *vc = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:payment];
vc.delegate = self;
[self presentViewController:vc animated:YES completion:nil];

3 个答案:

答案 0 :(得分:2)

实际上它可以在模拟器上运行,但在设备所在国家的Apple Pay IS NOT SUPORTED 时,它不适用于真实设备。请考虑一下。

答案 1 :(得分:1)

您应用的Apple Pay权利可能未正确设置。

我注意到canMakePayments返回YEScanMakePaymentsUsingNetworks:在未设置权利时返回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");
}

使用示例代码推荐此网址:https://developer.apple.com/library/content/ApplePay_Guide/CreateRequest.html#//apple_ref/doc/uid/TP40014764-CH3-SW2

答案 2 :(得分:1)

//检查你的控制器是否正确初始化

     if (!viewController) { 
          [self presentViewController:vc animated:YES completion:nil];
     } else {
       // handle error , may be request is not proper to initializing the    PKPaymentAuthorizationViewController
  }