2010-04-28 12 views
15

मैं एप्लिकेशन खरीद में लागू करने कर रहा हूँ मैं के माध्यम सेproductsRequest प्रतिक्रिया विधि बुला नहीं है

- (void) requestProductData 
{ 
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers: 
     [NSSet setWithObjects: featureAId,featureBId,nil]]; // add any other product here 
request.delegate = self; 
[request start]; 
} 

सेब की दुकान में अनुरोध भेज रहा हूँ प्रतिक्रिया विधि

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response 
{ 
[purchasableObjects addObjectsFromArray:response.products]; 
} 

बिल्कुल कॉल हो रही है नहीं है। केवल एक बार जब मैंने दस प्रयासों में से एक बार कोशिश की तो मैंने कोशिश की।

इस बारे में कोई विचार ..? अग्रिम

उत्तर

41

कोशिश में धन्यवाद भी लागू करने के लिए - (void)request:(SKRequest *)request didFailWithError:(NSError *)error विधि - हो सकता है आपके अनुरोध के प्रसंस्करण में कुछ त्रुटियों कर रहे हैं।

+0

धन्यवाद Vladmir ..... मुझे समस्या है जो मेरे डिवाइस –

+0

में इंटरनेट कनेक्शन की समस्या के कारण है, मैंने उस विधि को गंभीर समस्या के कारण भी कोशिश की, उस समय –

+0

+1 को फ़ंक्शन हेडर की आवश्यकता नहीं थी। जब इसका कोई इंटरनेट कनेक्शन नहीं कहा जाता है ... –

0

मुझे एक ही समस्या है (त्रुटि: आईट्यून्स स्टोर से कनेक्ट नहीं हो सकता है)। नवीनतम संस्करण में आईट्यून्स बीटा को अपग्रेड करने के बाद यह फिर से काम करना शुरू कर दिया।

22

मुझे एक ही समस्या का सामना करना पड़ा, लेकिन मेरे मामले में कारण यह था कि मैं का उपयोग कर रहा था स्वचालित संदर्भ और मैं अनुरोध को बनाए रखना भूल गया।

मेरे कोड की तरह था:

- (void) requestProductData 
{ 
    SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:ProductIdentifier]]; 
    request.delegate = self; 
    [request start]; 
} 

लेकिन प्रतिनिधि के productsRequest: didReceiveResponse: कभी नहीं बुलाया गया।

फिक्स होगा:

@property (strong, nonatomic) SKProductsRequest *request; 

- (void) requestProductData 
{ 
    self.request= [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:ProductIdentifier]]; 
    self.request.delegate = self; 
    [self.request start]; 
    // you can nil request property in request:didFailWithError: and requestDidFinish: 
} 
+0

बहुत बहुत धन्यवाद, यह मेरी समस्या हल हो गया। –

+2

ऐसा लगता है कि ऐप्पल द्वारा यह तय किया गया है कि एक बार जब आप अनुरोध पर 'स्टार्ट' कहते हैं, तो अब यह खुद को बरकरार रखता है और इस प्रकार अंततः असफल रहा या सफल होने तक जीवित रहेगा (आईओएस 8 कम से कम; आईओएस 7 के साथ परीक्षण नहीं किया गया है अभी तक)। – Mecki

4

मैं एक ही समस्या थी। मैंने आईएपी को संभालने और उत्पादों की जांच करने के लिए एक सहायक वर्ग बनाया था। आखिर में जो मिला वह मुझे मिली कक्षा का उदाहरण प्रतिक्रिया वापस आने से पहले जारी किया जा रहा था, इस प्रकार प्रतिनिधि विधियों को कभी नहीं बुलाया गया क्योंकि वे अब अस्तित्व में नहीं थे।

मैं तुम्हें एक सहायक वर्ग का उपयोग नहीं कर रहे हैं, तो और यह कोडिंग में कक्षा मैं @proprty (मजबूत, nonatomic) का उपयोग करने से यह कहा जाता है में सहायक वर्ग के उदाहरण को बनाए रखना द्वारा मेरी समस्या हल ...

एक मौजूदा वर्ग तो उपर्युक्त उत्तर आपके SKProductRequest को बनाए रखकर काम करेगा।

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