2015-06-19 43 views
8

在我的iOS应用程序中,我必须限制用户使用每个设备的iOS应用程序。为此,我找到了一个解决方案,我们可以使用UUID (Universally Unique Identifier)UDID (Unique Device Identifier)。但根据this answer我不能使用UUID,因为如果应用程序被删除或重新安装UUID已被更改,我不希望这样。此外,苹果拒绝应用程序,如果应用程序使用UDID如何唯一标识iOS设备而不是使用UUID和UDID

有什么办法可以唯一标识iOS设备。

+0

你不能。为保密起见,Apple不允许它。但是你可以使用Keychain访问来存储一些有用的数据。但请检查Apple指南。 –

+0

@Can ATAC,感谢您的评论。我不想存储任何数据,实际上我想从设备获得一些独特的价值。有没有其他方法可以做到这一点? – iKT

+0

UUID是...的方式,取决于您的应用程序设计。 –

回答

13

苹果已经废除了的UDID的方法之间共享,并会拒绝的应用程序将其用于唯一设备标识。 来源:TNW

你在找什么是Vendor ID

+0

@Vijayts,谢谢你的回答。我还有一个疑问,因为有两种设备可能有相同的VenderID。任何想法? – iKT

+1

@iOSDev两台设备没有机会拥有相同的vendorID。它对您设备上特定应用程序组的每个安装都是独一无二的。例如,同一应用程序供应商下的许多应用程序在设备上具有相同的供应商ID,直到该供应商的所有应用程序都被卸载并再次安装在该设备上。只有在这种情况下,设备才会为同一个应用组的应用提供同一设备的新供应商ID。因此,名称VendorID。 –

+0

@VijayTholpadi你确定它会在不同的设备上有所不同吗?尽管在文档中说:“不同厂商的应用程序在同一设备上返回不同的价值,而在不同设备上的应用程序返回不同的价值。”然后vendorId是解决方案。如果我希望每个应用程序都有所不同,那么我们可以使用vendorId和包名称进行散列。并且vendorID不会像advertisingId那样重置,对吧? – karim

0

我使用这个库为我的项目,它的工作就像一个魅力,请尝试:

https://github.com/blackpixel/BPXLUUIDHandler

使用方便:

进口BPXLUUIDHandler.h 检索与UUID

[BPXLUUIDHandler UUID] 

这就是所有...

下面是从项目的GitHub的页面的一些信息:

随着iOS 5的,苹果已否决该设备唯一标识符的API和 没有提供一个友好的OBJ-C替换,而不是推荐 CFUUIDCreate和NSUserDefaults的。

CFUUIDCreate是不是很复杂,也不是NSUserDefaults的,但 这种解决方案在几个不同的方式失败:

  • 这不是一个快速的一次性调用来获取UUID;你必须写自己的包装,使其友好
  • 它不会持续;删除应用程序吹走的UUID(如果存储在钥匙串,虽然可以持久)
  • 有没有办法应用
+0

@iOSDev是否解决了您的问题? – mgyky

+0

#gyer谢谢你的回答。但是我在使用UUID时遇到问题。你有另一种解决方法吗? – iKT

+0

不客气@iOSDev。你写道:“我不能使用UUID,因为如果应用程序被删除或重新安装UUID已经改变,我不想这样做”,但是我建议(BPXLUUIDHandler)在用户重新安装应用程序时不会改变。如果他们进行完全恢复,这将会发生变化,但对于大多数用户而言,只有在他们获得新设备之后才会更改。请阅读:https://blackpixel.com/writing/2012/03/unique-identifier-is-dead-long-live-unique-identifier.html – mgyky