【问题标题】:MKStoreKit -isSubscriptionActive always return FalseMKStoreKit -isSubscriptionActive 总是返回 False
【发布时间】:2012-10-26 08:30:19
【问题描述】:

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

在 Button 的 TouchUpInside 方法上,我正在使用以下代码..

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

它总是返回错误。并要求用户购买。

当我再次尝试购买时,它显示You are already subscribed。

  • 是不是我做错了什么?

  • 是否有其他方法可以检查订阅是否处于活动状态。

  • 我应该如何知道订阅已续订?

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

    标签: iphone objective-c ios in-app-purchase mkstorekit


    【解决方案1】:

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

    2) 您应该检查一下,您是否正确填写了MKStoreKitConfigs.plist:

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

    在苹果文档中,您可以找到有关自动更新潜艇的信息: 自动更新订阅的每次更新都会生成新交易并将其发送到您的应用程序。理论上,MKStoreKit 必须处理所有这些东西,isSubscriptionActive 应该可以工作。

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

    您可以为此通知添加观察者:

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

    第一个通知 MKStoreKit 生成,当订阅续订(或购买)时,第二个 - 当续订失败时。

    【讨论】:

    • 感谢输入 1。和 2。已经完成。我可以购买产品 ID 并在购买完成或失败时收到通知。 :( 我怎么知道自动订阅何时完成?
    • 我是否回答了您的问题,或者您所说的“我怎么知道自动订阅何时完成”是什么意思,我可能误解了您的意思吗?
    • 但 -restorePreviosTransactions 要求用户登录。
    • 是的,因此最好添加特殊按钮来恢复以前的交易 - 或者两次询问用户密码。
    • 但是当用户订阅它应该自动更新。不是每次都要求用户登录..
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 2021-11-05
      • 2018-11-05
      • 2019-05-06
      • 2017-04-29
      • 2013-04-30
      相关资源
      最近更新 更多