SKReceiptRequest没有要求(一个NSBundle符合)SKRequestDelegat

2019-09-28 14:42发布

我目前正在执行本地收货确认之后苹果的收据验证编程指南 。 我已经定义了一个类别NSBundle符合SKRequestDelegate并提供了收据验证的方法,这是我从里面调用main()之前初始化应用程序委托,并把它传递给UIApplicationMain() 这是该文件说什么:

立即执行收到的验证您的应用程序启动后,显示任何用户界面或产卵任何子进程之前。 实现此检查的主要功能,被称为NSApplicationMain函数之前。

当没有收到在self.appStoreReceiptURL ,我的收据验证方法准备的SKReceiptRequest如下,并将自己作为代表与性能。 因为它符合SQRequestDelegate它同时实现了requestDidFinish:request:didFailWithError:

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

奇怪的是,无论是两种方法同时应用在Xcode调试运行时,类别开始请求后调用。 还有什么能解释一下吗? 我怎样才能成长过程中得到(刷新)收据最好与上一个类别NSBundle ? 它是可能提前发送请求的应用程序委托已进入存在之前(不管什么样的引用文件表明)? 是否有任何工作示例代码,我可以咨询?

Answer 1:

这看起来好像有几个原因,这失败,使用类别(此时)就是其中之一。 如果我做如下修改我收到回调requestDidFinish:并能取得进步:

  • 启动一个物理设备,而不是模拟器上的调试器应用程序。 显然 StoreKit(和应用内purchaseses)将不会在模拟器工作。 这是中记录的Xcode 5.1.1版本说明 。)

  • 让一个对象拥有按类别(不是类本身)符合SKRequestDelegate 。 (我想明白为什么这是一个明显的要求,但目前还没有。)

  • 保留两个SKReceiptRefreshRequest及其SKRequestDelegate请求的整个持续时间期间。 护一方而不是其他明显不足。 (请注意, SKRequest不保持一个strong链接委托 。)



文章来源: SKReceiptRequest not calling (NSBundle that conforms to) SKRequestDelegate