检测首次安装在iOS NOT NSUserDefaults中

whi*_*415 6 cocoa-touch nsuserdefaults ios

工作原理 - 该应用程序是对跨平台工作的服务的订阅.在iPhone上,初次购买将获得30天的全部功能,然后在30天之后,在购买应用内购买订阅之前,您无法完成任务.

我需要什么 - 我需要知道它是否是第一次运行,以便我可以将用户信息添加到数据库.或者因为它是跨平台的,他们可能已经支付了订阅费用,所以我需要为用户已经存在的订阅添加30天.

我现在正在做什么 - 目前我将identifierForVendor存储在远程数据库中,并且在NSUserDefaults中有一个bool检查以查看1.如果它是第一次运行而2.如果它是第一次运行以允许用户添加自己到数据库完全使用30天,或者在现有订阅中添加30天.

问题 - 问题是,如果用户删除应用程序然后重新安装它,NSUserDefaults也将被删除,并且identifierForVendor将更改,这将允许用户免费添加另外30天到他们的订阅,只需删除并重新安装应用程序.

理想的解决方案我最初想要为应用程序订阅,但我不知道如何在最初购买应用程序时检查收据并将用户插入远程数据库.此外,我真的不知道如何设置不是In App Purchase的订阅.我还考虑过让应用程序免费,然后他们可以使用In App Purchase购买服务,但是应用程序没用,无法连接到远程服务器以便首先构建数据.

底线我想做以下其中一项

  1. 在第一次购买时进行订阅(我需要能够检测购买是否有效,以便我可以将用户信息输入到远程数据库中)
  2. 让应用程序免费,然后使用In App Purchase添加订阅(在您订阅之前有一个免费的应用程序不会做任何事情吗?)
  3. 保持现在的状态(但找到一个更长久的标识符标识符,并且标识符广告将无法正常工作,因为它可以关闭)

Ant*_*nko 2

这会对你有很大帮助。基本上它是 Keychain 的包装,以 NSUserDefaults 为模式。这对我帮助很大。将东西存储在钥匙串中可以使它们在应用程序重新安装后保持不变。

https://github.com/carlbrown/PDKeychainBindingsController

该项目旨在使 Mac OSX 和 iOS 钥匙串的使用与 NSUserDefaults 一样简单。

它是围绕 Mac OSX 和 iOS 钥匙串的 KVO 兼容 Cocoa 包装器,该包装器的模型是 NSUserDefaults,因此其目的是,对于常见情况,您通常需要调用:

[NSUserDefaultsController共享UserDefaultsController]你应该能够调用

[PDKeychainBindingsController sharedKeychainBindingsController] 对于常见情况,您通常会调用:

[NSUserDefaults standardUserDefaults] 您应该能够调用

[PDKeychainBindings 共享KeychainBindings]