애플제품 개발 시, 인앱결제/인앱구매 (정확히는 "앱 내 구입" 인데, 많은 사람들은 in-app purchase 라는 영어 용어때문인지 인앱결제, 인앱구매 등으로 많이들 검색하는 것 같음..)를 구현할 때 따라야하는 가이드라인이 존재합니다.
이 중에서 3.1.1 앱 내 구입 내용 중에는 아래의 항목이 있습니다.
앱 내 구입을 통해 구입한 크레딧이나 게임 내 화폐는 사용 기한이 없어야 하며 복원할 수 있는 모든 앱 내 구입에 대한 복원 메커니즘을 반드시 갖추고 있어야 합니다.
소모성 제품 (게임 아이템, 닉네임 변경권 등등)을 제외한 것들에 대해서는 복원 로직이 있어야한다는 얘기입니다. 그러니까, 유저가 앱을 제거했다가 재설치하였어도 이미 인앱 결제로 구매한 내역이 존재한다면 복원해줄 수 있는 항목에 대해서는 복원 로직이 있어야한다는 것 입니다.
인앱 결제를 구현할 때는 StoreKit2 를 사용하실텐데 여기에 구매한 항목들 확인은 물론 구매이력 복원까지 기능이 있습니다.
이 때 시뮬레이터에서는 Storekit configuration을 설정해도 제대로 확인하기가 어려워서 실기기에 직접 빌드하고, Sandbox계정을 연결해서 구매테스트를 해보는게 가장 편합니다.
본 포스트에서는 실기기 상에서 샌드박스 계정으로 구매 복원 테스트하는 내용을 기재합니다.
일단 테스트하기 전에, 로그인되어져있는 샌드박스 계정을 로그아웃 해줍니다.
저의 경우는 "설정" -> "App Store" 하단 에 있었습니다.
인터넷을 검색해보니 개발자 메뉴에 있었다는 글도 보았으니 참고해주세요.
테스트 빌드에서 한 번도 결제 시도를 안했다면 해당 란이 없을 수도 있습니다. 본 테스트는 구매 이력 "복원" 테스트이므로 한 번 구매를 하실때 샌드박스 계정을 입력하게 될텐데, 그렇게 하면 위 스크린샷 처럼 노출될 것 입니다.
여기서 로그아웃을 선택해서 로그아웃합니다.
이제 다시 앱으로 돌아가서 인앱결제 항목에 대해 구매시도를 해주세요. 샌드박스 계정은 로그아웃한 상태이기 때문에 로그인창이 뜰겁니다. 샌드박스 계정으로 로그인해주세요.
로그인에 성공하면 좌측 스크린샷 처럼 구매 바텀시트가 노출될텐데, 여기서 x 버튼을 누르시고 구매 취소를 하세요.
저의 앱은 광고제거 아이템이었습니다.
이미 구매이력이 있지만 여기서는 구매이력이 제대로 불러와지지 않아 배너가 노출되었습니다.
여기서 다시 구매 화면으로 돌아가서
본인께서 구현하신 구매복원 로직을 실행시키시면 됩니다.
기대결과로는 제대로 구매가 복원되어있어야하고 관련된 로직들도 정상적으로 동작해야합니다.
저의 경우는 광고배너가 노출이 안되어서 구매 복원 확인완료했고.. 추가로 이미 구매한 이력이 있는 항목에 대해서, 추가 구매 시도시에는 그것을 막는 로직을 넣으시면 더 좋을 것 같네요.
끝
'SwiftUI로 1인 앱 개발 해보기' 카테고리의 다른 글
AppStore Connect 앱 내 구입 심사정보 스크린샷 첨부 오류 해결 (0) | 2025.02.01 |
---|---|
SwiftUI 커스텀 폰트 적용해보기 (0) | 2025.01.29 |
XCode 15 이후 다국어지원해보기 (0) | 2025.01.17 |
SwiftUI에서 런치 스플래시 화면을 간단하게 제작하기 (0) | 2024.12.28 |
댓글