누구든지 iOS 인앱 구매 샌드 박스를 재설정 및 / 또는 지우는 방법에 대한 아이디어가 있습니까?
샌드 박스로 테스트중인 앱이 있는데 구매할 때마다 새 테스트 사용자를 만들지 않고도 새 구매를 테스트하고 싶습니다.
이렇게하지 않으면 내 앱의 구매 버튼을 클릭 할 때 항상 인앱 구매 항목이 이미 구매되었다는 메시지가 표시됩니다.
답변
IMO에는 비 소모품 테스트를 견딜 수 있도록하기 위해 할 수있는 세 가지가 있습니다.
-
하나의 이메일에 여러 테스트 계정을 연결할 수 있습니다. 예를 들어 Gmail은 이메일에 “플러스”문자열을 추가 할 수 있습니다 주소에 대한 별칭을 만들 수 있도록 :
tester+01@gmail.com
그리고tester+02@gmail.com
모두 정말로 이동합니다tester@gmail.com
. 아마도 다른 이메일 호스트도 똑같이 할 것입니다. 테스트 계정을 생성 할 때 이름, 성, 이메일 주소, 암호, 비밀 질문, 비밀 답변, 생년월일 및 iTunes 스토어 국가를 소개해야합니다. 당신을 위해 정확히 (비밀번호 포함) 동일한 데이터를 넣을 수 있습니다tester+01@gmail.com
그리고tester+02@gmail.com
당신은 두 개의 테스트 계정이있을 것이다. 마지막으로tester@gmail.com
받은 편지함에서 두 테스트 계정을 확인하기 위해 Apple로부터 두 개의 확인 이메일을 받게됩니다. -
제품 ID가 @ “Extra_Levels”인 비 소모품이 있다고 가정 해보십시오. 모든 메소드 (requestProduct, purchaseProduct, …)에 @ “Extra_Levels”를 작성하는 대신 써서
PRODUCT_ID1
헤더 파일을 넣어서#define PRODUCT_ID1 @"Extra_Levels"
(세미콜론없이!) 전처리 기가 PRODUCT_ID1을 검색하여 @ “Extra_Levels”로 대체합니다. 그런 다음 @ “Extra_Levels_01″이라는 새 비 소모품을 만들고 #define을 변경하는 것은 모든 테스트 사용자의 구매를 재설정하는 것만 큼 좋습니다. -
앱 매틱스가 지적했듯이, 먼저 소모성 IAP를 사용하여 (테스트 사용자가 필요한만큼 구매할 수 있도록) 일부 버그를 제거하여 비 소모성 IAP를 구매할 때 코드의 올바른 동작을 테스트 할 수 있습니다. 물론 그 후에는 실제 비 소모성 IAP로 코드를 테스트해야합니다.
답변
내가 아는 한 당신은 이것을 할 수 없습니다. 샌드 박스 백엔드는 실제 계정처럼 작동합니다. 일단 구매하면 구매 한 것이므로 복원을 테스트 할 수 있습니다. 대부분의 개발은 상점의 물건을 떼어 놓은 상태에서 수행해야하며, 실제로 테스트 할 때 여러 테스트 계정을 생성 할 것으로 예상합니다.
답변
인앱 구매 항목이 2 개 있습니다. 생산 용 1 개. 다른 하나는 테스트 용입니다. “삭제”해야 할 때 앱 내 항목을 삭제하고 새 항목을 만듭니다 (iTunes 연결에서 15 초, 코드에서 제품 ID 변경 1 초).
“신규 사용자”를 테스트 할 필요가 없으면 앱 항목에서 프로덕션을 사용합니다.
답변
글쎄, 기술적으로는 필요하지 않습니다.
를 받으면 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
}
}
}
앱 로직을 갖고 구매를 되 찾는 문제는 간단합니다. 키 체인에서 구매를 캐싱하는 경우 키 체인을 삭제합니다. 다른 방법으로 수행하는 경우 사용자가 이전에 구입 한 적이없는 것처럼 가장하도록 로컬 앱 상태를 변경하십시오. 구매 요청 대화 상자는 여전히 똑같으며 유일한 차이점은 YES를 입력하면 SKPaymentTransactionStateRestored
대신 제공 됩니다 SKPaymentTransactionStatePurchased
.
답변
앱 삭제 및 재설치는 샌드 박스 테스트에도 적용됩니다. 당연히 앱에 따라 다르지만 지금은 가입 중에 만 구매하는 구독 기반 앱을 테스트하고 있으므로 가장 쉬운 솔루션이었습니다.
답변
SimStoreKit을 확인하십시오 . 이것은 “iPhone Simulator에서 또는 Connect에서 IAP를 설정하지 않고도 장치에서 상점 UI를 테스트하기위한 iPhone StoreKit의 시뮬레이션 버전”입니다.
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
이것은 시뮬레이터에서 실행할 때 SimStoreKit을 사용하고 장치에서 실행할 때 실제 StoreKit을 사용하는 효과가 있습니다.
답변
또는 여러 테스트 사용자 솔루션을 생성하기 위해 iTunes 연결에서 앱 구매에서 여러 테스트를 생성 할 수 있으며 사용자 계정을 변경할 필요가 없습니다.