2012-06-13 11 views
41

मैं पहली बार अपने ऐप अपडेट में ऐप्लिकेशन के अंतर्गत खरीदी में लागू कर दिया है बहाल, केवल भी 3 सप्ताह प्रतीक्षा करें और यह निम्नलिखित कारणों से अस्वीकृत है:एप्लिकेशन के अंतर्गत खरीदी में बटन

हमने पाया है कि आपकी ऐप्लिकेशन में प्रदान करता है -एप खरीद/एस जिसे पुनर्स्थापित किया जा सकता है लेकिन इसमें "पुनर्स्थापित" सुविधा शामिल नहीं है ताकि उपयोगकर्ताओं को पहले खरीदे गए इन-ऐप खरीद/एस को पुनर्स्थापित करने की अनुमति मिल सके। पहले खरीदे गए इन-ऐप खरीद उत्पादों को पुनर्स्थापित करने के लिए, को "पुनर्स्थापित करें" बटन प्रदान करना उचित होगा और "पुनर्स्थापित करें" बटन टैप होने पर पुनर्स्थापना प्रक्रिया शुरू करें।

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 
:

अब मैं अपने टेबल के अधिकार (ऊपर) जहां ऐप्लिकेशन के अंतर्गत खरीदी देखा जा सकता है/उपयोग किया और निम्नलिखित कोड है कि बटन से लिंक किया जाएगा जोड़ने के लिए एक navbar बटन जोड़ने के बारे में सोच रहा था

क्या कोई यह सत्यापित कर सकता है कि यह सही है और संभवतः सभी की आवश्यकता है? यह इस बार सफलतापूर्वक पारित करना चाहते हैं। अग्रिम में धन्यवाद!

+7

मुझे एक ही हानिकारक अस्वीकृति नोटिस मिला। क्या आप हमेशा "पुनर्स्थापित" बटन प्रदान करते हैं?!?मैं स्वचालित रूप से यह देखने के लिए जांचना चाहता हूं कि वहां जहां रेस्टॉर इन-एप खरीददारी है, लेकिन जब मैं पुनर्स्थापना कॉल करता हूं तो उपयोगकर्ता को पासवर्ड के लिए संकेत दिया जाता है। वह बेकार है! इसके लिए यह एक और एपीआई है? क्या मैं बस अपना "खरीद" बटन बदल सकता हूं "खरीदें/पुनर्स्थापित करें" ??? जो अभी भी बेकार है। मेरे पास पूर्ण समय "रीस्टोर" बटन के लिए कमरा नहीं है। – whatchamacallit

+1

@whatchamacallit मैंने जो कुछ किया है वह ऊपर से कोड को नेविबार में एक बटन से जुड़े एक विधि में रखा गया था और इसे मंजूरी मिली। यदि आपके पास navbar में बटन के लिए कमरा नहीं है तो आपको शायद इसे दृश्य में रखना होगा ... शायद तालिका में या तालिका के ऊपर। सौभाग्य! –

+5

मुझे शक्तिशाली ईगल के लिए गुस्से में पक्षियों पर कोई पुनर्स्थापना बटन नहीं दिख रहा है? इसे अस्वीकार क्यों नहीं किया जाता है? – erkanyildiz

उत्तर

27

एलेक्स, मुझे पिछले सप्ताह इसी कारण से खारिज कर दिया गया है, और यह सही है कि ऐप्पल चाहता था - को जोड़ने के बाद बटन पुनर्स्थापित करें, उन्होंने इस विषय पर कोई अन्य प्रश्न नहीं पूछा।

बेशक, आपको केवल [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; पर कॉल करने की आवश्यकता नहीं है, बल्कि खुद को बहाल करने के लिए भी लागू करें (मेरा मतलब है, उपयोगकर्ता को सामग्री प्रदान करना)।

+0

उत्तर निकिता के लिए धन्यवाद। वास्तव में बहुत निराशाजनक। मूल रूप से मैंने ऐप खरीद में जो किया है, वह है जब उपयोगकर्ता ने खरीदारी की है, तो उन्हें उस उत्पाद आईडी के लिए खरीदी गई सरणी में डाल दिया जाता है। जब वे एक दृश्य को टैप करते हैं जो इन-ऐप खरीद प्रदान करता है, तो दृश्य जांचता है कि उपयोगकर्ता खरीदे गए सरणी में है या इस रीडायरेक्ट पर आधारित रीडायरेक्ट पर स्वचालित रूप से खरीदारी दृश्य या विज्ञापन दृश्य पर आधारित है। क्या आप मुझे बता सकते हैं कि पुनर्स्थापना ट्रांस्केशन कहलाए जाने पर बिल्कुल क्या हो रहा है? धन्यवाद –

+0

बहाल करने के लिए अनुकूलित किया गया ट्रांसलेशन आपको अपने SKPaymentObserver प्रतिनिधि को पुनर्स्थापित लेनदेन देगा, ताकि आप देख सकें कि उपयोगकर्ता ने पहले क्या खरीदा है। Trasnsactions सिर्फ SKPaymentTransactions हैं, और उनके राज्य SKPaymentTransactionStateRestored है। –

+0

आपकी मदद के लिए धन्यवाद! –

41

मैं इस का एक परिवर्तन का उपयोग करें:

//inside of an IBaction 
[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions]; 


// Then this is called 
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { 
    NSLog(@"%@",queue); 
    NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]); 

    NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init]; 
    NSLog(@"received restored transactions: %i", queue.transactions.count); 

    for (SKPaymentTransaction *transaction in queue.transactions) { 
     NSString *productID = transaction.payment.productIdentifier; 
     [purchasedItemIDs addObject:productID]; 
     NSLog (@"product id is %@" , productID); 
     // here put an if/then statement to write files based on previously purchased items 
     // example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry} 
    } 
} 

क्षमा करें, मैं अपने आईपैड पर कर रहा हूँ अगर यह कोई मतलब नहीं है।

+6

[[SKPaymentQueue defaultQueue] addTransactionObserver: self]; मेरी समस्या हल हो गई! धन्यवाद! कई अन्य उदाहरण इस लाइन को उपेक्षा करते हैं। – Sunkas

+1

यह सही नहीं है। पुनर्स्थापित कॉल करने के बाद कॉम्प्लेटेड ट्रांज़ेशन प्रतिनिधि प्रतिनिधि विधि जिसे कॉल किया जाएगा - (शून्य) भुगतान क्यूयू: (एसकेपेमेंट क्यूयू *) कतार अपडेट किया गया है लेनदेन: (एनएसएआरएआरई *) लेनदेन – odyth

+0

यह आपके लिए सटीक नहीं हो सकता है, लेकिन यह मेरे लिए आश्चर्यजनक रूप से अच्छा काम करता है। हममम। –

3

बटन बहाल करने के लिए वैकल्पिक app settings bundle में पुनर्स्थापित स्विच हो सकता है। यह यूआई को जबरदस्त नहीं करता है और ऐसा लगता है कि ऐप्पल इसका स्वागत करता है (लेकिन यह सुनिश्चित करना सुनिश्चित करें कि आपने इस तरह यांत्रिकी को लागू किया है)।

BOOL shouldRestorePurchases = [[NSUserDefaults standardUserDefaults] boolForKey:@"restorePurchasesKey"]; 
+1

यह मेरे पुराने फोन से नए फोन पर माइग्रेट करने पर काम नहीं करेगा। –

+0

@AbdulYasin विधि बंडल में एक बूलियन स्टोर करने के लिए ऑफ़र की गई विधि का उपयोग करता है। ऐप में आपको तर्क लागू करना होगा जैसा कि आप "पुनर्स्थापित बटन" के साथ करेंगे। –

2

मुझे इसी कारण से खारिज कर दिया गया है। यह इस तथ्य के कारण है कि आप विभिन्न आईओएस उपकरणों पर उसी Apple ID के साथ साइन इन किया जा सकता है।

उदाहरण के लिए, मान लें कि मैं एक आईपैड पर [email protected] में लॉग इन हूं। जब मैं आपका एप्लिकेशन डाउनलोड करता हूं तो मुझे एहसास होता है कि मैं विज्ञापनों को हटाना चाहता हूं (मान लीजिए कि आपके ऐप पर विज्ञापन हैं यदि आप नहीं करते हैं), इसलिए मैं उन्हें 99¢ के लिए हटा देता हूं। एक साल बाद, मैं एक आईफोन खरीदने का फैसला करता हूं, और उस खाते पर [email protected] पर साइन इन करता हूं, और मैं फिर से अपना ऐप डाउनलोड करता हूं। विज्ञापन अभी भी वहां हैं, हालांकि, मैंने पहले ही उनके लिए भुगतान किया है। दो बार एक ही चीज़ के लिए कौन भुगतान करना चाहेंगे? restore सुविधा के साथ, मैं अपने iPad पर खरीदी गई खरीदारी को पुनर्स्थापित कर सकता हूं, और उन्हें अपने iPhone पर काम कर सकता हूं।

खरीद पुनर्स्थापित करने के लिए, आप इस्तेमाल कर सकते हैं:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

उसके बाद, आप ऐसी सामग्री को भी उपयोगकर्ता खरीदा प्रदान करने के लिए की जरूरत है।