2015-11-20 9 views
5

मैं अपने ऐप के लिए ऐप्पल पे को लागू करने की कोशिश कर रहा हूं। मेरे पास PKPaymentAuthorizationViewController ऐप्पल पे व्यू लोड करने का प्रयास कर रहा है। इस दृश्य नियंत्रक को कन्स्ट्रक्टर द्वारा नील के रूप में वापस किया जा रहा था अगर मेरे पास पहले से ही मेरे वॉलेट में कोई कार्ड नहीं था। इसलिए, मैंने उपयोगकर्ता को गाइड करने का फैसला किया, हालांकि प्रक्रिया जहां वे अपनी कार्ड जानकारी दर्ज करते हैं। मैं का उपयोग करऐप्पल पे डिटेक्ट वॉलेट में कोई क्रेडिट कार्ड नहीं है

PKPassLibrary* lib = [[PKPassLibrary alloc] init]; 
[lib openPaymentSetup]; 

यहाँ हिस्सा है जहाँ मैं PKPaymentAuthorizationViewController का प्रारंभ है इस लक्ष्य को हासिल करने में सक्षम था। यह दृश्य दिखाते हुए सिम्युलेटर पर एक मान्य वस्तु देता है। लेकिन कॉन्फ़िगर किए गए क्रेडिट कार्ड के बिना वास्तविक डिवाइस पर शून्य रिटर्न होता है और रनटाइम अपवाद में चलता है।

if ([PKPaymentAuthorizationViewController canMakePayments]) { 
// init arr 
[arr addObject:total]; 
request.paymentSummaryItems = arr; 
PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request]; 
paymentPane.delegate = self; 
[self presentViewController:paymentPane animated:TRUE completion:nil]; 
} 

यहाँ सरणी PKPaymentSummaryItem का एक मान्य NSArray जिसके कारण सफलतापूर्वक सिम्युलेटर पर काम करता है है: यहाँ प्रवर्तन कोड है।

मुझे ओपनपेमेंट सेटअप के उपरोक्त विधि को कॉल करने की आवश्यकता है, हर बार जब मैं अपने वॉलेट में क्रेडिट कार्ड के बिना उपयोगकर्ता को देखता हूं। क्या इसका पता लगाने का कोई तरीका है?

वर्तमान में मैं

if ([PKPassLibrary isPassLibraryAvailable]) { 
    PKPassLibrary* lib = [[PKPassLibrary alloc] init]; 
    if ([lib passesOfType:PKPassTypePayment].count == 0) { 
     [lib openPaymentSetup]; 
    } 
} 

उपयोग कर रहा हूँ लेकिन चूंकि मैं बटुए में गुजरता की गिनती से देख रहा हूँ इस काम नहीं करेगा। PKPaymentAuthorizationViewController present as nil view controller

Apple pay PKPaymentauthorizationViewController always returning nil when loaded with Payment request

https://developer.apple.com/library/ios/documentation/PassKit/Reference/PKPaymentAuthorizationViewController_Ref/

+0

क्या कोई कारण है कि आप सेब दस्तावेज़ों से canMakePayments विधि का उपयोग नहीं कर सकते हैं? (https://developer.apple.com/library/ios/documentation/PassKit/Reference/PKPaymentAuthorizationViewController_Ref/#//apple_ref/occ/clm/PKPaymentAuthorizationViewController/canMakePayments) – bplattenburg

+1

@bplattenburg यह हमेशा सत्य देता है। संपादन की जांच करें। – Rushabh

+2

आपको 'canMakePaymentsUsingNetworks:' विधि का उपयोग करने की आवश्यकता है, 'canMakePayments' विधि नहीं। – rmaddy

उत्तर

5

मैं था के रूप में @maddy ने सुझाव दिया है, और यह वास्तव में काम किया: एयरलाइन के लिए बोर्डिंग पास, या Eventbrite पास, आदि

देखा की तरह हो सकता है । यह दुर्भाग्यपूर्ण है कि सेब के बारे में बहुत सीमित दस्तावेज है। धन्यवाद मैडी।

यहाँ मेरी कोड

-(BOOL) openAddCardForPaymentUIIfNeeded 
{ 
    if ([PKPassLibrary isPassLibraryAvailable]) 
    { 
     if (![PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:[NSArray arrayWithObjects: PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa, nil]]) 
     { 
      UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Add a Credit Card to Wallet" message:@"Would you like to add a credit card to your wallet now?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil]; 
      [alert show]; 
      return true; 

     } 
    } 
    return false; 
} 

अब मैं उपयोगकर्ता को कर रहा हूँ बटुआ एप्लिकेशन में एक कार्ड जादूगर जोड़ने के लिए जाना है। क्या वॉलेट में कार्ड जोड़ने के बाद उपयोगकर्ता को ऐप पर वापस लाने का कोई तरीका है?

धन्यवाद!

+2

जहां तक ​​मुझे पता है कि उपयोगकर्ता आपके ऐप पर वापस जाने के बिना उन्हें वापस पाने का कोई तरीका नहीं है। मुझे आशा है कि लोग खुद के लिए बहुत कुछ समझ सकते हैं :) – bplattenburg

संबंधित मुद्दे