也许有人可以帮我解决这个问题。我正在开发一个包含自动更新的inapp购买的应用程序,我不确定在哪里实施SKReceiptRefreshRequest。
我的应用触发
[[IAPManager sharedManager] addTransactionObserver]
在AppDelegate上观察inapps(因为我认为自动更新某些交易可能会在应用程序关闭时发生,例如续订或取消。
然后我检查这样的订阅(在MainViewController上)
bool receiptExist = [[NSFileManager defaultManager] fileExistsAtPath:[[[NSBundle mainBundle] appStoreReceiptURL] path]];
if (receiptExist == NO) {
if ([[UserManager sharedManager] isPremium] == true) {
// Is't premium, but no receipt, launch receipt grab function here
SKReceiptRefreshRequest *refresh = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:nil];
refresh.delegate = self;
[refresh start];
}
[[UserManager sharedManager] setIsPremium:false];
[[UserManager sharedManager] saveUser];
return;
}
else {
// activate receipt check and enable features
}
然后我抓住收据并再次检查订阅
- (void)requestDidFinish:(SKRequest *)request
{
[[SubscriptionManager sharedManager] updateSubscriptions];
[[SubscriptionManager sharedManager] updateEventsLog];
NSLog(@"updated subscriptions");
}
这是对的吗?
我已经读过,只有出于安全原因才应该在completeTransaction或restoreTransaction事件之后调用SKReceiptRefreshRequest