在 WWDC 2013 关于处理应用商店收据的演讲中,建议对于 iOS 应用,应尽快调用收据验证码。甚至之前application:didFinishLaunchingWithOptions:
- 即在main()
功能。我想它的工作方式如下:
int main(int argc, char *argv[]) {
@autoreleasepool {
validateReceiptMethod(); // <---- HERE
int retVal = UIApplicationMain(argc, argv, nil, nil);
return retVal;
}
}
这个想法是该UIApplicationMain()
方法是启动您的应用程序并调用application:didFinishLaunchingWithOptions:
. 如果你把validateReceiptMethod()
after UIApplciationMain()
,它永远不会运行。
无论如何,这工作得很好。但是如果没有收据怎么办?然后你需要打电话SKReceiptRefreshRequest
从应用商店获取一个新的,这很好。但是,如果您之前运行此代码UIApplciationMain()
,它也会在您的任何 UI 显示之前运行。那么在向用户显示 Apple ID 登录对话框方面会发生什么?甚至可以SKReceiptRefreshRequest
从main()
方法中调用吗?