2014-07-11 6 views
1

나는 현재 애플의 영수증 검증 프로그래밍 가이드 다음 지방 수령 확인을 구현하고 전화하지. 나는 SKRequestDelegate을 따르는 카테고리를 NSBundle에 정의했으며, 이는 애플리케이션 위임을 초기화하기 전에 main() 내부에서 호출하는 영수증 검증을위한 메소드를 제공하고이를 UIApplicationMain()으로 전달합니다. 설명서에 표시되는 내용은 다음과 같습니다.SKReceiptRequest (에 부합 NSBundle) SKRequestDelegate

사용자 인터페이스를 표시하거나 하위 프로세스를 생성하기 전에 앱이 시작된 직후 영수증 확인을 수행하십시오. NSApplicationMain 함수가 호출되기 전에 main 함수에서이 체크를 구현하십시오. self.appStoreReceiptURL에서 더 영수증이없는 경우 다음과 대리인으로 자신을 설정으로

는 영수증 확인을위한 나의 방법은 속성이있는 SKReceiptRequest을 준비합니다. SQRequestDelegate을 따르므로 requestDidFinish:request:didFailWithError:을 모두 구현합니다.

NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys: 
          @NO, SKReceiptPropertyIsExpired, 
          @NO, SKReceiptPropertyIsRevoked, 
          @NO, SKReceiptPropertyIsVolumePurchase, 
          nil]; 

이상한 점은 앱이 Xcode 디버거에서 실행되는 동안 카테고리가 요청을 시작한 후에 두 가지 방법 중 어느 것도 호출되지 않는다는 것입니다. 이것을 설명 할 수있는 것은 무엇입니까? 개발 중에 영수증을 NSBundle에있는 카테고리와 함께 받도록하려면 (새로 고침) 어떻게 할 수 있습니까? 인용 된 문서가 나타내는 내용에도 불구하고 응용 프로그램 위임자가 존재하기 전에 요청을 보내는 것이 빠른시기일까요? 내가 사용할 수있는 샘플 코드가 있습니까?

답변

1

이것이 실패한 몇 가지 이유가있는 것처럼 보입니다. 카테고리의 사용 (현재)이 그 중 하나입니다. 나는 다음과 같은 변경하면 나는 requestDidFinish:에 콜백을 받아 진행 할 수 있습니다 :

  • 시작 물리적 장치에 디버거에서 응용 프로그램이 아닌 시뮬레이터. Apparently StoreKit (및 인앱 구매)은 시뮬레이터에서 작동하지 않습니다. 이것은 Xcode 5.1.1 release notes에 문서화되어 있습니다.

  • owned (카테고리 자체가 아님) 객체는 SKRequestDelegate에 부합합니다. (나는이 명백한 요구 사항입니다 이유를 이해하기 좋아하지만, 현재하지 않을 것입니다.)

  • Retain 모두 요청의 전체 기간 동안 SKReceiptRefreshRequestSKRequestDelegate. 둘 중 하나를 유지 하나 다른 하나를 유지하는 것은 분명히 불충분합니다. SKRequestdelegate에 대한 strong 링크를 유지하지 않습니다.

관련 문제