如何检查用户是否已进行应用程序内购买?确定他们的访问级别/权限

时间:2016-03-31 02:05:30

标签: ios swift in-app-purchase nsuserdefaults

我有一个简单的应用程序,有一个非消费类应用内购买选项。

从我最初的视图控制器中我有一个'输入'按钮。

此按钮将发送一个免费的'用户(尚未购买非消费品)到一个TabBarController" A"和一系列观点以及“付费”#39;用户到另一个TabBarController" B"一组不同的观点。这些视图永远不会相交。

我想检查一下我的代码是否能够有效区分用户是否进行了应用程序内购买。

这是我的代码:

import UIKit
import StoreKit

class MainMainViewController: UIViewController, UIScrollViewDelegate, SKProductsRequestDelegate, SKPaymentTransactionObserver {

let defaults = NSUserDefaults.standardUserDefaults()
var product_id: NSString?;

...

  override func viewDidLoad() {

      product_id = "some.iap.id";
      SKPaymentQueue.defaultQueue().addTransactionObserver(self)


    super.viewDidLoad()
}

@IBAction func Enter(sender: AnyObject) {

    //Check if product is purchased
    if (defaults.boolForKey("purchased")){
         print("User has purchased da goods!")

        // Grant or otherwise full access based on whether user has purchased/not purchased.

        // Goto TabBarController A - FULL Access:
        let vc = self.storyboard!.instantiateViewControllerWithIdentifier("TabBarControllerPaid") as! TabBarControllerPaid
        self.presentViewController(vc, animated: true, completion: nil)
    }

    else if (!defaults.boolForKey("purchased")){
           print("user has NOT purchased yet")

        // Goto TabBarController B - PARTIAL Access:
        let vc = self.storyboard!.instantiateViewControllerWithIdentifier("TabBarControllerFree") as! TabBarControllerFree
        self.presentViewController(vc, animated: true, completion: nil)
   }


}

}

非常感谢任何答案,评论或想法: - )

1 个答案:

答案 0 :(得分:4)

Take a look at this tutorial,在"已购买物品"部分。

它显示了如何跟踪购买的商品(是的,如果您仔细阅读本教程,您将使用NSUserDefaults),并且您还将学习如何恢复以前的内容如果应用被删除或移动到用户的新设备,则购买。

在你的代码中,我看到" defaults.boolForKey("purchased")"。我可以看到这个代码的一个大问题是它只允许购买一个项目("购买"布尔存在NSUserDefaults或者它不存在)。