2016-12-09 11 views
8

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

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

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

मेरा पहला विचार नवीनतम रसीद प्राप्त करने और इसे सत्यापित करने के लिए "नवीनतम_receipt_info" फ़ील्ड का उपयोग करना था। लेकिन प्रलेखन अनुसार यह सुविधा केवल iOS 6 प्राप्तियों के लिए इस्तेमाल किया जाना चाहिए:

"केवल iOS के लिए ऑटो-अक्षय सदस्यता के लिए 6 शैली लेनदेन प्राप्तियों लौट आए।"

स्रोत: https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-

हालांकि मैं वास्तव में अभी भी मेरी brandnew आईओएस 10 रसीद के साथ इस क्षेत्र का उपयोग कर सकते हैं, मैं नहीं यह इसका इस्तेमाल करने के बाद से यह पदावनत है स्मार्ट है लगता है।

(एक अन्य स्रोत आप इसे अब और उपयोग नहीं करना चाहिए कह रही: https://forums.developer.apple.com/message/156580#156580)

सेब की सलाह दी समाधान अनुप्रयोग में एक SKPaymentTransactionObserver लागू करने के लिए है। यह उपलब्ध होने पर नवीनतम रसीद पुनर्प्राप्त करेगा, और बैकएंड को भेज देगा। हालांकि यह आदर्श से बहुत दूर है, यह काम कर सकता है ... हालांकि:

इसका मतलब है कि ऐप को नवीनतम रसीद प्राप्त करने के लिए सक्रिय होना है। और हमारे मामले में यह बहुत अच्छा है कि उपयोगकर्ता एप 1 में सदस्यता लेता है, और कुछ दिनों के बाद एप 2, 3 और 4 डाउनलोड करता है, लेकिन फिर कभी एप 1 का उपयोग नहीं करता है। तो इस मामले में नवीनतम रसीद कभी नहीं ली जाएगी (क्योंकि केवल ऐप 1 का पर्यवेक्षक रसीद तक ​​पहुंच सकता है)

इस समस्या को हल करने के लिए हमें अपने सदस्यता समूह में किसी भी ऐप से रसीदें प्राप्त करने में सक्षम होना चाहिए। लेकिन सेब साइट पर प्रलेखन (https://developer.apple.com/app-store/subscriptions/) आप केवल 1 app से एक सदस्यता का उपयोग कर सकते हैं, और आप कई एप्लिकेशन बात अपने आप को क्या करना है के अनुसार:

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

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

तो क्या हम चाहते हैं कि ऐसा करने का कोई तरीका है, उपयोगकर्ता को हर महीने सदस्यता खरीदने के लिए उपयोग किए जाने वाले ऐप पर वापस जाने के लिए मजबूर किए बिना?

+1

मैं अपने जवाब को हटा दिया क्योंकि वास्तविक प्राप्तियों के साथ की जाँच के बाद, यह बस गलत था। हालांकि, 'latest_receipt_info' सदस्यता के लिए हमेशा प्रकट होता है, भले ही रसीद आईओएस 6 शैली नहीं है। सुनिश्चित नहीं है कि क्या हो रहा है, क्या आप इस पर भरोसा कर सकते हैं या नहीं, एक बात स्पष्ट है: ऐप्पल ने सब्सक्रिप्शन की पुष्टि करने से गड़बड़ी की है। –

+0

नवीनतम_receipt_info बिल्कुल वही है जो मुझे चाहिए, लेकिन आधिकारिक ऐप्पल डेवलपर्स फ़ोरम समेत कई फ़ोरम पर, इसका उल्लेख नहीं किया गया है कि इसे अब और उपयोग नहीं किया जा सकता है क्योंकि इसे बहिष्कृत किया जा सकता है। लेकिन ... यह बहिष्कार 100% निश्चित नहीं है और ऐप्पल इस पर स्पष्ट उत्तर देने से इंकार कर देता है। –

उत्तर

1

अंतिम डब्ल्यूडब्ल्यूडीसी पर हम स्टोरकिट प्रयोगशालाओं में गए और व्यक्तिगत रूप से इस बारे में स्टोरकिट प्रचारक से पूछा। हमें बताया गया था कि iTunes validateReceipt endpoint द्वारा 'latest_receipt_info' फ़ील्ड वापसी ठीक है, यह जांचने के लिए कि सदस्यता का नवीनीकरण किया गया था या नहीं। यह निकट भविष्य में बहिष्कृत कर दिया करने के लिए नहीं जा रहा है, लेकिन वे कहते हैं कि समस्याओं हम में भाग का कुछ हल कुछ सर्वर-से-सर्वर संचार जोड़ने के लिए योजनाओं की क्या ज़रूरत है:

  1. आपके सर्वर अधिसूचना प्राप्त करने में सक्षम हो जाएगा किसी भी सदस्यता नवीनीकरण, रद्दीकरण, डाउनग्रेड्स इत्यादि के बारे में ऐप्पल से
  2. मान्य_receipt_info में वैधता द्वारा लौटाए गए रीसेप्ट अंतराल में कुछ फ़ील्ड जोड़े जाएंगे, जैसे कि वर्तमान के बाद सदस्यता नवीनीकृत की जाएगी, भले ही कोई समस्या चार्ज हो रही हो उपयोगकर्ता का क्रेडिट कार्ड इत्यादि

सूत्रों का कहना है:

WWDC 2017 Session 303 - What's new in StoreKit
WWDC 2017 Session 305 - Advanced StoreKit

+1

ऐप्पल ने अब इनमें से कुछ सुधार जारी किए हैं: https://itunespartner.apple.com/en/apps/news/45333106 – Kqtr

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