MKStoreKit autorenewable订阅(MKStoreKit autorenewabl

2019-09-22 10:48发布

我使用MKStoreKit处理autorenewable订阅。 我目前正在测试1个月的订阅(在测试订阅持续5分钟)。 我购买订阅后,我等它过期。 一旦到期我检查,如果订阅仍然有效。

[[MKStoreManager sharedManager] isSubscriptionActive:kSubscriptionMonthlyIdentifier]

像我希望这将返回错误。 但是,由于它是自动更新的,我希望MKStoreKit在这一点上与Apple重新验证订阅。 也许我使用MKStoreKit错的,但根据文档和博客文章应该是简单的:

//App Delegate
[MKStoreManager sharedManager];
//lets me know when the subscription was purchased
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(subscriptionPurchased:) name:kSubscriptionsPurchasedNotification object:nil];    
//lets me know when the subscription expires
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(subscriptionFailed:) name:kSubscriptionsInvalidNotification object:nil];

//In a view with subscription feature
if([[MKStoreManager sharedManager] isSubscriptionActive:kSubscriptionMonthlyIdentifier]){
    //access to subscription feature
}

//Where the user would purchase the subscription
[[MKStoreManager sharedManager] buyFeature:subscriptionId onComplete:^(NSString* purchasedFeature, NSData* receiptData)
{
...
}
 onCancelled:^
{
...
}

我的问题是为什么,当订阅仍然活跃在苹果的结束并没有MKStoreKit让我知道?

Answer 1:

该文件说:

为了测试的缘故,也有在生产环境和测试环境自动再生订阅之间在行为上的一些差异。

更新发生在以更快的速度,并自动再生订阅续订每天最多六次。 这可让您测试您的应用程序如何处理续订以及如何处理时隔续期以及如何处理订阅的历史,包括空白。

由于加速过期和续订率,系统开始尝试续订的订阅之前订阅可能过期,留下一个小失误在认购期。 这样的失误,也可能在生产各种原因,确保您的应用程序正确处理它们。

你可以尝试:

  1. 测试较长的认购期,使“系统”拥有更多的时间来更新订阅(6mo = 30分钟,1Y = 1小时)?
  2. 运行一个计时器继续检查,如果延长的时间段后继续订阅,?
  3. 通过恢复购买强制续期?

此外,详见这里请务必检查之前等待的时间还不超过六倍的认购期间,作为订阅可以更新单个测试账号每天只有6次。

我正要开始在自己的应用程序实现这一点,所以如果我遇到同样的情况,我会回信。

更新:

我读(某处)当一个应用程序被终止之前24小时后在期间发射的发生时自动续订。 这可能是很难在沙箱中进行复制。 更新还可以通过刷新应用收据被迫(> = iOS的7)或重新验证从最近购买收据(<iOS的7)。

我已经张贴了我关于实施github上 ,请过目。



文章来源: MKStoreKit autorenewable subscriptions