在开发人员 Apple 的官方iBeacon guide中声明
应用程序开发人员应定义特定于其应用程序的UUID 部署用例。
问题:
看看上面的引用,这似乎取决于开发人员。然而,感觉就像一个非强大的解决方案。
如果问题1的B部分无法实现,那么我担心会发生以下用例:
两家公司为两个不同的应用程序和a定义了相同的UUID 用户安装了它们。用户进入其中一个附近 其中一家公司的iBeacons(iBeacons都没有 小的和主要的价值定义或两者都有相同的次要和次要 值)。
问题2:
答案 0 :(得分:4)
它是一个128位的UUID。编写一个五行MacOS X程序,创建并打印UUID并使用它。
客户会向您抱怨与其他设备具有相同的UUID的可能性非零。然而,一个流星袭击他的可能性更大,而另一个流星袭击你,你们两个都死了,在他或她设法抱怨之前五秒钟。
那是UUID的工作方式。
答案 1 :(得分:1)
UUID长128位,可以保证 空间和时间的独特性。
请参阅A Universally Unique IDentifier (UUID)
iOS uuid代码(Google for Android):
// Create a `NSUUID
NSUUID *uuid = [NSUUID new];
// As a string:
NSString *uuidString = [uuid UUIDString];
NSLog(@"uuidString: %@", uuidString);
// As a bytes:
uuid_t uuidBytes;
[uuid getUUIDBytes:uuidBytes];
// as `NSData`:
NSData *uuidData = [NSData dataWithBytes:uuidBytes length:sizeof(uuid_t)];
NSLog(@"uuidData: %@", uuidData);
输出:
uuidString: 8F16F262-3E60-49F4-9D1B-FC4F4975B219
uuidBytes: 8F16F2623E6049F49D1BFC4F4975B219
uuidData: <8f16f262 3e6049f4 9d1bfc4f 4975b219>
答案 2 :(得分:0)
获得ProximityUUID的唯一官方方法是使用(安全)随机UUID生成器生成一个。如果您使用随机UUID生成器like one here,则在统计上极不可能意外选择与另一家公司相同的ProximityUUID。这是真的,因为有很多组合,正如@ gnasher729在他的回答中所说的那样。意外重叠的可能性非常低,以至于不值得担心。
尽管如此,没有什么可以阻止其他人使用您定义的相同ProximityUUID来强烈故意。由于iBeacon传输是以明文形式发送的,没有加密,因此任何在Android,Mac或Windows设备上使用蓝牙LE扫描仪的人都可以通过无线方式从信标中读取您的ProximityUUID。
没有办法阻止这一点。
Android和iOS应用程序通过仅使用iBeacons处理可接受的用例来解决这个问题。如果您的用例不可接受,那么您必须寻找iBeacons提供的其他解决方案。