-1

내 앱에서 자동 갱신 가입을 구현 중입니다. 나는 모든 구입 및 수복물을 완벽하게 완성 할 수 있습니다. 그러나 나는 영수증 세부 사항을 저장하는 가장 좋은 방법이 무엇인지에 대해 많은 생각을하고 있습니다. 아래는 내 질문입니다.ios에 자동 갱신 구독 영수증을 저장하는 가장 좋은 방법은 무엇입니까?

  1. 트랜잭션 세부 사항을 NSUserDefaults 에 저장하고 필요할 때 세부 정보를 검색하는 것이 좋은가요?
  2. 영수증을 Documents Directory에 저장하고 거기에서 읽는 것이 좋습니다.
  3. 구독 종료 날짜를 확인하는 가장 좋은 방법은 무엇입니까? 계속해서 현재 날짜를 확인한 다음 사용자가 콘텐츠에 액세스하려고 할 때마다 구독 종료 날짜 인 과 비교해야합니까?
  4. 저장된 영수증에서 구독 종료 날짜를받을 수 있습니까? 또는 구독 종료일을 얻으려면 Apple 서버에 문의해야합니까?
  5. 지정된 기간 후에 구독이 자동으로 갱신되면 내 영수증을 업데이트하려면 어떻게해야합니까?

몇 가지 접근 방법을 알고 있습니다. 그러나 가장 좋은 방법을 알고 싶습니다. 위의 목표를 달성하기위한 최선의 조치를 안내해주십시오. 고맙습니다.

답변

2

귀하의 질문에 대답하려고 시도하지만 WWDC StoreKit 비디오, 12을 보면서 도움이 될 것입니다.

  1. 다른 모든 고객 측 상태를 저장하는 동일한 장소에 구매 상태를 저장합니다.

  2. 영수증 전체를 저장하지 않겠습니다. 이것은 과도 할 것입니다. 필요한 정보를 추출하고 저장하십시오. 영수증은 항상 Bundle.appStoreReceiptURL에서 액세스 할 수 있으므로 저장할 필요가 없습니다.

  3. 구독의 경우 Apple verifyReceipt 엔드 포인트로 영수증을 확인하고 지정된 IAP 제품 식별자에 대해 최신 expires_date을 찾아야합니다. 이 날짜를 기본값 (또는 다른 위치)에 저장하고이를 사용하여 사용자의 상태를 계산하십시오.

  4. 최근 만료일을 얻는 적절한 방법은 영수증을 자신의 서버로 보내고 저장 한 다음 주기적으로 verifyReceipt 끝점을 확인하고 응답의 latest_receipt_info 필드에서 만료를 업데이트하는 것입니다. 덜 좋은 해결책은 앱에 항상 SKPaymentQueue 옵저버 설정이 있는지 확인하는 것입니다. 반복 구독이 갱신되면 새 트랜잭션이 대기열에 표시되기 때문입니다. 이를 처리하고 새 영수증 데이터를 읽고 트랜잭션을 완료하면 전체 백엔드가 필요하지 않지만 백엔드와 독립적으로 영수증을 확인하지 않으면 IAP 크래커에 취약합니다.

  5. /verifyReceipt에게 영수증을 보내면 가장 최근 거래가있는 latest_receipt_info 키가 포함 된 JSON 응답을 받게됩니다. 영수증이 얼마나 오래 되었든 상관 없습니다.

IAP 특히 구독 그래서 나는 높은 WWDC 동영상을 감상 할 수있는 시간을내어 추천 애플의 guides on StoreKit을 읽을 수있는 간단한 시스템이 아닙니다.

관련 문제