实现SKReceiptRefreshRequest逻辑

时间:2015-03-13 13:53:57

标签: ios in-app-purchase storekit

也许有人可以帮我解决这个问题。我正在开发一个包含自动更新的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

0 个答案:

没有答案