2016-10-05 8 views
9

रसीद सत्यापन पर Apple docs लॉन्च के तुरंत बाद रसीद सत्यापन करने के लिए कहता है। यह [[NSBundle mainBundle] appStoreRecieptURL] द्वारा लौटाए गए पथ पर डेटा की जांच करने की मात्रा है, SKReceiptRefreshRequest के माध्यम से रीफ्रेशिंग अगर यह वहां नहीं है, और इसे सत्यापित कर रहा है। उपरोक्त दस्तावेज आईओएस और मैकोज़ दोनों का संदर्भ देते हैं।क्या आईओएस में लॉन्च पर ऐप स्टोर रसीद को वैध/रीफ्रेश करना आवश्यक है?

क्या यह वास्तव में आवश्यक है आईओएस पर? यदि हां, तो क्यों? क्या यह उपयोगकर्ताओं को जेलब्रोकन डिवाइस पर अपने ऐप का उपयोग करने से रोकता है, या ऐप स्टोर से खरीदे बिना (इस मामले में मुझे शायद कोई परवाह नहीं है कि मेरा ऐप मुफ्त है या नहीं)? या क्या इसमें अन्य परिचालनों के लिए प्रभाव पड़ता है जैसे इन-ऐप खरीदारी को बहाल करना या मान्य करना? उदाहरण के लिए, क्या इन-एप खरीद के लिए लेनदेन को सत्यापित करने के लिए रसीद डेटा पहले से ही होना चाहिए?

नोट: मैं इन-ऐप सदस्यता का उपयोग नहीं कर रहा हूं। मेरे पास इन-ऐप खरीदारी है, लेकिन मैं उन्हें सत्यापित करने और खरीद सर्वर-पक्ष रिकॉर्ड करने के बाद उनसे रसीदों का उपयोग नहीं करता हूं।

+0

आप ऐसा करने के लिए _need_ नहीं करते हैं, यह केवल वैकल्पिक है और आईओएस 7 + पर किया जा सकता है; सत्यापन को कार्यान्वित करना पूरी तरह से एक वित्तीय निर्णय है, और यदि आप इसे मान्य करते हैं, तो आपको विफलता के मामले में सामग्री को अक्षम करने के लिए _not_ की सिफारिश की जाती है क्योंकि प्रमाणीकरण मानक वातावरण में कभी भी विफल हो सकता है (उदाहरण के लिए कनेक्शन के मामले में) जो बर्बाद हो सकता है आपके उपभोक्ताओं का अनुभव; पूरी तरह से, प्रमाणीकरण करने के बजाय अभ्यास में ओएसएक्स पर समझ में आता है। – holex

+0

@ होलेक्स क्या आप इसे उत्तर दे सकते हैं? –

+0

कोई जांच नहीं, मैंने अनुरोध किया है जैसा आपने अनुरोध किया था। – holex

उत्तर

6

ऐसा करने के लिए की आवश्यकता नहीं है, यह केवल वैकल्पिक है और यदि आप ऐसा करने में रूचि रखते हैं तो IOS7 + पर किया जा सकता है।

संक्षेप में, मान्यता को लागू करने विशुद्ध रूप से एक वित्तीय निर्णय है, और यहां तक ​​कि यदि आप व्यंजनों को मान्य आप विफलता के मामले में सामग्री को निष्क्रिय करने के रूप में नहीं मान्यता मानक वातावरण में कभी भी असफल रूप में अच्छी तरह कर सकता सिफारिश कर रहे हैं (उदाहरण के मामले में कोई कनेक्शन नहीं), और इस तरह की अतिव्यापीता आपके उपभोक्ताओं के अनुभव को बर्बाद कर सकती है।


कुल मिलाकर, validation'd कर नहीं बल्कि भावना पर OSX व्यवहार में पड़ता है जब आप विफलता, परवाह किए बिना कारण के मामले में सामग्री को निष्क्रिय करने की अनुमति है; लेकिन अगर आपको लगता है कि आपकी आय से अधिक उपभोक्ता हैं या चोरी की गई सामग्री की मात्रा आपके मार्जिन से परे है, तो आईओएस पर भी ऐसा करना उचित हो सकता है।


नोट: सामान्य रूप में आप Apple's Documentation में रसीद सत्यापन के तकनीकी विवरण के बारे में और अधिक पढ़ सकते हैं।

+0

क्या आप कृपया मुझे इसके बारे में सुझाव दे सकते हैं? https://stackoverflow.com/questions/47712225/auto-renewable-subscription-wrong-time-response-sandbox-mode – Siddharth

1

कारणों मैं देना होगा कर रहे हैं:

  1. उपयोगकर्ता अपने उत्पाद को बदलने यदि आपको अपने ऐप के बाहर से सदस्यता समूहों का उपयोग कर सकते हैं।
  2. एक ऑटो-नवीनीकरण सदस्यता आपके ऐप के बाहर नवीनीकृत हो सकती है।
  3. ऐप को ऐप के बाहर शुरू होने तक ऐप के बाहर शुरू किए गए लेन-देन प्राप्त नहीं होते हैं।
  4. उपयोगकर्ता वर्तमान डिवाइस पर आपके ऐप के बाहर एक ही एप्पल आईडी का उपयोग करके किसी अन्य डिवाइस पर खरीदारी कर सकता है।

हमारे AppDelegate के भीतर: आवेदन didFinishLaunchingWithOptions हम आरंभ एक वर्ग कि कॉल [[SKPaymentQueue defaultQueue] addTransactionObserver: स्वयं]; ऐप के भीतर से शुरू की गई खरीदारी के लिए पर निगरानी रखने के लिए।

+2

ये 'कारण' उचित साबित होते हैं कि आईएपी को __restored__ क्यों होना चाहिए, लेकिन वास्तविक रसीद _ validation_ की आवश्यकता क्यों नहीं है। – holex

+0

"आपके ऐप के बाहर" का क्या अर्थ है? –

+0

'आपके ऐप के बाहर' का अर्थ है कि ऐप अग्रभूमि में नहीं है। – iCyberPaul

2

आप आम तौर पर केवल उन उपयोगकर्ताओं द्वारा समुद्री डाकू को रोकने के लिए रसीद को मान्य करेंगे जिन्होंने आपका ऐप नहीं खरीदा है या यदि आप ऑटो नवीनीकरण सदस्यता का उपयोग कर रहे हैं।

जबकि आप आईएपी जानकारी के लिए रसीद पूछताछ कर सकते हैं, इसके लिए वास्तव में आसान (और एप्लिकेशन समीक्षा के लिए आवश्यक) कहीं एक बटन देने के लिए "की खरीदारी पहले बहाल" और फोन

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

यह भी एक बेहतर UX है उपयोगकर्ता को संभवतः ऐप्पल आईडी और पासवर्ड के लिए संकेत दिया जा सकता है, जिसने ऐप स्टार्टअप पर अस्पष्ट के बजाय "पुनर्स्थापित खरीदारी" बटन दबाया है।

4

आपके प्रश्न का सरल उत्तर नहीं, यह आवश्यक नहीं है

यहां आपके लिए विस्तृत स्पष्टीकरण है।

  1. को एप्पल प्रलेखन here अनुसार, सेब प्राप्तियों मान्य के दो तरीके दिया है, वे इसे मार्गदर्शन केवल चलने से आपके आवेदन की अनधिकृत प्रतिलिपि को रोकने के लिए के रूप में दिया जाता है। अधिक मार्गदर्शन के लिए सेब ने सेब समीक्षा दिशानिर्देशों की ओर इशारा किया है।
  2. समीक्षा दिशानिर्देशों में here, ऐप्पल रसीदों के सत्यापन से संबंधित कुछ भी जरूरी नहीं है।

यदि सभी रसीद सत्यापन अनिवार्य है, तो ऐप्पल ने इसे सत्यापित करने के लिए एक सरल API प्रदान किया होगा।

टाइटबिट: ऐप स्टोर रसीद मान्यताओं की बात आती है जब आप बहुत से रिजेक्शन देख सकते हैं। लेकिन ये सभी मुद्दे हैं क्योंकि रसीद सत्यापन ठीक से नहीं किया जाता है।

लेकिन मेरी व्यक्तिगत सिफारिशें उपर्युक्त उत्तर से भिन्न होंगी। आपके लिए विचार करने वाली पहली बात यह है कि "हैकर्स को कभी कम मत समझें"। ऐप की शुरुआत से अलग-अलग रसीदों को मान्य करें। अधिक जानकारी के लिए this आलेख पढ़ें।

+1

'ऐप्पल ने एक साधारण एपीआई प्रदान की होगी - नहीं कर सकता। इस 'सरल एपीआई' की रसीद सत्यापन कॉल को पैच किया जा सकता है और इस प्रकार इसे छोड़ दिया जा सकता है। रसीदों के लिए कोई मूर्ख सबूत सत्यापन कोड नहीं है लेकिन तर्क को खराब करके एक अच्छी सुरक्षा प्राप्त की जा सकती है और यह ऐप से ऐप से अलग होना चाहिए और सार्वजनिक रूप से ज्ञात नहीं होना चाहिए। इस प्रकार एक ऐप्पल एपीआई नहीं हो सकता है। –

0

यह आवश्यक नहीं है, लेकिन निम्नलिखित कारणों के लिए फायदेमंद है:

  1. तुम हमेशा खरीदे गए उत्पादों की निश्चित सेट हो जाते हैं और नहीं मैन्युअल रूप से उत्पादों को बहाल करने की जरूरत पड़ती है जाएगा।

  2. आपके पास (सीमित) धोखाधड़ी सुरक्षा है, खासकर यदि आप स्थानीय और दूरस्थ सत्यापन को जोड़ते हैं।

  3. नुस्खा का उपयोग करके स्वचालित रूप से सदस्यता को नवीनीकृत करने के लिए समाप्ति तिथि की गणना करना अधिक आसान तरीका है।

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