1

MacOS 응용 프로그램에서 자동으로 구독을 갱신 할 수있는 StoreKit의 기능을 구현하려고합니다.macOS 샌드 박스 환경에서 자동으로 갱신 할 수있는 구독을 구입 한 후 영수증이 업데이트되지 않음

수십 페이지를 읽고 예제를 확인한 후에 모든 것이 어떻게 잘 맞는지는 잘 알고 있지만 제대로 작동하지는 않습니다. 내가 뭘하려고 오전

: 활성 구독 로컬 영수증을 평가하여 사용할 수있는 경우

  1. 가 즉시 앱을 시작으로 확인합니다. 나는 영수증 중 In-App Purchase field entries 중 어느 것이 든 취소 날짜를 확인할 수없고 구독 만료일이 미래인지 여부를 구체적으로 확인하고 있습니다.
  2. (활성) 구독을 사용할 수없는 경우 StoreKit의 API를 사용하여 구독을 구입합니다.

구독을 처음 구입할 때이 흐름이 완벽하게 작동하므로 두 시나리오 모두 정상적으로 작동합니다. 그러나 구독 만료 날짜가 끝나면 영수증은 자동으로 업데이트되지 않습니다. 이 영수증이 Auto-renewing subscription and app receipt에 표시된 것과 같이 주기적으로 업데이트되기를 기대하고 있습니다. 결과적으로 위의 첫 번째 단계는 어떤 시점의 만료 날짜가 기록에 있으므로 만료 된 것으로 간주되기 때문에 실패합니다.

두 가지 내가 이상한 찾을 :

  • 내 SKPaymentTransactionObserver 인스턴스는 (사용자가 명시 적으로 구입 후) 가입을 구입 후 호출됩니다. 가입이 만료되면 자동으로 갱신되어야합니다 (위의 블로그 게시물에서 볼 수 있듯이).
    • SKReceiptRefreshRequest API를 사용하여 업데이트 할 영수증 (IAP의 만료 날짜 포함)을 명시 적으로 요청하면 요청 : didFailWithError : delegate 메서드를 호출하여 실패합니다. 오류 개체는 nil이므로 업데이트가 실패하는 이유를 알 수 없습니다.

나는 코드를 공유 할 수 있지만 이것은 코드가 아닌 관련이 느낌이 대신 내가 완벽하지 않습니다 및/또는 동작을 설정 프로젝트/환경의 일종입니다.

시도해 볼만한 제안이 있습니까?

답변

0

실험을 며칠 후에 https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW1에 문서화 된 서버 측 유효성 검사를 사용하는 메커니즘을 변경했습니다. 분명히 이것은 어딘가에서 돌아가는 웹 서비스를 필요로하고 환경을 더 복잡하게 만들지 만 최소한 안정적인 (그리고 안전한) 방식으로 작동합니다.