永久唯一设备标识符

时间:2018-01-22 08:53:28

标签: ios

即使卸载了应用并再次重新安装,有没有办法识别设备?我发现topics可以获得UUID,但是在卸载应用后,UUID的值似乎发生了变化

  

此应用程序(或其他应用程序)中此属性的值保持不变   iOS设备上安装了来自同一供应商的应用程序。价值   当用户从中删除所有该供应商的应用程序时更改   设备,然后重新安装其中一个或多个。

我安装了一个名为Jodel的应用,您无需创建帐户即可使用该应用,卸载后,删除iCloud数据,从iCloud注销...重新安装我是仍然在应用程序中登录。我假设他们使用唯一的设备标识符?您是否知道如何实施此类机制?

2 个答案:

答案 0 :(得分:1)

您可以使用钥匙串服务在从设备卸载应用后仍然存储数据。

有关钥匙串服务的更多参考,请查看此

https://developer.apple.com/documentation/security/keychain_services

答案 1 :(得分:1)

是的,它可能

#import "UICKeyChainStore.h"

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
    [self getDeviceIdFromKeychain];
}

- (void)getDeviceIdFromKeychain 
{
    NSString *deviceID = [UICKeyChainStore stringForKey:@"KEY TO SAVE TO Keychain" service:nil];

    // if vandorid from keychain is not nil
    if (deviceID)
    {
        [[NSUserDefaults standardUserDefaults] setObject:deviceID forKey:@"deviceID"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
    // else it goes for new vendorid and then stored it to keychan
    else if (deviceID == (id)[NSNull null] || deviceID.length == 0 )
    {
        deviceID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

        [UICKeyChainStore setString:deviceID forKey:@"KEY TO SAVE TO Keychain"  service:nil];

        [[NSUserDefaults standardUserDefaults] setObject:deviceID forKey:@"deviceID"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        // NSLog(@"VendorID Local - %@",deviceID);
    }
}

ViewContoller.m

- (void)viewDidLoad 
{
    NSString *strDeviceId = [[NSUserDefaults standardUserDefaults]objectForKey:@"deviceID"];
}