MKStoreKit -isSubscriptionActive总是返回False

我正在使用MKStoreKit自动更新订阅。

在button的TouchUpInside方法我使用下面的代码..

if([[MKStoreManager sharedManager] isSubscriptionActive:kSubscriptionMonthlyIdentifier]){ //access to subscription feature }else{ //ask user to buy } 

它总是让我失望。 并要求用户购买。

当我试图再次购买它显示我, You are already subscribed

  • 有什么我做错了吗?

  • 有没有其他方法来检查订阅是否有效。

  • 我应该如何知道续订?

任何帮助,将不胜感激。

提前致谢。

1)您应该通过添加[MKStoreManager sharedManager];来初始化MKStoreKit [MKStoreManager sharedManager]; 在你的applicationDidFinishLaunching中。

2)你应该检查,你正确填写MKStoreKitConfigs.plist

您必须将订阅应用内ID添加到Subscriptions字典(格式为"subs id" - "subs duration" )。

在苹果文档中,您可以find有关自动更新子目录的信息:每次续订自动更新订阅新交易将生成并发送到您的应用程序。 从理论上讲,MKStoreKit必须关心所有这些东西,而且是isSubscriptionActive应该起作用。

另外,您可以添加button以恢复以前的购买。 所以,在你的情况下,当用户在调用-isSubscriptionActive调用-restorePreviousTransactions之前按下buybutton,或者你可以添加这个button,这样用户可以恢复以前的交易^如果他已经购买了订阅。

你可以为这个通知添加观察者:

 #define kSubscriptionsPurchasedNotification @"MKStoreKitSubscriptionsPurchased" #define kSubscriptionsInvalidNotification @"MKStoreKitSubscriptionsInvalid" 

第一次通知MKStoreKit产生,当续订(或购买),第二个 – 更新失败。

MKStoreKit GitHub上有一个公开的问题 ,可能与您正在遇到的问题有关。 该线程中的人声称,应用程序初始化后MKStoreKit总是返回NO为isSubscriptionActive 。 不过,他们似乎能够成功使用MKStoreKit的先前版本。 你可能想尝试一下。