Ios 永久唯一设备标识符

Ios 永久唯一设备标识符,ios,Ios,是否有办法在卸载应用程序并重新安装后识别设备?我找到了可以获取UUID的地方,但在卸载应用程序后,UUID的值似乎发生了变化 当应用程序(或其他应用程序)运行时,此属性中的值保持不变 iOS设备上安装了来自同一供应商的应用程序。价值 当用户从中删除该供应商的所有应用程序时发生更改 然后重新安装其中一个或多个 我安装了一个名为的应用程序,您无需创建帐户即可使用该应用程序,卸载后,删除iCloud数据,从iCloud注销。。。重新安装它时,我仍在应用程序中登录。我假设他们使用唯一的设备标识符?您知道

是否有办法在卸载应用程序并重新安装后识别设备?我找到了可以获取UUID的地方,但在卸载应用程序后,UUID的值似乎发生了变化

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


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

您可以在从设备卸载应用程序后,使用钥匙链服务来存储数据

有关钥匙链服务的更多参考,请检查此项

是的,这是可能的

#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"];
}

谢谢,用户是否可以通过手动删除钥匙链数据来绕过此问题?@j.doe没有用户可以手动删除钥匙链数据。实际上,您可以通过删除设备并将其设置为新的方式来删除钥匙链数据;-)您手中仍然有相同的设备,但对于所有第三方应用程序和服务来说,它现在是一个全新的设备。请看我的问题-