테스트 사용자에 대한 iOS 앱 내 구매 샌드박스에서 구매 지우기
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, ..."..."라고 쓰세요.
PRODUCT_ID1
에 그고어 파에일헤를 넣었습니다.#define PRODUCT_ID1 @"Extra_Levels"
(세미콜론 없이!), 그러면 전처리기가 PRODUCT_ID1을 검색하고 @"Extra_Levels"로 대체합니다.그런 다음 @"Extra_Levels_01"이라는 비소모품을 새로 만들고 #define을 변경하면 모든 테스트 사용자의 구매를 재설정하는 것과 같습니다.앱스매틱스가 지적했듯이, 일부 버그를 제거하기 위해 먼저 (테스트 사용자가 필요한 만큼 구매할 수 있도록) 소모품 IAP를 사용하여 비소모품 IAP를 구매할 때 코드의 올바른 동작을 테스트할 수 있습니다.물론 그 이후에는 실제 비소모성 IAP로 코드를 테스트해야 합니다.
제가 알기로는, 당신은 이러면 안 돼요.샌드박스 백엔드는 실제 계정처럼 작동합니다. 일단 구입한 후에는 구입한 것입니다. 따라서 복원을 테스트할 수 있습니다.대부분의 개발 작업은 매장 자료를 제거한 상태에서 수행해야 하며, 실제 테스트를 수행할 때는 여러 개의 테스트 계정을 생성해야 합니다.
테스트 진행 중에 동일한 샌드박스 Apple ID를 계속 사용할 수 있도록 테스터의 구매 기록을 지울 수 있습니다.구매 기록을 지우면 샌드박스 환경에서 선택한 테스터가 구매한 과거의 자동 갱신 가능 구독 및 비소모품이 모두 삭제됩니다.앱 스토어에서 고객이 앱 내에서 구매한 경우 영향을 받지 않습니다.
테스터 구매 내역을 지우는 방법
사용자 및 액세스의 샌드박스에서 테스터를 클릭합니다.
편집을 클릭합니다.
수정할 각 테스터의 확인란을 선택하고 구매 내역 지우기를 클릭합니다.
표시되는 대화 상자에서 구매 내역 지우기를 클릭합니다.
구매 건수가 많은 샌드박스 애플 ID는 삭제하는 데 시간이 더 걸릴 수 있습니다.이 작업은 되돌릴 수 없습니다.
저는 앱 구매 아이템이 2개 있습니다. 1개는 제작용.그리고 다른 하나는 테스트용입니다."지워야" 할 때는 앱 내 항목을 삭제하고 새 항목을 만듭니다(아이템 연결 시 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
.
App Store Connect에서 샌드박스 Apple ID에 대한 구매 내역을 지울 수 있습니다.
테스터 구매 내역을 지우는 방법
- 사용자 및 액세스의 샌드박스에서 테스터를 클릭합니다.
- 편집을 클릭합니다.
- 수정할 각 테스터의 확인란을 선택하고 구매 내역 지우기를 클릭합니다.
- 표시되는 대화 상자에서 구매 내역 지우기를 클릭합니다.
설명서 https://help.apple.com/app-store-connect/ #/dev7e89e149d를 참조하십시오.
SimStoreKit를 확인하십시오.이는 "연결에서 IAP를 설정하지 않고도 iPhone Simulator 또는 장치에서 저장소 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을 사용하는 효과가 있습니다.
- 테스트 iOS 기기에서 Settings > Apple ID > Media & Purchases(또는 iOS 13 이하의 경우 iTunes &/또는 App Store)를 엽니다.샌드박스 계정 섹션에서 강조 표시된 샌드박스 애플 ID를 누른 다음 관리를 눌러 샌드박스 서브스크립션 관리 페이지를 엽니다.
- 구독이 만료된 경우 다시 구독하려면 옵션 중 하나를 누릅니다.
- 구독을 다시 신청하거나 구독이 진행 중인 경우 Reset 적격성 버튼을 사용하여 다른 소개 오퍼(체험 또는 할인 가격)를 재설정하고 사용할 수 있습니다.
동일한 테스트 계정을 계속 사용하여 신규 구매를 완료하는 대신 구매를 복원합니다.결국, 새로운 구매를 시작하든 이전 구매를 복원하든, 앱은 동일한 작업을 수행할 것입니다(적어도 초기에는 완료 시 사용자 인터페이스가 다르게 업데이트될 수 있습니다).애플은 그러한 다양한 상황에서 상황을 다르게 처리하는 사람들입니다. 걱정하지 마세요.
테스트를 위해 이 방법의 구현 내에서 SKPaymentTransactionStateRestored 사례에 전달 로직을 배치합니다.
- (void)paymentQueue:(SKPaymentQueue *)queue
updatedTransactions:(NSArray *)transactions;
그런 다음 해당 배송 로직을 SKPayment Transaction State Purchased 케이스에 넣으십시오.
마지막으로, 우리 대부분은 다양한 정도로 강박적이기 때문에, 새로운 계정으로 최종 테스트를 수행합니다(절대적인 확실성을 위해 두 번째 계정을 만드는 것은 큰 문제가 아닙니다).
마지막으로 주목해야 할 것은 사과의 입장을 고려하는 것입니다.개발자가 IAP를 철저히 테스트하기 위해 수십 또는 수백 개의 계정을 만드는 데 시간을 낭비해야 하는 문제가 있었다면 문제를 해결했을 것입니다.문제가 없다.
여러 테스트 사용자 솔루션을 만드는 대신 iTunes connect에서 앱 구매 시 여러 테스트를 만들 수 있습니다. 그러면 사용자 계정을 변경할 필요가 없습니다.
언급URL : https://stackoverflow.com/questions/7747457/clearing-purchases-from-ios-in-app-purchase-sandbox-for-a-test-user
'programing' 카테고리의 다른 글
Android:이전 활동으로 돌아가기 (0) | 2023.06.05 |
---|---|
Android용 Firebase에서 암호를 잊어버림 (0) | 2023.06.05 |
Xcode 9 문제 수정: "iPhone 사용 중: iPhone에 대한 디버거 지원 준비 중" (0) | 2023.06.05 |
UI 테이블 보기 섹션 사이의 공간 줄이기 (0) | 2023.06.05 |
ggplot에서 모든 x축 레이블 제거 (0) | 2023.06.05 |