>
간단한 ToDo-List 앱을 웹 서비스 계정에 연결할 수 있다고 가정하십시오. 웹 서비스를 통해 사용자는 온라인으로 자신의 할 일 목록을 편집하고 다른 장치에 따라 데이터를 동기화 할 수 있습니다.

이제 사용자가 다른 PPU 기능을 구매할 수 있도록 iOS에소모품인앱 구매 항목을 원합니다. 예를 들어 '100 알림 푸시 알림'은 IAP 항목 일 수 있습니다 ...

구매 한 Apple 문서는 다음 단계를 따릅니다.

  • 사용자가 앱 내에서 구매를 시작합니다
  • 사용자가 App Store를 인증하고 구매를 승인합니다
  • App Store에서 구매 완료 (사용자 지불)<-App Store 관점에서 구매 완료
  • 구매에 대한 앱 알림 (StoreKit, PaymentQueue, 거래 등)
  • 앱은 확인을 위해 영수증을 서버로 보냅니다.
  • 서버가 영수증을 확인하고 사용자 웹 계정에 "100 알림 푸시 알림"을 ​​추가합니다<-앱 관점에서 구매 완료

문제 : 서버가 다운되면 구매는 어떻게 되나요?

실제 구매 결과 (사용자 계정에 미리 알림 추가)가 서버에 저장되지 않고 장치에 로컬로 저장 되더라도 서버가 다운되었거나 인터넷에 연결되어 있지 않으면 영수증 확인 및 구매 완료가 실패합니다.

그러나 App Store의 관점에서 사용자가 결제를 승인하면 구매가 완료됩니다. 앱이 실제로 구매를 완료하고 사용자에게 혜택을 제공하더라도 App Store를 방해하지 않습니다.

물론 사용자는 구매 한 혜택이 누락되었다는 불만을 제기 할 수 있지만 어떻게 처리 할 수 ​​있습니까?

소모품 IAP로 작업 할 때사용자는 이전 구매를 간단하게 복원 할 수 있지만소모품 IAP로는 불가능합니까?

App Store에서 구매 양식을 복원 할 수없는 유일한 해결책은 영수증을 로컬에 저장하고 나중에 사용자에게 확인하는 옵션을 제공하는 것입니다.이것이 "올바른"해결책입니까, 아니면 이것을 처리 할 다른 방법이 있습니까?

  • 답변 # 1

    시퀀스 3에서 순서가 잘못되었습니다.

    앱이 업데이트 된 트랜잭션을 수신 한 다음 구매를 확인하고 유지하는 데 필요한 모든 논리를 시작합니다. 앱에서이 작업을 수행하면 결제 대기열에서 거래가 완료됩니다. 이 시점에서 구매는 tye App Store 관점에서 완료됩니다.

    서버가 다운되어 영수증의 유효성을 검사 할 수없는 경우 사용자에게 오류를 제공하고 유효성 검사를 다시 시도해야합니다.

    거래는 보류 상태로 유지되며 다음에 앱을 시작할 때 결제 대기열 관찰자에게 다시 표시됩니다. 그렇기 때문에 앱을 출시 할 때 가장 먼저해야 할 일은 지불 대기열 관찰자 객체를 등록하는 것입니다.

    영수증 검증을 완료하고 구매를 지속 할 수 있으면 결제 대기열에서 거래를 완료합니다.

관련 자료

  • 이전 WebView가 Android 90에서 페이지를로드하지 않습니까?
  • 다음 pnpm 상점에서 패키지를 제거하거나 강제로 다시 다운로드하는 방법은 무엇입니까?