iOS设备的uuid是否会随着软件更新而改变?

时间:2011-12-31 15:44:49

标签: iphone ios4 ios5 uuid

iOS设备的uuid是否会随着软件更新或任何相关内容而发生变化?

4 个答案:

答案 0 :(得分:1)

不,它没有改变。但请注意,它现在是deprecated(可能是出于隐私问题)。

答案 1 :(得分:0)

您可以创建自己的“UUID”,只要您的应用在设备上,该UUID就会持续存在。

+ (NSString *)localUuid {
   NSString *ident = [[NSUserDefaults standardUserDefaults] objectForKey:@"unique identifier stored for app"];
   if (!ident) {
      CFUUIDRef uuidRef = CFUUIDCreate(NULL);
      CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
      CFRelease(uuidRef);
      ident = [NSString stringWithString:(NSString *)uuidStringRef];
      CFRelease(uuidStringRef);
      [[NSUserDefaults standardUserDefaults] setObject:ident forKey:@"unique identifier stored for app"];
      [[NSUserDefaults standardUserDefaults] synchronize];
   }
   return ident;
}

但是由于显而易见的原因,这并没有为您提供可以跨应用程序使用的唯一ID。另一个alternative is using the MAC address

#import <sys/types.h>
#import <sys/socket.h>
#import <sys/sysctl.h>
#import <sys/time.h>
#import <netinet/in.h>
#import <net/if_dl.h>
#import <netdb.h>
#import <errno.h>
#import <arpa/inet.h>
#import <unistd.hv
#import <ifaddrs.h>

#if !defined(IFT_ETHER)
   #define IFT_ETHER 0x6
#endif

@implementation MACIdentify

- (NSString*)MACAddress {
    NSMutableString* result = [NSMutableString string];

    BOOL success;
    struct ifaddrs* addrs;
    const struct ifaddrs* cursor;
    const struct sockaddr_dl* dlAddr;
    const uint8_t * base;
    int i;

    success = (getifaddrs(&addrs) == 0);
    if(success)
    {
        cursor = addrs;
        while(cursor != NULL)
        {
            if((cursor->ifa_addr->sa_family == AF_LINK) && (((const struct sockaddr_dl *) cursor->ifa_addr)->sdl_type == IFT_ETHER))
            {
                dlAddr = (const struct sockaddr_dl *) cursor->ifa_addr;

                base = (const uint8_t *) &dlAddr->sdl_data[dlAddr->sdl_nlen];

                for(i=0; isdl_alen; i++)
                {
                    if(i != 0)
                    {
                        [result appendString:@":"];
                    }
                    [result appendFormat:@"%02x", base[i]];
                }
            }
            cursor = cursor->ifa_next;
        }
        freeifaddrs(addrs);
    }

    return result;
}

@end

答案 2 :(得分:0)

不,不。它将始终保持不变。

答案 3 :(得分:-1)

在运行Apple股票操作系统的iOS设备上,UDID永远不会改变。

在运行root / modified操作系统的设备上,任何API返回的值都可以是聪明修饰符想要的值。