如何在Swift中获取设备电话号码或唯一标识?

4
有没有办法使用Swift检测设备的电话号码?这是因为我想要获取我的应用程序的iOS设备号的唯一标识符。在安卓中,我们可以获取设备的安全ID,而且无论应用程序何时被卸载再次安装都不会改变其ID。对于Swift,我应该如何获取唯一的ID或电话号码呢?
安卓的唯一ID和安全ID示例:
String deviceId = Secure.getString(this.getContentResolver(),
            Secure.ANDROID_ID);

iOS Swift

var uuid = NSUUID().UUIDString

重新安装应用程序后,上述行中的UUId将更改吗?
3个回答

5

在媒体上引起了一场大规模的隐私风波后,苹果不得不删除对设备UUID的访问。

现在有一个名为identifierForVendor的UIDevice调用可让您非常接近。它是当前应用程序从设备获取的唯一ID。


每当来自同一供应商的所有应用程序都被删除时,此ID会更改。 - Yonathan Goriachnick

2

这里有一段代码

    let dID = CFUUIDCreate(kCFAllocatorDefault)
    let deviceID = CFUUIDCreateString(kCFAllocatorDefault, deviceID) as NSString

也许你需要在第二行将deviceID改为dID。 - RikiRiocma
这段代码每次运行应用程序时都会返回不同的ID。这并没有回答问题。 - Yonathan Goriachnick

0

在Swift 3.1中可以使用

if let support =  NSClassFromString("FTDeviceSupport")?.value(forKey: "sharedInstance") as? NSObject  {

       support.value(forKey: "telephoneNumber")!



    }

1
这是私有API的使用,违反了App Store的规定,通常会导致应用程序被拒绝。即使它一次“逃脱”,这并不意味着在尝试更新应用程序时不会被拒绝。这些类型的隐私漏洞也非常脆弱,因为苹果公司倾向于在每个版本中关闭更多的漏洞。我不建议使用这种技术。 - Rob Napier
私有框架确实在诊断、分析、测试等方面对我们有很大帮助,尽管我们不能在产品应用中使用iOS的私有API。 - Carlos Chaguendo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接