如何在Swift中获取设备唯一ID?
我需要在数据库中使用ID,并在社交应用程序中作为我的Web服务的API密钥.跟踪日常使用的设备并将其查询限制在数据库中的东西.
谢谢!
我正在写一个iphone应用程序,它使用REST与我的服务器通信.主要问题是,我需要以某种方式识别用户.不久前,我们被允许使用UDID,但现在不再允许了.那我应该用什么呢?我需要在iphone上使用某种标识符,因此用户将删除应用程序,再次安装它,并且他将获得相同的ID.
我正在为我的公司开发一个应用程序,我们正在通过将iPad添加到公司的iOS开发中心帐户来慢慢让人们进入"测试版".从那里我们为本地Intranet分发做一个临时构建.
在我的最后一次演出中,我会引导人们找到其中一个"为我找到我的UDID"应用程序,然后让他们向我发送它找到的UDID.
iOS 7已经关闭了 - 这些应用程序现在都已消失,如果你还有一个,它会返回一些与UDID无关的GUID.
所以我要做的就是将这些东西连接到我的Mac上,然后从iTunes中获取UDID,这有点麻烦(但是比试图向他们解释如何从iTunes获取它更加乏味,假设他们甚至安装它).有时它会尝试与我的Mac同步,除了在设备上放置我不想要的配置文件之外,它似乎没有任何影响.至少有一次我有一台iPad突然决定从iOS 6升级到iOS 7,我不确定是否与插入有关(在这种情况下,用户不希望升级).
除了将其插入机器之外,还有其他方法可以从iPad获取UDID吗?
要清楚:我不是想在应用程序中获取UDID,我只是想到了将UDID添加到我们的开发人员配置文件中的设备列表以便分发的最快方法.
是否有任何唯一的设备ID(UDID)或任何类似的ID,我可以在Windows Phone 8(WP8)上读取,不会随硬件更改,应用程序重新安装等而改变?
在较旧的Windows Phone版本中,存在以下ID:WP7:Windows Phone的设备状态
WP7.1:DeviceStatus类
但是它们不再适用于SDK 8.0.
为什么我问: 想法是用户在第一次启动应用程序时获得一些免费信用,我想避免用户只是重新安装应用程序以获得新的免费信用.使用电子邮件或电话号码注册可以解决这个问题,但如果可以,我不希望在第一次注册时打扰用户.
- -/// - -解 - - - - -
我可以确认DeviceExtendedProperties.GetValue("DeviceUniqueId")仍然可以在WP 8.0中运行.当我阅读以下文字时有点困惑:
在Windows Phone OS 7.0中,此类用于查询特定于设备的属性.在Windows Phone OS 7.1中,不推荐使用DeviceExtendedProperties中的大多数属性,而应使用新的DeviceStatus类.但是,在适当的情况下,您仍然可以使用以下任何未弃用的属性.
MSDN:DeviceExtendedProperties类
我可以运行以下代码,删除应用程序并重新安装它并获得相同的ID:
byte[] myDeviceID = (byte[])Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("DeviceUniqueId");
string DeviceIDAsString = Convert.ToBase64String(myDeviceID);
MessageBox.Show(DeviceIDAsString);
Run Code Online (Sandbox Code Playgroud) 我们正与同事一起开展一个项目,涉及使用大量私有和非官方代码.这不适用于AppStore.
我们的第一个也是唯一的要求是不使用越狱.
首先,UDID
或者OpenUDID
或者任何其他解决方案在这里不起作用,并且它们不被期望.
我们已经做了很多背景研究和测试,从尝试以编程方式获取IMEI,ICCID,IMSI和序列号开始.如果没有越狱,上述方法都不适用于iOS 7及更高版本.
我们还花了几个月的时间IOKit
使用着名的IOKitBrowser来使用框架并抛弃iOS
内部的全部内容.不幸的是,我们发现随着iOS 8.3
它停止工作.
我们在这里谈的不是关于获得UDID
或任何其他"主流"的东西,但一般来说我们需要一种方法来获得
任何永久性硬件标识符,其唯一性足以识别在设备擦除和不同iOS版本之间仍然存在的设备
这个问题与其他人没有重复(例如,这里没有找到解决方案),并且仅针对私有API.
任何帮助将受到高度赞赏.
如何在iOS7中以编程方式获取设备UDID.[[UIDevice currentDevice] uniqueIdentifier]
我用过这段代码这是不推荐使用的iOS7.如何获取设备UDID.删除应用程序时重新设置UDID字符串,重新安装意味着UDID变得不同.
我们的iOS应用程序适用于特定用户.因此,我们使用设备唯一标识符进行用户识别.这种方法适用于iOS 6,因为我们每次都获得相同的价值.
NSString *strUniqueIdentifier = [[UIDevice currentDevice] uniqueIdentifier];
Run Code Online (Sandbox Code Playgroud)
在iOS 7中,上述方法重新调整了不同的值,我们在用户识别方面遇到了问题.iOS 7 apis提供以下备用.
NSUUID *oNSUUID = [[UIDevice currentDevice] identifierForVendor];
[strApplicationUUID setString:[oNSUUID UUIDString]];
Run Code Online (Sandbox Code Playgroud)
我用"identifierForVendor"替换了"uniqueIdentifier",并创建了Ad hoc构建.在iOS 7和iOS 6设备上安装了构建版本.在iOS 7中,到目前为止,我每次都获得相同的值,但是当我们删除并重新安装应用程序时,iOS 6每次都会给出不同的值.
目前App Store上没有应用程序.所以我不确定这个API如何适用于App Store构建.
问题:1)对于appstore app,"identifierForVendor"每次都返回iOS 7的相同值吗?或者以后用户删除并重新安装应用程序时可能会更改?2)iOS 7 apis中的"唯一标识符"是否有其他替代选项,它们为iOS 6和7返回相同的值?3)任何其他建议......
我正在尝试编写类似于http://whatismyudid.com/的函数,然后批准,将返回用户UDID并将其存储到数据库以供将来与该用户一起参考.
我已经编写了一个在Profile Installer中打开的.mobileconfig xml文档,但是当我告诉它安装配置文件时,它会响应[alert] Invalid Profile
但没有警报正文.没有描述,没有代码,没有帮助.
我是移动配置游戏的新手,所以任何帮助都会激动我.
这是我的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<dict>
<key>URL</key>
<string>http://apps.mortlabs.com/device/retrieve.php</string>
<key>DeviceAttributes</key>
<array>
<string>UDID</string>
<string>IMEI</string>
<string>ICCID</string>
<string>VERSION</string>
<string>PRODUCT</string>
</array>
</dict>
<key>PayloadOrganization</key>
<string>MortLabs.com</string>
<key>PayloadDisplayName</key>
<string>Profile Service</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadUUID</key>
<string>B958E359-34C2-42F4-BD0C-C985E6D5376B</string>
<key>PayloadIdentifier</key>
<string>com.mortlabs.profile-service</string>
<key>PayloadDescription</key>
<string>This temporary profile will be used to find and display your current device's UDID.</string>
<key>PayloadType</key>
<string>Profile Service</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
通过移动safari 导航到http://apps.mortlabs.com/device/enroll.php来初始化配置文件
唯一注册iOS设备的最佳方式是什么,不受Apple未来限制的限制?
我目前注册iOS设备的方法(基本上是唯一地识别设备)是我使用iOS设备的UDID来识别并注册它,然后在识别之后我执行必要的操作.
问题是不推荐使用UIDevice uniqueIdentifier属性.我知道有一些解决方法(正如本问题中所讨论的).
一种可能性是使用iOS设备的MAC地址.但是,我觉得Apple可能会在将来的某个时候限制访问这些信息.
有没有其他方法(除了访问MAC地址)识别iOS设备,我们可以依赖它?
ios ×6
iphone ×5
objective-c ×4
udid ×3
ios7 ×2
c# ×1
cocoa-touch ×1
iokit ×1
ios8 ×1
itunes ×1
mac-address ×1
swift ×1
utility ×1
uuid ×1