如何解决应用程序试图在目标上呈现一个无模式视图控制器?

问题描述:

我试图在我的应用程序中实现Apple Pay,但是我收到了一个错误消息,提示“应用程序试图在目标中提供一个无模式视图控制器” ,可以通过以下代码片段告诉我是否出错。如何解决应用程序试图在目标上呈现一个无模式视图控制器?

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

很可能您的应用的Apple Pay授权设置不正确。

我注意到canMakePayments回报YEScanMakePaymentsUsingNetworks:回报NO时未设置的权利。

(我也注意到,他们可以都返回YES如果商家ID您在PKPaymentRequest设置不符合您的苹果支付授权的商家ID。在这种情况下,您的PKPaymentAuthorizationViewController将不为零,但呈现它在控制台中记录一个神秘的错误)。

因此,要确认为您的应用程序配置了Apple Pay,请确保您的目标设置的Capabilities部分中的“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

+0

@bhardresh它在模拟器中工作,但在设备中它正在崩溃。 – Arun

+0

您的设备uuid添加个人资料证书。 –

+0

到哪个证书我必须添加uuid – Arun

//检查一次你的控制器是正确初始化或不是

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

实际上,它将在模拟器上工作,但在设备分配到的国家/地区Apple Pay 未配置为时,不在真实设备上。请考虑这一点。