পরীক্ষামূলক ব্যবহারকারীর জন্য আইওএস-এ-অ্যাপ্লিকেশন স্যান্ডবক্স থেকে ক্রয় সাফ করা


116

আইওএস ইন-অ্যাপ্লিকেশন কেনার স্যান্ডবক্সটি কীভাবে পুনরায় সেট করতে এবং / অথবা সাফ করবেন সে সম্পর্কে কারও কি কোনও ধারণা আছে?

আমার একটি অ্যাপ্লিকেশন রয়েছে যা আমি স্যান্ডবক্সের সাথে পরীক্ষা করছি এবং আমি প্রতিবার কিছু কেনার সময় নতুন পরীক্ষার ব্যবহারকারী তৈরি না করেই নতুন ক্রয়ের পরীক্ষা করতে চাই।

যদি আমি এটি না করি তবে আমি (অবশ্যই) সর্বদা একটি বার্তা পাই যে আমি আমার অ্যাপ্লিকেশনটির ক্রয় বোতামটি ক্লিক করার পরে অ্যাপ্লিকেশনটিতে ক্রয় আইটেমটি ইতিমধ্যে ক্রয় করা হয়েছে।

উত্তর:


75

আইএমওতে 3 টি জিনিস রয়েছে যা অ-গ্রাহ্যযোগ্যকে টেস্টিং বহনযোগ্য করে তোলার জন্য আপনি করতে পারেন:

  1. আপনার একটি ইমেলের সাথে সম্পর্কিত অনেকগুলি পরীক্ষামূলক অ্যাকাউন্ট থাকতে পারে। উদাহরণস্বরূপ জিমেইল আপনাকে কোনও ঠিকানার জন্য এলিয়াস তৈরি করতে ইমেলের সাথে একটি "প্লাস" স্ট্রিং যুক্ত করতে দেয় : সুতরাং tester+01@gmail.comএবং tester+02@gmail.comউভয়ই কেবল এদিকে যেতে পারে tester@gmail.com। সম্ভবত অন্যান্য ইমেল হোস্টগুলিও এটি করে। যখন আপনি একটি পরীক্ষা অ্যাকাউন্ট তৈরি করেন আপনাকে প্রবর্তন করতে হবে: প্রথম নাম, পদবি, ইমেল ঠিকানা, পাসওয়ার্ড, গোপন প্রশ্ন, গোপন উত্তর, জন্ম তারিখ এবং আইটিউনস স্টোর দেশ। আপনার জন্য ঠিক একই তথ্য (পাসওয়ার্ড সহ) লাগাতে পারেন tester+01@gmail.comএবং tester+02@gmail.comএবং আপনি দুটি পরীক্ষামূলক অ্যাকাউন্টগুলি থাকবে। অবশেষে, আপনার tester@gmail.comইনবক্সে আপনি উভয় পরীক্ষার অ্যাকাউন্টের নিশ্চয়তা দিতে অ্যাপল থেকে দুটি যাচাইকরণ ইমেল পাবেন।

  2. বলুন যে আপনার কাছে প্রোডাক্ট আইডি @ "এক্সট্রা_ লেভেলস" এর সাথে ব্যবহারযোগ্য নয়। সমস্ত পদ্ধতিতে ("অনুরোধপ্রডक्ट, ক্রয়প্রডাক্ট, ...) @" এক্সট্রা_ লেভেলস "লেখার পরিবর্তে কেবল লিখুন PRODUCT_ID1এবং কোনও শিরোনামের ফাইলে #define PRODUCT_ID1 @"Extra_Levels"(কোনও অর্ধবৃত্তহীন!) লিখুন, তারপরে প্রিপ্রসেসর PRODUCT_ID1 অনুসন্ধান করবে এবং এটি @" অতিরিক্ত_সামগ্রী "এর বিকল্প হিসাবে সন্ধান করবে। তারপরে @ "এক্সট্রা_ লেভেলস_01" নামে একটি নতুন অ-গ্রাহ্যযোগ্য তৈরি করা এবং # ডিফাইন পরিবর্তন করা আপনার সমস্ত পরীক্ষার ব্যবহারকারীদের জন্য কেনাকাটা পুনরায় সেট করার মতোই কার্যকর হবে।

  3. অ্যাপসমেটিকস যেমন উল্লেখ করেছে, আপনি কিছু বাগ থেকে পরিত্রাণ পেতে প্রথমে উপভোগযোগ্য আইএপি (যাতে পরীক্ষার ব্যবহারকারী প্রয়োজন হিসাবে যতগুলি কেনাকাটা করতে পারেন) ব্যবহার করে একটি অ-গ্রাহ্য আইএপি কিনলে আপনি আপনার কোডের সঠিক আচরণ পরীক্ষা করতে পারেন। অবশ্যই, আপনার পরে আসল অ-গ্রাহ্য আইএপি সহ কোডটিও পরীক্ষা করা উচিত।


17
বাহ, আমি এই সুপার-সিক্রেট জিমেইল বৈশিষ্ট্যটি কখনই জানতাম না। কত উপকারী!
bobobobo

4
আমি সবেমাত্র জানতে পেরেছি যে আপনাকে সত্যিকারের আপনার পরীক্ষার ব্যবহারকারীর ইমেলটি যাচাই করতে হবে না। আপনি নির্দিষ্ট পাসওয়ার্ড সহ 123@123.com রাখতে পারেন (যে আপনি এখনও স্যান্ডবক্স মোডে পাসওয়ার্ডটি ব্যবহার করতে যাচ্ছেন) এবং এটি এখনও কার্যকর। আমি গত রাতে সবেমাত্র পরীক্ষা করেছি।
12:44 এ সুনন

3
ইমেল এলিয়াসের জন্য প্লাস সাইন ট্রিক একা কোনও জিমেইল জিনিস নয়। কয়েক দশক পিছনে ইমেইল সার্ভারগুলির মধ্যে এটি একটি প্রাচীন traditionতিহ্য। তবে এটি কোনও ইমেল নির্দিষ্টকরণের মধ্যে কখনও অন্তর্ভুক্ত ছিল না। সুতরাং, এটি এই বৈশিষ্ট্যটির সাথে সচেতন তা নিশ্চিত হওয়ার জন্য এটি আপনার নির্দিষ্ট ইমেল সার্ভারের সাথে পরীক্ষা করুন।
বাসিল বাউরক

2
আমি ভাবতে চাই যে পরীক্ষার অ্যাকাউন্টের জন্য অ্যাপ্লিকেশন ক্রয়গুলি সাফ করা অসম্ভব;) ভিভা অ্যাপল :)
বার্তোমিজ সেমাসিক

12
+ইমেল ঠিকানাগুলি আর অ্যাপল আইডি সাইন আপ করতে ব্যবহার করা যাবে না।
pkamb

32

আপনি এটি করতে পারবেন না, যতদূর আমি জানি। স্যান্ডবক্স ব্যাকএন্ডটি সত্যিকারের অ্যাকাউন্টের মতো কাজ করে - এটি একবার কিনে নিলে তা কিনে দেওয়া হয় (এবং এভাবে আপনি পুনরুদ্ধার পরীক্ষা করতে পারেন)। আপনার বেশিরভাগ বিকাশ স্টোর স্টাফের সাথে ঝাঁকুনির সাথে করা উচিত এবং এরপরে আপনি যখন এটি বাস্তবের জন্য পরীক্ষা করতে যান, কেবল বেশ কয়েকটি পরীক্ষার অ্যাকাউন্ট তৈরি করার আশা করে।


3
সাম্যাভারমেটের সাথে সম্মত হন, এটি বাদাম যে পরীক্ষাগুলি একটি সত্যিকারের দোকানে এতটা নিবিড়ভাবে কাজ করে। কমপক্ষে স্যান্ডবক্সে কেনাকাটা সাফ করার উপায় থাকতে হবে। পরীক্ষার উদ্দেশ্যে একই ব্যবহারকারীর জন্য বেশ কয়েকটি ক্রয় করতে আমি একটি কনসোম্যাবল টাইপও যুক্ত করেছি।
অ্যাপ্ল্যাসমেটস

4
@ সামওয়ারমেট কেবলমাত্র পার্থক্য হ'ল পরিবর্তে আপনি SKPaymentTransactionStateRestoredঅ্যাপ স্টোর থেকে ফিরে আসবেন SKPaymentTransactionStatePurchased। যেহেতু আপনি এখানে প্রকৃত অর্থ ব্যবহার করছেন না, সমস্ত উদ্দেশ্য এবং উদ্দেশ্যগুলির জন্য, পরীক্ষার যতদূর পর্যন্ত SKPaymentTransactionStateRestored100% সমতুল্য SKPaymentTransactionStatePurchased। আপনার অ্যাপ্লিকেশন রাষ্ট্রটিকে "অপরিশোধিত" হিসাবে রিসেট করা সত্যিই আপনার উপর নির্ভর করে (কেবল প্রাসঙ্গিক কীচেন এন্ট্রি মুছে ফেলুন বা আপনি যে "ব্যবহারকারী এক্স কিনেছেন" তার ক্যাশে যা ব্যবহার করছেন তা মুছে দিন)
বোবোবোবো

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 । এটি আইফোন সিমুলেটরে স্টোর ইউআই পরীক্ষা করার জন্য, এমনকি সংযোগে আইএপি স্থাপন না করে ডিভাইসেও আইফোনের স্টোরকিটের একটি সিমুলেটেড সংস্করণ "

সিমস্টোরকিট কীয়ের অধীনে ব্যবহারকারীর ডিফল্ট ক্রয়ে সঞ্চয় করে ILSimSKTransactions। সুতরাং সমস্ত ক্রয় সাফ করার জন্য আপনি যা করতে পারেন:

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

সিমুলেটরটিতে, আপনি কেবল আপনার অ্যাপ্লিকেশনটি সরিয়ে আবার ইনস্টল করতে পারেন।

স্যান্ডবক্স দিয়ে পরীক্ষার আগে আমি আমার অ্যাপের স্টোর ফ্রন্টটি ডিবাগ করতে সফলভাবে সিমস্টোরকিট ব্যবহার করেছি। এই গ্রন্থাগারের সৌন্দর্যটি হ'ল আসল স্টোরকিট ফ্রেমওয়ার্কের মতো একই শ্রেণীর নামগুলি ব্যবহার করার জন্য এটি সেট আপ করা যেতে পারে (করার #define ILSimReplaceRealStoreKit 1আগে করণ দ্বারা #include <ILSimStoreKit.h>)।

উত্স ফাইলগুলিতে যেখানে আমার স্টোরকিট অ্যাক্সেস করতে হবে সেখানে আমি এই শিরোলেখ ফাইলটি অন্তর্ভুক্ত করেছি:

#import <TargetConditionals.h>

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

আমি যখন সিমুলেটারে চালিত করি তখন সিমস্টোরকিট এবং ডিভাইসে যখন চালিত হয় তখন আসল স্টোরকিট ব্যবহার করে এর প্রভাব পড়ে।


এটি কাজ করতে পারে না। আমি একটি বিল্ড ত্রুটি পাচ্ছি। আমি জিপের সমস্ত ফাইলগুলি আমার প্রকল্পে অনুলিপি করেছি এবং সমস্ত # আম্পোর্ট <স্টোরকিট / স্টোরকিট। H>> # ডিফাইন আইএলসিম্পেরেস রিল স্টোরকিট 1 # ইম্পোর্ট "ILSimStoreKit.h"
জে কি।

ILSimSK দিয়ে শুরু হওয়া ফাইলগুলি আপনার কেবল দরকার। অন্যান্য জিনিস ডেমো অ্যাপ্লিকেশানের জন্য। আপনার সঠিক ত্রুটিটি পেয়ে সম্ভবত একটি প্রশ্ন পোস্ট করা উচিত। "আমি একটি বিল্ড ত্রুটি পেয়েছি" বেশি কিছু বলে না।
এমিল কর্মিয়ার

-1

বিকল্পভাবে একাধিক পরীক্ষার ব্যবহারকারী সমাধান তৈরি করতে আপনি আইটিউনস সংযোগে অ্যাপ্লিকেশন ক্রয়ে একাধিক পরীক্ষা তৈরি করতে পারেন তবে আপনাকে ব্যবহারকারীর অ্যাকাউন্ট পরিবর্তন করার দরকার নেই।


1
ডাউনভোটগুলির কারণগুলি: ১. এটি অ্যাপ্লিকেশন কেনার সমাধানের জন্য নির্দিষ্ট ইনপুট সলিউশনটির নির্দিষ্ট পরীক্ষার জন্য আপনি চেষ্টা করতে পারেন কারণ এটি কোনও ভাল সমাধান নয় যার জন্য অ্যাপ্লিকেশন ব্যবহারকারী লগইন এবং ক্রস ডিভাইস / প্ল্যাটফর্ম সামগ্রী উপলব্ধতার জন্য প্রচুর পরিস্থিতিতে প্রয়োজন হতে পারে। ২. এটি একাধিক পরীক্ষার অ্যাকাউন্ট তৈরির মতো একাধিক পরীক্ষার ক্রয় করা ক্লান্তিকর। ৩. এছাড়াও, উত্তর খুব ভাল বিন্যাসিত হয় না।
মিকিউমুন

-1

নতুন পরীক্ষাগুলি সম্পূর্ণ করার বিপরীতে কেনাকাটাগুলি পুনরুদ্ধার করে কেবল একই পরীক্ষার অ্যাকাউন্টটি ব্যবহার করা চালিয়ে যান। সর্বোপরি, আপনি কোনও নতুন ক্রয় শুরু করেছেন বা পুরানোটিকে পুনরুদ্ধার করুন না কেন, আপনার অ্যাপ্লিকেশন একই কাজ করবে (কমপক্ষে প্রাথমিকভাবে, সম্ভবত ব্যবহারকারী ইন্টারফেসটি সম্পূর্ণ হওয়ার পরে আলাদাভাবে আপডেট হবে)। অ্যাপল হ'ল লোকেরা বিভিন্ন পরিস্থিতিতে বিভিন্নভাবে জিনিস পরিচালনা করে - এটি নিয়ে চিন্তা করবেন না।

আপনার বিতরণ যুক্তিটি পরীক্ষার জন্য এই পদ্ধতির প্রয়োগের মধ্যে এসকেপমেন্ট ট্রান্সজিস্টেশন স্টেটরেস্টার্ড কেসে রাখুন:

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

তারপরে এসকেপমেন্টমেন্ট ট্রান্সজেকশন স্টেটপ্যারেচড মামলায় সেই বিতরণ যুক্তিটি অবশ্যই রাখবেন।

শেষে, যেহেতু আমাদের মধ্যে বেশিরভাগই বিভিন্ন ডিগ্রি সম্পর্কে আবেশ-বাধ্য, তাই তাজা অ্যাকাউন্টের সাথে একটি চূড়ান্ত পরীক্ষা কর (নিরঙ্কুশ নিশ্চিততার জন্য দ্বিতীয়টি তৈরি করা কোনও বড় বিষয় নয়)।

চূড়ান্ত বিষয় লক্ষণীয়: অ্যাপলের অবস্থান বিবেচনা করুন। আইএপি পুরোপুরি পরীক্ষার জন্য যদি বিকাশকারীদের দশ বা শত অ্যাকাউন্ট তৈরি করতে সময় নষ্ট করতে হয় তবে তারা সমস্যার সমাধান করতে পারত। কোন সমস্যা নেই.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.