Iphone 是否有iOS设备';随着软件更新,uuid是否会发生变化?
iOS设备的uuid会随着软件更新或任何相关内容而改变吗 不,它不会改变。但请注意,这是现在(可能是出于隐私考虑)。您可以创建自己的“UUID”,只要您的应用程序在设备上,它就会一直存在Iphone 是否有iOS设备';随着软件更新,uuid是否会发生变化?,iphone,ios4,ios5,uuid,Iphone,Ios4,Ios5,Uuid,iOS设备的uuid会随着软件更新或任何相关内容而改变吗 不,它不会改变。但请注意,这是现在(可能是出于隐私考虑)。您可以创建自己的“UUID”,只要您的应用程序在设备上,它就会一直存在 + (NSString *)localUuid { NSString *ident = [[NSUserDefaults standardUserDefaults] objectForKey:@"unique identifier stored for app"]; if (!ident) {
+ (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,您可以在应用程序之间使用它,原因很明显。另一个
#导入
#进口
#进口
#进口
#进口
#进口
#进口
#进口
#进口
#导入ifa\u addr->sa\u family==AF\u LINK)和((const struct sockaddr\u dl*)游标->ifa\u addr->sdl\u type==IFT\u)
{
dlAddr=(const struct sockaddr_dl*)游标->ifa_addr;
基本=(const uint8_t*)&dlAddr->sdl_数据[dlAddr->sdl_nlen];
对于(i=0;isdl_alen;i++)
{
如果(i!=0)
{
[结果追加字符串:@”:“];
}
[结果格式:@“%02x”,基[i]];
}
}
光标=光标->ifa\U下一步;
}
freeifaddrs(addrs);
}
返回结果;
}
@结束
不,它没有。在运行苹果股票操作系统的iOS设备上,UDID永远不会改变
在运行根目录/修改过的操作系统的设备上,任何API返回的值都可以是聪明的修改器想要的任何值。这不是他所要求的。此外,正如@Hagglead在对的评论中指出的,出于隐私原因,按原样使用MAC不是一个好主意。应该对其进行模糊处理,例如使用MD5或SHA1对其进行散列。
#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