我有一个简单的应用程序,有一个非消耗性的应用程序内购买选项。
在我最初的视图控制器中,我只有一个“回车”按钮。
此按钮会将“免费”用户(尚未进行非消耗性购买)发送到一个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)
}
}
}非常感谢您的回答,评论或想法:-)
发布于 2016-03-31 19:58:22
Take a look at this tutorial,在“购买的物品”部分下。
它展示了如何跟踪已购买的商品(是的,如果您仔细遵循本教程,您将使用NSUserDefaults ),您还将学习如何在应用程序被删除或移动到用户的新设备时恢复之前的购买。
在上面的代码中,我看到了"defaults.boolForKey("purchased")“。我能看到的这段代码的一个大问题是,它只允许购买一件商品( " purchased“布尔值要么存在于NSUserDefaults中,要么不存在)。
https://stackoverflow.com/questions/36322892
复制相似问题