Ios7 SKReceiptRequest未调用(符合的NSBundle)SKRequestDelegate
我目前正在按照苹果的收据验证编程指南实施本地收据验证。我在Ios7 SKReceiptRequest未调用(符合的NSBundle)SKRequestDelegate,ios7,in-app-purchase,objective-c-category,receipt,Ios7,In App Purchase,Objective C Category,Receipt,我目前正在按照苹果的收据验证编程指南实施本地收据验证。我在NSBundle上定义了一个类别,该类别符合SKRequestDelegate,并提供了一种收据验证方法,在初始化应用程序委托并将其传递给UIApplicationMain()之前,我从main()内部调用该方法。这就是文件中所说的: 在应用程序启动后立即执行收据验证, 在显示任何用户界面或生成任何子进程之前。 在主功能中执行此检查,然后 调用NSApplicationMain函数 当在self.appStoreReceiptURL没有收
NSBundle
上定义了一个类别,该类别符合SKRequestDelegate
,并提供了一种收据验证方法,在初始化应用程序委托并将其传递给UIApplicationMain()
之前,我从main()
内部调用该方法。这就是文件中所说的:
在应用程序启动后立即执行收据验证,
在显示任何用户界面或生成任何子进程之前。
在主功能中执行此检查,然后
调用NSApplicationMain函数
当在self.appStoreReceiptURL
没有收据时,我的收据验证方法准备一个SKReceiptRequest
,其属性如下,并将自身设置为委托。因为它符合SQRequestDelegate
的要求,所以它同时实现了requestdidfish:
和request:didfailwitheror:
NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
@NO, SKReceiptPropertyIsExpired,
@NO, SKReceiptPropertyIsRevoked,
@NO, SKReceiptPropertyIsVolumePurchase,
nil];
奇怪的是,当应用程序在Xcode调试器中运行时,类别启动请求后,这两个方法都没有被调用。怎么解释呢?我如何在开发过程中接收(刷新)收据,最好是使用
NSBundle
上的类别?在应用程序委托出现之前发送请求是否为时尚早(尽管引用的文档表明了这一点)?是否有任何可供我参考的工作示例代码?似乎有几个原因导致此失败,类别的使用(此时)就是其中之一。如果我进行以下更改,我将收到对requestdidfish:
的回调,并且可以取得进展:
- 在物理设备(而不是模拟器)上的调试器中启动应用程序。StoreKit(和应用内钱包)将无法在模拟器中工作。这在中有记录。)
- 让类别(而不是类别本身)的对象符合
。(我想了解为什么这是一个明显的要求,但目前没有。)SKRequestDelegate
- 在整个请求期间,
及其SKReceiptRefreshRequest
。保留其中一个而不保留另一个显然是不够的。(请注意,SKRequestDelegate
没有维护到的SKRequest
链接。)strong