我想要iPhone设备的唯一标识符字符串而不是UDID
和MAC
.
1.获取UDID
和MAC
苹果已被弃用.
2.我们可以使用UUID
但重新安装应用程序或删除应用程序后会有所变化.
我希望在重新安装或删除或升级iOS版本后,设备的任何唯一值都保持不变.
我想以编程方式获取iOS设备的UDID.我使用以下代码来获取iOS设备的UDID.
NSUUID *uuid = [NSUUID UUID];
NSString *uuidString = uuid.UUIDString;
Run Code Online (Sandbox Code Playgroud)
但我得到的输出与我的设备的实际UDID不同.
即使Apple没有参加Barcelone的MWC(移动世界大会),也有人认为获得deviceID将在其他iOS SDK中弃用.
我不明白Apple为什么要限制这个,但那不是主题.
我必须准备我的应用程序,因为我的用户已被识别并且知道更好地使用我的应用程序(例如,不需要登录或创建帐户).而且我确信在那种情况下我并不孤单.
所以有人知道获取deviceID的替代方案吗?是否有其他唯一标识符,例如MAC地址?你如何准备你的应用程序?
我使用以下代码获取标识符
deviceName = [[UIDevice currentDevice]uniqueIdentifier];
Run Code Online (Sandbox Code Playgroud)
但我得到的警告uniqueIdentifier在ios5中已被弃用.
那么如何在ios5中获取标识符值?
我正在寻找一种使用唯一标识符安全地识别移动设备的方法.每次我在特定设备上安装我的应用程序时,我都应该获得相同的唯一标识符.此标识符将上载到服务器后端并保存以供将来参考.
必须在不依赖手机的IMEI号码的情况下实现这一点.苹果早已禁止它用于iOS,谷歌可能会在明天为Android做同样的事情.
对于Android,至少有ANDROID_ID
.iOS怎么样?什么都没有?
Android和iOS都必须采用标准的,万无一失的方式.我对任何/所有/付费/免费/本地/第三方解决方案感兴趣.其他公司为解决这个问题做了什么?
我已阅读以下帖子:
1. 识别应用程序安装.
4. iOS上的持久交叉安装设备标识符:使用Keychain.
5. UIDevice uniqueIdentifier已弃用 - 现在该怎么办?
7. iOS7 - 设备唯一标识符.
8.将 唯一ID实现为UUID并将其保存在Keychain中.
我想超越这个.还有什么可以做的?那里有一个全面的,一劳永逸的防弹解决方案吗?
我知道关于这一点有很多问题,但我认为因为Apple正在提前并主动拒绝使用UDID的应用程序(http://pulse.me/s/7mzKE),我们开发人员需要采取积极的态度并大量讨论此事.
所以问题是 - 除了访问它的UDID属性之外,什么是唯一的设备识别的良好,稳定和正确的替代方案?
正如我所期待的那样,在iOS5 uniqueIdentifier
中UIDevice
不推荐使用in.我正在寻找的iOS5基本相同的功能.
我从文档中了解到,苹果希望我们(开发人员)创建我们自己的UUID(使用CFUUIDCreate
我猜)并将其存储在NSUserDefaults
.然而,这让我有点颤抖,根本不觉得拯救.在这种情况下,有一个UUID感觉有点无意义.
我需要一个UUID的原因是因为我在auth过程中向我的服务器发送了包含UUID的一堆信息,并希望能够跳过一些步骤,如果服务器可以"猜测"下次启动应用程序时用户是谁或重新安装或其他应用程序实现我的库.CFUUIDCreate
似乎没有帮助我.
我也快速浏览了gekitz,但据我了解,它仅基于手机中以太网"卡"的MAC地址.这是不合适的,因为我有一种模糊的感觉,即MAC地址是可变的.将uniqueIdentifier
在UIDevice
很
基于各种硬件详细信息的每个设备唯一的字母数字字符串.
Currenly我写了这段代码,它检索一个UUID.但是一旦我在XCode中清理并在手机上重新安装应用程序,我就会得到一个新的UUID.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *UUID = @"";
if (![defaults valueForKey:@"UUID"])
{
CFUUIDRef UUIDRef = CFUUIDCreate(kCFAllocatorDefault);
CFStringRef UUIDSRef = CFUUIDCreateString(kCFAllocatorDefault, UUIDRef);
UUID = [NSString stringWithFormat:@"%@", UUIDSRef];
[defaults setObject:UUID forKey:@"UUID"];
}
else {
UUID = [defaults valueForKey:@"UUID"];
}
[deviceInformation setObject:UUID forKey:@"UUID"];
Run Code Online (Sandbox Code Playgroud)
总结一下,我的问题如下:
是否有一些可靠的方法来创建一个基于"难以"篡改的设备的UUID,并给我一些依赖和信任的接收器?这不一定要基于设备,可以基于app作为App UUID,只要它重新安装后一样.
我正在尝试激活APNS.因为uniqueIdentifier
已弃用,我正在尝试使用CFUUIDCreate
以下代码:
UIDevice *dev = [UIDevice currentDevice];
NSString *deviceUuid;
if ([dev respondsToSelector:@selector(uniqueIdentifier)])
deviceUuid = dev.uniqueIdentifier;
else {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
id uuid = [defaults objectForKey:@"deviceUuid"];
if (uuid)
deviceUuid = (NSString *)uuid;
else {
CFStringRef cfUuid = CFUUIDCreateString(NULL, CFUUIDCreate(NULL));
deviceUuid = (__bridge NSString *)cfUuid;
CFRelease(cfUuid);
[defaults setObject:deviceUuid forKey:@"deviceUuid"];
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么能代替uniqueIdentifier
用CFUUIDCreate
?
我想为iphone/ipad设备创建UDID,它将保持不变,所以请告诉我是否有任何人有这个想法?
我搜索谷歌和堆栈溢出,但没有得到解决方案.
还有一些人建议使用OpenUDID和CFUUID,但当用户删除并重新安装你的应用程序时,CFUUID会有所不同.但我希望每个应用程序使用相同的UDID,这将在第一次生成,并且对于每个应用程序,每个设备的生命周期应保持不变.