使用Objective-C查找IMEI号码
在Objective-C中查找IMEI号码的问题是由于以下原因引起的:苹果不再允许访问UDID(设备唯一标识符),并且在iOS 7中,所有设备的MAC地址返回相同的值,因此也不再有用。
然而,iOS现在提供了两种用于标识设备的标识符。它们是:
1. Vendor ID - `[UIDevice identifierForVendor]`。这是一个唯一标识符,对于来自同一供应商或公司的所有应用程序都是相同的。只要用户的设备上安装了来自该供应商的至少一个应用程序,它将保持不变。因此,如果您有3个应用程序,供应商ID将保持不变,除非用户卸载了所有3个应用程序,然后重新安装。如果您只有一个应用程序,这就没有那么有用了 - 如果用户删除它然后重新安装它,它将更改。
2. Advertiser ID - `[UIDevice advertisingIdentifier]`。这是一个用于广告目的的唯一标识符。但是,如果您将其用于非广告目的,大多数情况下,他们不会在意。在大多数情况下,即使用户删除并重新安装应用程序,广告标识符也不会更改。然而,iOS设置中有一个选项可以重置广告标识符,这将更改它。这是为了让用户选择与他们收集的任何广告信息解除关联。但这是一个非常高级的设置,我怀疑有多少用户会经常这样做,以至于它会对您造成问题。
根据我找到的一些博客文章,对于非广告目的使用advertisingIdentifier是不被允许的。例如,Pixtant因为没有显示广告而被拒绝了两次。苹果的拒绝条款是:“您和您的应用程序(以及您与之签订广告服务合同的任何第三方)只能为了提供广告而使用广告标识符和通过使用广告标识符获取的任何信息。”
实际上,每当我在商店上发布一个应用程序时,都会有ADID的选项框,并且苹果会在评论中提到,如果我对此撒谎,他们将删除该应用程序并追究我个人的责任。
在Objective-C中使用代码找到IMEI号码的问题已经出现的原因是:Apple不再允许开发者通过UDID、MAC地址或其他设备标识符来识别设备。他们建议使用UUID、identifierForVendor或者advertisingIdentifier来替代。此外,Apple还拒绝使用advertisingIdentifier的应用,并且不显示任何广告。而获取IMEI号码的任何方法都是使用私有方法,这也被Apple禁止了,因此可能会导致应用被拒绝。
解决方法是使用identifierForVendor来获取设备的唯一标识符。开发者可以将此标识符存储在自己的应用中,并根据需要对用户进行封锁或限制。此外,开发者还可以将唯一标识符存储在keychain中,以确保只有自己的应用可以访问。这样做可以更好地保护用户的隐私,并避免设备被锁定后无法使用的问题。
虽然有人认为这种限制不公平,但Apple之所以这样做是出于保护用户隐私的原因。他们致力于保护用户的隐私,包括禁止任何形式的设备识别。尽管这可能对一些开发者造成不便,但这是为了更好地保护用户的隐私。
对于那些仅用于内部测试目的的应用,开发者可以使用identifierForVendor来获取设备的唯一标识符。这些应用不会在App Store上公开发布,因此可以使用此标识符进行测试。
虽然获取IMEI号码的方法受到了限制,但开发者仍然有其他替代方案来识别设备并保护用户的隐私。开发者应该遵守Apple的规定,并思考如何更好地保护用户的隐私。