如何解决应用程序试图在目标上呈现一个无模式视图控制器?
问题描述:
我试图在我的应用程序中实现Apple Pay,但是我收到了一个错误消息,提示“应用程序试图在目标中提供一个无模式视图控制器” ,可以通过以下代码片段告诉我是否出错。如何解决应用程序试图在目标上呈现一个无模式视图控制器?
PKPaymentAuthorizationViewController *vc = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:payment];
vc.delegate = self;
[self presentViewController:vc animated:YES completion:nil];
答
很可能您的应用的Apple Pay授权设置不正确。
我注意到canMakePayments
回报YES
和canMakePaymentsUsingNetworks:
回报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");
}
或
答
//检查一次你的控制器是正确初始化或不是
if (!viewController) {
[self presentViewController:vc animated:YES completion:nil];
} else {
// handle error , may be request is not proper to initializing the PKPaymentAuthorizationViewController
}
答
实际上,它将在模拟器上工作,但在设备分配到的国家/地区Apple Pay 未配置为时,不在真实设备上。请考虑这一点。
@bhardresh它在模拟器中工作,但在设备中它正在崩溃。 – Arun
您的设备uuid添加个人资料证书。 –
到哪个证书我必须添加uuid – Arun