2016-09-17 64 views
2

我試圖在我的應用程序中實現Apple Pay,但是我收到了一個錯誤消息,提示「應用程序試圖在目標中提供一個無模式視圖控制器」 ,可以通過以下代碼片段告訴我是否出錯。如何解決應用程序試圖在目標上呈現一個無模式視圖控制器?

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

回答

0

很可能您的應用的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

0

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

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

實際上,它將在模擬器上工作,但在設備分配到的國家/地區Apple Pay 未配置爲時,不在真實設備上。請考慮這一點。

相關問題