Ios 如何检查用户是否已经进行了应用内购买?确定其访问级别/权限

Ios 如何检查用户是否已经进行了应用内购买?确定其访问级别/权限,ios,swift,in-app-purchase,nsuserdefaults,Ios,Swift,In App Purchase,Nsuserdefaults,我有一个简单的应用程序,有一个非消耗品的应用程序内购买选项 从我的初始视图控制器中,我有一个“回车”按钮 此按钮将向一个TabBarController“a”和一系列视图发送一个“免费”用户(未进行非消费性购买),并向另一个TabBarController“B”发送一组不同的视图。这些观点永远不会相交 我想检查我的代码是否能够有效区分用户是否进行了应用内购买 这是我的密码: import UIKit import StoreKit class MainMainViewController: U

我有一个简单的应用程序,有一个非消耗品的应用程序内购买选项

从我的初始视图控制器中,我有一个“回车”按钮

此按钮将向一个TabBarController“a”和一系列视图发送一个“免费”用户(未进行非消费性购买),并向另一个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)
   }


}

}
非常感谢您的回答、评论或想法:-)

,在“购买物品”部分

它展示了如何跟踪已购买的物品(是的,如果您密切关注本教程,您将使用
NSUserDefaults
),还将学习如何在删除应用程序或将其移动到用户的新设备时恢复以前购买的物品


在上面的代码中,我看到“
defaults.boolForKey(“购买”)
”。我所看到的这段代码的一个大问题是,它只允许购买一件物品(“购买”布尔值存在于
NSUserDefaults
中,或者不存在)

伟大的教程-不能要求一个更当前的!我相信一天大了!我可能会修改我的整个代码,以符合该内容。只是你第二段的旁注-如果我只打算有一个非消耗品,我能不能不坚持上面的代码?对于一个IAP产品应用程序来说,它是这样的好吗?如果用户没有互联网连接,我的应用程序能否确定是否购买了该产品?我相信会的,那教程里到底是怎么回事
purchasedProductIdentifiers
仅由本地首选项填充…我认为这个带有布尔值的userDefault对他来说适用,因为他的购买类型是非消费品。我只是想知道,当用户进行购买并且在同一设备上的应用程序上时,这项功能非常有效。如果用户删除该应用程序或将其安装在另一台设备上,我们有没有办法知道该用户以前购买过什么?在没有服务器的情况下可以实现这样的功能吗?我知道我们有恢复购买选项,但从用户体验的角度来看,自动了解并激活功能将非常好。