2012-07-26 21 views
5

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

मेरे पास सबकुछ एकीकृत है, और अब परीक्षण कर रहा हूं। मैंने ऐप को कई बार चलाया है और सत्यापन सामग्री कई बार चल रही है।

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

मैं डीबगर से एक्सकोड से ऐप फिर से चलाता हूं, जो ऐप को परीक्षण डिवाइस पर दोबारा इंस्टॉल करता है और इसे ताजा चलाता है।

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

जब मैं एक नए एप्लिकेशन के रूप में यह चलाने के लिए, सत्यापन कोड नहीं चलता है और मेरी दिनचर्या है कि एप्पल StoreKit सामान के साथ कुछ भी कर एक एकान्त

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer]; 

(प्रेक्षक के अलावा चलाया जाता है में से किसी से कोई कोड स्टोरकिट सामान के लिए मेरा प्रतिनिधि वस्तु है और इसे बनाया गया है लेकिन इनिट और इनिट को छोड़कर इसमें कोई रूटीन नहीं है, सिवाय इसके कि एक सिंगलटन टाइप क्लास बनाने के लिए एक स्थैतिक चर सेट सेट करें)

जांच उद्देश्यों के लिए, मैंने

में भी जोड़ा
NSLog(@"in App Delegate, payment queue transactions are %@", [[SKPaymentQueue defaultQueue] transactions]); 

जो आसपास के किसी भी पुराने लेनदेन को दिखाता है।

मुझे कोई संकेत नहीं है कि ऐप को नया इंस्टॉल करने पर मूल परीक्षण उपयोगकर्ता के ऐप्पल आईडी के लिए क्यों पूछना शुरू हो गया है, डिवाइस के लिए स्टोर के लिए ऐप्पल आईडी अलग है, और मैं किसी भी कोड को चलाने की पहचान नहीं कर सकता StoreKit तक पहुंचता है (ऊपर वर्णित के अलावा)।

इसमें किसी भी अंतर्दृष्टि की सराहना की जाएगी।

ईटीए: पासवर्ड संवाद में कैंसल को स्पर्श करने से ऐप में कोई अतिरिक्त कोड नहीं चलता है और ऐप को चलने से नहीं रोका जाता है।

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

धन्यवाद

+0

क्या आपने इसे किसी भी तरह हल किया है? –

+0

@bluesm मैंने कभी समस्या का समाधान नहीं किया और वास्तव में उस डिवाइस का उपयोग नहीं किया जिसमें मुझे समस्याएं थीं। माफ़ कीजिये। मैं आखिरकार कोशिश कर सकता हूं और उस पर वापस आ सकता हूं क्योंकि मेरे पास अभी भी एक उपकरण में डिवाइस है ... – chadbag

उत्तर

2

StoreKit.framework काम करता है सिस्टम-वाइड, तो एप्पल आईडी है कि प्रदर्शित किया जाता अपने अनुप्रयोग से कोई लेना देना नहीं है, और एप्लिकेशन पुन: इंस्टॉल किसी भी प्रभाव नहीं होगा।

हालांकि, आप कर सकते हैं log out from the iTunes Store/App Store:

  1. नल सेटिंग आईट्यून & ऐप स्टोर
  2. टैप एप्पल आईडी (शीर्ष पर बटन)
  3. नल में हस्ताक्षर किए गए
  4. "साइन आउट" →

जब आप फिर अपने ऐप का उपयोग करते हैं, तो StoreKit दोनों ईमेल और पासवर्ड के लिए संकेत देना चाहिए।

+0

मुझे नहीं पता कि आपने टिप्पणियां देखी हैं कि AppleID सेटिंग्स में संग्रहीत किसी से संबंधित नहीं है ("AppleID के लिए डिवाइस के लिए स्टोर अलग है ") – chadbag

+0

यह लगभग है जैसे आईओएस ने कहीं भी जानकारी संग्रहीत की है" यह ऐप पिछली खरीद जानकारी का अनुरोध कर रहा है "और बाद में लोड पर इसकी मांग नहीं कर सकता है। केवल ऐप को हटाने से मुझे इससे छुटकारा पाना पड़ा। – rob5408

+0

@ चाडबग आह, क्षमा करें, आपको वहां सही ढंग से समझ में नहीं आया। सुनिश्चित नहीं है कि क्या हो रहा है। :( –

-1
Steps to Fix: 
1. Starting at the App Store, pull up the multi-task bar and tap the Settings app. 
2. Scroll down and tap 'General'. 
3. Scroll down and tap 'Date & Time'. 
4. If the 'Set Automatically' switch is ON, turn it OFF. 
5. Tap 'Set Date & Time'. 
6. Tap the field that says "[day of the week], [month][day], 2013". 
7. Adjust the year wheel to say "2012" and back out of the Date & Time section. 
8. Multi-task back to the App Store and attempt to download the app again. 
9. Tap 'Cancel' on the "Cannot connect…" modal. 
10. Return to the native Settings > General > Date & Time > Set Date & Time. 
11. Go back to the month, date, year wheels and change the year to "2030". 
12. Back out to the home screen and launch the App Store. 
13. A "Cannot connect to the Store" modal should appear right away. 
14. Tap 'OK' and then multi-task back to Settings. 
15. Return all the way back to the month, date, year wheels again and change the year back to "2013. 
16. Multi-task back to the App Store and attempt to download the app again. 
6

मुझे बिल्कुल वही समस्या थी और इसे हल करने के लिए घंटों तक संघर्ष किया गया था।

जैसा कि पहले उल्लेख किया है, StoreKit काम करता है सिस्टम-वाइड और सिस्टम किसी भी लेनदेन जिसके लिए

[[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 

बुलाया नहीं किया गया है के लिए प्रवेश के लिए कहता रहता है। मैं RMStore उपयोग कर रहा था, स्रोत कोड को देखा मैं इस संदिग्ध लाइनों पाया:

if (error.code != RMStoreErrorCodeUnableToCompleteVerification) { 
    // If we were unable to complete the verification we want StoreKit to keep reminding us of the transaction 
    [queue finishTransaction:transaction]; 
} 

यह शायद क्या हुआ है:

  • मैं पहली बार अपने परीक्षण के साथ उत्पाद खरीदा एप्पल आईडी
  • मैं नष्ट कर दिया परीक्षण उद्देश्यों के लिए उत्पाद
  • मैंने इसे फिर से खरीदने की कोशिश की। इस बिंदु पर मैंने गलत प्रमाण पत्र दर्ज किया और आरएमएसटोर ने [[SKPaymentQueue defaultQueue] finishTransaction: पर कॉल नहीं किया।
  • ऐप ने प्रत्येक स्टार्टअप में लॉगिन करने के लिए कहा।

मैंने एक अलग परीक्षण खाते से लॉगिन करने का प्रयास किया लेकिन फिर भी वही चेतावनी पुरानी ऐप्पल आईडी के साथ लॉगिन करने के लिए कहा। मैंने आईट्यून्स कनेक्ट पर ऐप्पल आईडी भी हटा दी लेकिन इससे मदद नहीं मिली।

अंत में मैं उसी खाते के साथ उत्पाद को पुनर्स्थापित (खरीद नहीं) द्वारा हल करने में कामयाब रहा। मुझे नहीं पता कि इस समस्या को हल करने का कोई और तरीका है (यानी StoreKit कतार को रीसेट करने के लिए)। वैसे भी हमेशा अपने कोड में finishTransaction पर कॉल करना याद रखें।

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