मैं इन-ऐप खरीद के लिए स्टोरकिट का उपयोग कर रहा हूं। मुझे लगता है कि जब उपयोगकर्ता "रद्द करें" बटन दबाता है तो एपीआई अपने व्यवहार में क्विर्की है।हैंडल रद्द आईएपी लेनदेन
उदाहरण के लिए, यदि मैं "आपकी ऐप खरीद की पुष्टि करें" स्क्रीन पर रद्द करें दबाता हूं, तो मुझे लेनदेन error.code == SKErrorPaymentCancelled
के साथ लेनदेन मिलता है जैसा कि मैं अपेक्षा करता हूं।
लेकिन मैं खरीदें धक्का और फिर अगर प्रेस रद्द करें, मैं error.code == 0
के साथ एक Failed
लेनदेन मिलता है। error.localizedDescription
"आईट्यून्स स्टोर से कनेक्ट नहीं हो सकता है" जो स्पष्ट रूप से झूठ है।
यह अनदेखा करने योग्य रद्दीकरण के रूप में सभी Failed
लेनदेन का इलाज अच्छा लगता है, लेकिन मैं यह भी स्पष्ट रूप से देख सकते हैं कि अगर डिवाइस हवाई जहाज़ मोड में ऑफ़लाइन है, मेरे पास कोई चेतावनी पॉपअप के साथ एक Failed
लेन-देन प्राप्त होता है; मुझे वास्तव में उस मामले में समस्या की व्याख्या करने के लिए उपयोगकर्ता को सूचित करना चाहिए।
मुझे लगता है कि MKStoreKit मानता है कि सभी विफलताओं रद्दीकरण हैं। MKStoreManager
की failedTransaction
विधि कभी नहीं कहा जाता है; MKStoreObserver
सभी Failed
लेनदेन के लिए हमेशा transactionCanceled
पर कॉल करता है। MKStoreManager.h
recommend no error messagetransactionCanceled
के लिए टिप्पणियां, जो समझ में आता है, लेकिन फिर उपयोगकर्ता को Failed
गैर-रद्द लेनदेन के बारे में सूचित करेगा?
इन विफलताओं को संभालने के लिए सबसे अच्छा अभ्यास क्या है? क्या मुझे त्रुटियों को निगलना चाहिए? हमेशा एक त्रुटि दिखाएं, भले ही यह अनावश्यक है?
एमकेस्टोरकिट 3.5 असफलताओं और रद्दीकरण के बीच अंतर नहीं करता है। मैंने github https://github.com/MugunthKumar/MKStoreKit/issues/3 पर एक समस्या लॉग कर दी है और मैंने इसे अपने कांटा में ठीक कर दिया है। –
धन्यवाद! मैंने आपके पुल अनुरोध को विलय कर दिया है – Mugunth
अब मेरा पुल अनुरोध विलय हो गया है, नवीनतम एमकेस्टोरकिट स्वचालित रूप से विफलताओं पर एक त्रुटि दिखाता है, फिर लेनदेन को कॉल करता है प्रतिनिधि पर रद्द किया जाता है ताकि उपयोगकर्ता स्पिनर को छुपा सकें। –