可以使用Xcode发现iOS设备标识符。我需要下载的每个应用都有一个唯一的标识符。我想在生成随机数,但它们可能会多次生成相同的数字!有人有想法吗?
答案 0 :(得分:4)
在UIDevice类中,apple提供了方法uniqueIdentifier,但现在已弃用(对于iOS5),在方法的documentation中,您将找到如何使用uniqueIdentifier。
答案 1 :(得分:4)
我找到了一个非常简单的方法,这里是如何:
按 COMMAND + N 并选择Cocoa Touch Class
。
为您的班级NSString+UUID
命名并点击下一步。
然后,将NSString+UUID.h
中的代码替换为:
@interface NSString (UUID)
+ (NSString *)uuid;
@end
在NSString+UUID.m
中:
@implementation NSString (UUID)
+ (NSString *)uuid {
NSString *uuidString = nil;
CFUUIDRef uuid = CFUUIDCreate(NULL);
if (uuid) {
uuidString = (NSString *)CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);
}
return [uuidString autorelease];
}
@end
现在,当您需要获取UUID时(即:在您的应用加载时使用NSUserDefaults存储它):
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSString *userIdentifierKey = @"user-identifier"
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:userIdentifierKey] == nil) {
NSString *theUUID = [NSString uuid];
[defaults setObject:theUUID forKey:userIdentifierKey];
[defaults synchronize];
}
// additional application setup...
return YES;
}
答案 2 :(得分:3)
试试这个UIDevice-with-UniqueIdentifier-for-iOS-5,它会将设备的 mac地址用作唯一标识符。
答案 3 :(得分:3)
iOS6提供了新的替换[[[[UIDevice currentDevice] identifierForVendor] UUIDString]
此属性的值对于来自的应用程序是相同的 在同一设备上运行的同一供应商。返回不同的值 对于来自不同供应商的同一设备上的应用程序,以及 不同设备上的应用程序与供应商有关。
答案 4 :(得分:1)
您可以创建一个UIApplication,UIDevice类别或者您喜欢这样的类别(ARC示例)
@interface UIApplication (utilities)
- (NSString*)getUUID;
@end
@implementation UIApplication (utilities)
- (NSString*)getUUID {
NSUserDefaults *standardUserDefault = [NSUserDefaults standardUserDefaults];
static NSString *uuid = nil;
// try to get the NSUserDefault identifier if exist
if (uuid == nil) {
uuid = [standardUserDefault objectForKey:@"UniversalUniqueIdentifier"];
}
// if there is not NSUserDefault identifier generate one and store it
if (uuid == nil) {
uuid = UUID ();
[standardUserDefault setObject:uuid forKey:@"UniversalUniqueIdentifier"];
[standardUserDefault synchronize];
}
return uuid;
}
@end
UUID()就是这个功能
NSString* UUID () {
CFUUIDRef uuidRef = CFUUIDCreate(NULL);
CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
CFRelease(uuidRef);
return (__bridge NSString *)uuidStringRef;
}
这会生成存储在NSUserDefault中的唯一标识符,以便在应用程序需要时重复使用 - 此标识符将独立于应用程序安装而不是设备,但可用于跟踪订阅的设备数量APN服务等...
之后你可以这样使用它:
NSString *uuid = [[UIApplication sharedApplication] getUUID];
答案 5 :(得分:0)
试试这个
- (NSString *)getDeviceID
{
NSString *uuid = [self gettingString:@"uniqueAppId"];
if(uuid==nil || [uuid isEqualToString:@""])
{
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID)
{
uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
[self savingString:@"uniqueAppId" data:uuid];
[uuid autorelease];
CFRelease(theUUID);
}
}
return uuid;
// this is depreciated
// UIDevice *device = [UIDevice currentDevice];
// return [device uniqueIdentifier];
}
答案 6 :(得分:0)
使用此:[[UIDevice currentDevice] identifierForVendor]
有关详细信息,请查看此answer