来自iPhone应用程序的设备ID

时间:2011-03-29 06:17:13

标签: iphone objective-c

我是iphone开发的初学者,我创建了一个应用程序。现在我需要通过点击按钮了解应用程序中的设备ID。请帮帮我  提前致谢

6 个答案:

答案 0 :(得分:43)

使用此

    UIDevice *device = [UIDevice currentDevice];
    NSString *uniqueIdentifier = [device uniqueIdentifier];

<强>更新

Apple拥有已弃用的唯一标识符,因此现在以下代码(来自Melvin Sovereign的评论)是合适的:

NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

答案 1 :(得分:5)

有趣的是,Apple已经弃用了iOS 5中的uniqueIdentifier。这是相关的TechCrunch文章: http://techcrunch.com/2011/08/19/apple-ios-5-phasing-out-udid/

Apple建议您不再唯一地识别设备,而是识别用户。在大多数情况下,这是一个很好的建议,尽管在某些情况下仍然需要全局唯一设备ID。这些场景在广告中很常见。因此,我写了一个非常简单的插件库,它完全复制了现有的行为。

在一个无耻的自我推销插件中,我会在这里链接它,希望有人发现它有用。此外,我欢迎所有人和任何反馈/批评: http://www.binpress.com/app/myid/591

答案 2 :(得分:2)

我认为此代码可能会对您有所帮助;)

NSString * id = [UIDevice currentDevice].uniqueIdentifier;

您还可以查看http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html

答案 3 :(得分:1)

您可以使用NSUUID *identifierForVendor

[[UIDevice currentDevice] identifierForVendor]

答案 4 :(得分:0)

在Swift中

var uniqueId=UIDevice.currentDevice().identifierForVendor.UUIDString as String
println("Your device identifires =>\(uniqueId)")

答案 5 :(得分:0)

我知道,这是一个很老的问题,但这就是我解决问题的方法。如果创建“唯一设备令牌”的线程永不停止,它可能会失败,但它对我有用。

-(NSString*)getUniqueDeviceToken
{
    __block NSString* UDTToReturn = @"UDTCouldNotBeCreatedSuccessfully,PlatformNotSupported,Simulator,iOSVer<11";
    dispatch_semaphore_t semaphoretowaitforudtcreation = dispatch_semaphore_create(0);
    if ([DCDevice.currentDevice isSupported])
    {
        [DCDevice.currentDevice generateTokenWithCompletionHandler:^(NSData * _Nullable token, NSError * _Nullable error)
        {
            if (error)
            {
                UDTToReturn = error.description;
                dispatch_semaphore_signal(semaphoretowaitforudtcreation);
            }
        
            else
            {
                UDTToReturn = [token base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
                dispatch_semaphore_signal(semaphoretowaitforudtcreation);
            }
        }];
    }
dispatch_semaphore_wait(semaphoretowaitforudtcreation, DISPATCH_TIME_FOREVER);
return UDTToReturn;
}