परीक्षण उपयोगकर्ता के लिए आईओएस-इन-ऐप खरीदारी सैंडबॉक्स से खरीदारी साफ़ करना


116

क्या किसी के पास iOS इन-ऐप खरीदारी सैंडबॉक्स को रीसेट और / या कैसे साफ़ करने के बारे में कोई विचार है?

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

यदि मैं ऐसा नहीं करता हूं, तो मुझे (निश्चित रूप से) हमेशा एक संदेश मिलता है कि जब मैं अपने ऐप के खरीद बटन पर क्लिक करता हूं तो इन-ऐप खरीदारी आइटम पहले ही खरीदे जा चुके होते हैं।

जवाबों:


75

IMO में 3 चीजें हैं जिनका आप परीक्षण कर सकते हैं गैर-उपभोग्य सामग्रियों को बीरबल:

  1. आपके पास एक ईमेल से जुड़े कई परीक्षण खाते हो सकते हैं। उदाहरण के लिए जीमेल आपको एक पते के लिए उपनाम बनाने के लिए ईमेल में "प्लस" स्ट्रिंग जोड़ने देता है : इसलिए tester+01@gmail.comऔर tester+02@gmail.comदोनों वास्तव में बस जाते हैं tester@gmail.com। संभवतः अन्य ईमेल होस्ट भी ऐसा ही करते हैं। जब आप एक परीक्षण खाता बनाते हैं तो आपको परिचय देना होगा: पहला नाम, अंतिम नाम, ईमेल पता, पासवर्ड, गुप्त प्रश्न, गुप्त उत्तर, जन्म तिथि और आईट्यून्स स्टोर देश। आप के लिए ठीक उसी डेटा (पासवर्ड सहित) डाल सकते हैं tester+01@gmail.comऔर tester+02@gmail.comऔर आप दो परीक्षण खाते होंगे। अंत में, आपके tester@gmail.comइनबॉक्स में आपको दोनों परीक्षण खातों की पुष्टि करने के लिए Apple से दो सत्यापन ईमेल प्राप्त होंगे।

  2. कहें कि आपके पास उत्पाद ID @ "Extra_Levels" के साथ गैर-उपभोज्य है। सभी तरीकों में @ "Extra_Levels" लिखने के बजाय (requestProduct, खरीद उत्पाद, ...), बस लिखें PRODUCT_ID1और कुछ हेडर फ़ाइल में #define PRODUCT_ID1 @"Extra_Levels"(कोई अर्धविराम के साथ नहीं!) लिखें , फिर प्रीप्रोसेसर Product_ID1 को खोजेगा और इसे @ "Extra_Levels" के लिए स्थानापन्न करेगा। फिर @ "Extra_Levels_01" नामक एक नया गैर-उपभोज्य बनाना और #define को बदलना आपके सभी परीक्षण उपयोगकर्ताओं के लिए खरीदारी को रीसेट करने जितना अच्छा होगा।

  3. जैसा कि ऐपमैटिक्स ने बताया है, जब आप कुछ बग्स से छुटकारा पाने के लिए सबसे पहले एक उपभोज्य IAP (ताकि परीक्षण उपयोगकर्ता अधिक से अधिक खरीदारी कर सकें) का उपयोग करके अपने कोड के सही व्यवहार का परीक्षण कर सकते हैं। बेशक, आपको वास्तविक गैर-उपभोज्य IAP के साथ कोड का भी परीक्षण करना चाहिए।


17
वाह, मुझे इस सुपर-गुप्त जीमेल फीचर के बारे में कभी नहीं पता था। कितना उपयोगी है!
बोबोबो

4
मुझे अभी पता चला है कि आपको वास्तव में अपने परीक्षण उपयोगकर्ता ईमेल को सत्यापित करने की आवश्यकता नहीं है। आप केवल निर्दिष्ट पासवर्ड के साथ 123@123.com डाल सकते हैं (कि आप अभी भी सैंडबॉक्स मोड में पासवर्ड का उपयोग करने जा रहे हैं) और यह अभी भी काम करता है। मैंने कल रात परीक्षण किया।
दोपहर

3
ईमेल उपनामों के लिए PLUS साइन ट्रिक अकेले GMail चीज नहीं है। दशकों से वापस जा रहे ईमेल सर्वरों के बीच यह बहुत पुरानी परंपरा है। लेकिन इसे किसी भी ईमेल विनिर्देशों में शामिल नहीं किया गया था। तो, यह सुनिश्चित करने के लिए अपने विशेष ईमेल सर्वर के साथ परीक्षण करें कि यह इस सुविधा के साथ समझदार है।
बेसिल बोर्क

2
) विवा एप्पल :); मुझे लगता है कि would'n है कि यह परीक्षण खाते के लिए इन-ऐप खरीद स्पष्ट करने के लिए असंभव है
Bartłomiej Semańczyk

12
+ईमेल पते अब Apple ID के लिए साइन अप करने के लिए उपयोग नहीं किए जा सकते हैं।
pkamb

32

आप ऐसा नहीं कर सकते, जहाँ तक मुझे पता है। सैंडबॉक्स बैकएंड एक वास्तविक खाते की तरह काम करता है - एक बार खरीदने के बाद, इसे खरीदा जाता है (और इस तरह आप पुनर्स्थापना का परीक्षण कर सकते हैं)। आपको अपना अधिकांश विकास स्टोर के सामान के साथ करना चाहिए, और फिर जब आप इसे असली के लिए परीक्षण करने के लिए प्राप्त करते हैं, तो बस कई परीक्षण खाते बनाने की अपेक्षा करें।


3
समरूपता से सहमत, यह पागल है कि परीक्षण एक वास्तविक स्टोर के साथ मिलकर काम करता है। कम से कम सैंडबॉक्स में खरीदारी को साफ करने का एक तरीका होना चाहिए। परीक्षण के उद्देश्य से एक ही उपयोगकर्ता के लिए कई खरीदारी करने के लिए मैंने एक उपभोज्य प्रकार भी जोड़ा।
ऐपमैटिक्स

4
@samvermette केवल अंतर यह है कि आपको SKPaymentTransactionStateRestoredइसके बजाय ऐप स्टोर से वापस मिल जाएगा SKPaymentTransactionStatePurchased। चूंकि आप सभी इरादों और उद्देश्यों के लिए यहां वास्तविक धन का उपयोग नहीं कर रहे हैं, इसलिए परीक्षण के अनुसार SKPaymentTransactionStateRestoredयह 100% के बराबर SKPaymentTransactionStatePurchasedहै। "अपचर्चित" करने के लिए अपने ऐप स्टेट को रीसेट करना वास्तव में आप पर निर्भर है (बस प्रासंगिक किचेन प्रविष्टि को हटा दें या जो भी आप कैश करने के लिए उपयोग कर रहे हैं, वह "उपयोगकर्ता एक्स खरीदा")
bobobobo

9

मेरे पास 2 एप्लिकेशन खरीद आइटम हैं। 1 उत्पादन के लिए। और परीक्षण के लिए अन्य। जब मुझे "साफ़" करने की आवश्यकता होती है, तो मैं ऐप आइटम में हटाता हूं और नए एक बनाता हूं (इटंक्स कनेक्ट में 15 सेकंड और कोड में उत्पाद आईडी बदलने के लिए 1 सेकंड)

अगर मुझे "नए उपयोगकर्ता" का परीक्षण करने की आवश्यकता नहीं है, तो मैं ऐप आइटम में उत्पादन का उपयोग करता हूं।


हां, उत्पाद की एक नई प्रतिलिपि बनाना, और कोड में उत्पाद का नाम बदलना (संभवतः # इसे परिभाषित करना) यथार्थवादी परीक्षण के लिए सबसे आसान समाधान है।
जूलियनसमेस

7

ठीक है, तकनीकी रूप से आपको इसकी आवश्यकता नहीं है।

यदि आप प्राप्त करते हैं SKPaymentTransactionStateRestored, तो यह उपयोगकर्ता को सत्यापित करने और उसे खरीदारी प्रदान करने वाले ऐप स्टोर के बराबर 100% है। मेरे पास एक स्विच है:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
  for( SKPaymentTransaction *purch in transactions )
  {
    switch( purch.transactionState )
    {
      case SKPaymentTransactionStateRestored:
        info( "PURCHASE RESTORE" ) ;
        // fall thru
      case SKPaymentTransactionStatePurchased:
        [[SKPaymentQueue defaultQueue] finishTransaction:purch];
        // Do regular changes to app state for this purchase,
        // register in keychain, etc.
        break ;

       //.. other cases
     }
  }
}

आपकी ऐप लॉजिक होने / वापस खरीद लेने का प्रश्न सरल है: यदि आप किचेन में खरीदारी को रोक रहे हैं, तो अपने किचेन को हटा दें। यदि आप इसे कुछ अन्य तरीके से कर रहे हैं, तो बस अपने स्थानीय एप्लिकेशन स्थिति को बदल दें ताकि उपयोगकर्ता इसे पहले कभी नहीं खरीद सके। संवाद खरीदने का अनुरोध अभी भी बिल्कुल वैसा ही है, फर्क सिर्फ इतना है कि जब आप यस को पंच करते हैं, तो यह आपको SKPaymentTransactionStateRestoredइसके बजाय देता है SKPaymentTransactionStatePurchased


5

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


3

SimStoreKit की जाँच करें । यह एक "iPhone के StoreKit का नकली संस्करण है, iPhone सिम्युलेटर पर स्टोर UI का परीक्षण करने के लिए, या यहां तक ​​कि डिवाइस से कनेक्ट में IAP को सेट किए बिना।"

SimStoreKit कुंजी के तहत उपयोगकर्ता डिफॉल्ट में खरीदारी करता है ILSimSKTransactions। तो आप कर सकते हैं सभी खरीद स्पष्ट करने के लिए:

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"ILSimSKTransactions"]

सिम्युलेटर पर, आप बस अपना ऐप हटा सकते हैं और इसे फिर से इंस्टॉल कर सकते हैं।

मैंने सैंडबॉक्स के साथ परीक्षण करने से पहले अपने ऐप के स्टोर के सामने डिबग करने के लिए सफलतापूर्वक SimStoreKit का उपयोग किया है। इस पुस्तकालय की सुंदरता यह है कि इसे वास्तविक StoreKit फ्रेमवर्क के रूप में समान श्रेणी के नामों का उपयोग करने के लिए सेट-अप किया जा सकता है (करने #define ILSimReplaceRealStoreKit 1से पहले#include <ILSimStoreKit.h> )।

स्रोत फ़ाइलों में जहां मुझे StoreKit तक पहुंचने की आवश्यकता है, मैं इस हेडर फ़ाइल को शामिल करता हूं:

#import <TargetConditionals.h>

#if TARGET_IPHONE_SIMULATOR
    #define kILSimAllowSimulatedStoreKit 1
    #define ILSimReplaceRealStoreKit 1
    #import <ILSimStoreKit.h>
#else
    #import <StoreKit/StoreKit.h>
#endif

जब मैं डिवाइस पर चलता हूं तो सिमुलेटर और असली स्टोरकीट पर चलने पर सिमस्टॉरिट का उपयोग करने का प्रभाव पड़ता है।


यह काम करने के लिए नहीं मिल सका। मुझे बिल्ड एरर मिल रहा है। मैंने ज़िप में सभी फाइलों को अपने प्रोजेक्ट में कॉपी किया और सभी #import <StoreKit / StoreKit.h> को #define ILSimReplaceRealStoreKit 1 #import "ILSimStarKit.h"
Jay Q.

आपको बस उन फ़ाइलों की आवश्यकता है जो ILSimSK से शुरू होती हैं। अन्य सामान डेमो ऐप के लिए है। शायद आपको सटीक त्रुटि के साथ एक प्रश्न पोस्ट करना चाहिए। "मुझे एक बिल्ड त्रुटि मिल रही है" ज्यादा नहीं कहता।
एमिल कॉर्मियर

-1

वैकल्पिक रूप से कई परीक्षण उपयोगकर्ता समाधान बनाने के लिए आप आईट्यून्स कनेक्ट में ऐप खरीद में कई परीक्षण बना सकते हैं फिर आपको उपयोगकर्ता खाते को बदलने की आवश्यकता नहीं है।


1
डाउनवोट्स का कारण निम्न हैं: 1. यह एक अच्छा समाधान नहीं है क्योंकि आप विशिष्ट एप्लिकेशन खरीद समाधान का परीक्षण करने का प्रयास कर सकते हैं जिसमें एप्लिकेशन उपयोगकर्ता लॉगिन और क्रॉस डिवाइस / प्लेटफ़ॉर्म सामग्री उपलब्धता के साथ कई परिदृश्यों की आवश्यकता हो सकती है। यह कई परीक्षण खातों के रूप में कई परीक्षण खरीद बनाने के रूप में (अधिक सटीक है) थकाऊ है। 3. इसके अलावा, जवाब बहुत अच्छी तरह से स्वरूपित नहीं है।
मिकेमून

-1

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

परीक्षण के लिए इस पद्धति के कार्यान्वयन के भीतर SKPaymentTransactionStateRestored मामले में अपना वितरण तर्क रखें:

- (void)paymentQueue:(SKPaymentQueue *)queue
 updatedTransactions:(NSArray *)transactions;

फिर उस वितरण तर्क को SKPaymentTransactionStatePurchased मामले में रखना सुनिश्चित करें।

अंत में, क्योंकि हममें से अधिकांश अलग-अलग डिग्री के लिए जुनूनी-बाध्यकारी हैं, एक ताजा खाते के साथ एक अंतिम परीक्षण करें (पूर्ण निश्चितता के लिए एक दूसरे को बनाने के लिए कोई बड़ी बात नहीं)।

ध्यान देने योग्य अंतिम बात: सेब की स्थिति पर विचार करें। अगर डेवलपर्स को आईएपी को अच्छी तरह से जांचने के लिए दसियों या सैकड़ों खाते बनाने में समय बर्बाद करने की समस्या थी, तो उन्होंने समस्या को हल कर दिया होता। कोई बात नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.