以编程方式检查用户以前是否安装了应用程序

我想检查我的应用程序是否以前安装在特定的设备上。 有没有程序化的方式来做到这一点?

你可以使用keychain 。 但是当用户重置他/她的电话时,这个值将会丢失。 我认为没有select可用于这种情况,除非你必须在你的应用程序中使用iAd 。 苹果提供唯一的ID,将重新安装应用程序后,将保持不变。

选项1:您可以使用NSUserDefaults或将标志保存到钥匙串中,以便在应用程序卸载后不丢失,并在application:didFinishLaunchingWithOptions:检查application:didFinishLaunchingWithOptions:方法:

 BOOL installFlag = get it from user defaults or keychain; if (installFlag) { //App was installed } else { //This is the first install ever installFlag = YES; //Here save the YES value to user defaults or keychain } 

如果你将标志保存到钥匙串,那么使用一个钥匙链包装,就像这个 。

这个选项的弱点在于,即使在钥匙串中保留标志,重置设备设置后,该值可能会丢失,这就是为什么我更喜欢以下选项:

选项2:将标志远程保存在服务器数据库上,作为可以使用设备标识符的键:

 NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; 

你将不得不检查,如果你的数据库中有当前的设备标识符的logging,那么应用程序已经安装,如果没有,然后将标志和标识符添加到数据库。 (但是你每次都需要连接到互联网)。

您可以使用钥匙串来保持以前安装的应用程序的日志。