2012-10-29 28 views
5

के रिकॉर्ड बनाए रखना मैंने आईएपी लागू किए हैं जहां एक बार खरीदारी है जो ऐप में कुछ फीचर को अनलॉक करती है। चूंकि खरीदारी प्रत्येक उपयोगकर्ता द्वारा केवल एक बार की जाती है, इसलिए अगर इस उपयोगकर्ता ने खरीदारी की है तो मैं केवल ऐप्पल की आईएपी सेवा से पूछ सकता हूं। यदि ऐसा है तो सुविधा अनलॉक करें। यदि नहीं तो आईएपी प्रॉम्प्ट प्रदर्शित करें। मैं संभवतः ऐप w/o नेटवर्क कनेक्शन का उपयोग करने के लिए अपूर्ण समाधान के रूप में उपयोगकर्ता डिफ़ॉल्ट में कुछ "userDidMakePurchase" ध्वज भी जारी रखता हूं।आईओएस इन-एप-खरीद

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

अब तक मैंने उपयोगकर्ता डिफ़ॉल्ट में टोकन गिनती जारी रखने पर विचार किया है। इसमें कुछ प्रमुख डाउनसाइड्स हैं जैसे ऐप को हटाने और पुनर्स्थापित करने से उपयोगकर्ता के टोकन बैलेंस को मिटा दिया जाता है। टोकन भी अन्य उपकरणों तक नहीं ले जाएगा।

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

+0

"निश्चित रूप से मैं अपने सर्वर पर टोकन गिनती जारी रख सकता हूं या एडब्ल्यूएस का उपयोग कर सकता हूं। हालांकि, यदि संभव हो तो मैं इससे बचना चाहूंगा।" क्या आप इस बात से बचना चाहते हैं कि आप इससे क्यों बचना चाहते हैं? – khunshan

उत्तर

8

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

सामान्य में, वहाँ चार स्थानों है कि आप संभावित रूप से शेष गिनती स्टोर करने के लिए इस्तेमाल कर सकते हैं कर रहे हैं:

------------------------------------------------------------------ 
|  Storage  | Offline? | Reinstall? | Encrypted? | Large? | 
------------------------------------------------------------------ 
| Documents Folder | YES |  NO  |  NO  | YES | 
| iCloud   |  NO |  YES |  NO  | YES | 
| User Defaults | YES |  NO  |  NO  | NO | 
| Keychain   | YES |  YES |  YES | NO | 
------------------------------------------------------------------ 

के बाद से आप डेटा की एक छोटी राशि स्टोर करने के लिए की जरूरत है, अपने आदर्श उम्मीदवार Keychain है: यह ऑफ़लाइन काम करता है, पुनर्स्थापित रहता है, और एक अतिरिक्त बोनस के रूप में, यह भी एन्क्रिप्टेड है।

हालांकि इसका कोई अंतर्निहित है NS आवरण कीचेन CF एपीआई के आसपास, एप्पल कृपया published इसके लिए एक अच्छा आवरण (पेज के नीचे स्क्रॉल कोड को देखने के लिए) है। अपने समाधान में सुरक्षा ढांचे को जोड़ें, अपनी परियोजना में रैपर कोड कॉपी-पेस्ट करें (यह केवल दो फाइलें हैं)। अब आप कीचेन का उपयोग कर सकते हैं जैसे कि यह NSDictionary था।

+3

जानकारी के लिए बहुत बढ़िया धन्यवाद! चाबी कुछ तरीकों से वादा करता है। हालांकि मुझे यकीन नहीं है कि यह एकाधिक डिवाइस समस्या हल करता है या नहीं। कीचेन डेटा डिवाइसों में सिंक नहीं किया गया है? – SundayMonday

+5

@SundayMonday दुर्भाग्यवश, उपकरणों में उपभोग्य सामग्रियों को साझा करना एक बेहद मुश्किल काम है, जिसके लिए (अन्य चीजों के साथ) लेनदेन संबंधी अद्यतनों का समर्थन करना आवश्यक है। ऐप्पल अप्रत्यक्ष रूप से साझा करने की आवश्यकता से उपभोग्य सामग्रियों को छूट देकर अपने इन-ऐप खरीद दिशानिर्देशों में सही होने की चाल को स्वीकार करता है: "उपभोग योग्य वस्तुएं आपके उपयोगकर्ता के सभी उपकरणों पर उपलब्ध होने की आवश्यकता के लिए एक अपवाद हैं। उपभोग योग्य आइटम डिजिटल आइटम हैं जो उपयोग के बाद उपयोग या गायब हो जाते हैं और कभी भी पुन: उपयोग नहीं किया जा सकता है।" – dasblinkenlight

+2

@SundayMonday यदि आपको साझाकरण को लागू करना होगा, तो संभवतः आपको एक [सर्वर उत्पाद मॉडल] (http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/APIOverview/ का उपयोग करना होगा OverviewoftheStoreKitAPI.html), जो कि बहुत अधिक जटिल है। – dasblinkenlight

1

मुझे यकीन है कि iCloud कुंजी-मूल्य स्टोर ऐप डिलीट/पुनर्स्थापित करने में बनी रहती है। यह जाने का रास्ता हो सकता है।

अन्यथा हाँ उपयोगकर्ता को प्रमाणीकृत करने के लिए किसी भी तरीके से टोकन गिनती को स्टोर करने के लिए आपको अपने सर्वर की आवश्यकता होगी (डिवाइस आईडी अच्छा नहीं है, क्या होगा यदि वे डिवाइस को प्रतिस्थापित करते हैं और बैकअप से पुनर्स्थापित करते हैं?) और सभी परिचर परेशानी - पंजीकरण, पासवर्ड स्क्रीन, आदि