[英]iBeacon: defining UUID
在面向开发人员的官方iBeacon指南中 , Apple声明:
应用程序开发人员应定义特定于其应用程序和部署用例的UUID。
题:
看上面的报价,似乎取决于开发人员。 但是,这似乎是一种非可靠的解决方案。
如果问题1的B部分不可行,那么我担心会出现以下用例 :
两家公司为两个不同的应用程序定义了相同的UUID,并且用户都安装了它们。 用户进入其中一家公司的iBeacon之一附近(两个iBeacon都没有定义次要和主要价值,或者都具有相同的次要和次要价值)。
问题2:
这是一个128位的UUID。 编写一个五行的MacOS X程序,该程序创建并打印一个UUID并使用它。
客户向您抱怨与另一台设备具有相同的UUID的可能性不为零。 但是,在他或她设法抱怨之前五秒钟,一颗流星撞击他,另一颗撞击你,而你们俩都死了的可能性更大。
这就是UUID的工作方式。
UUID的长度为128位,可以保证在空间和时间上的唯一性。
iOS uuid代码(适用于Android的Google):
// 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>
获取ProximityUUID的唯一官方方法是使用(安全)随机UUID生成器生成一个。 从统计上讲,如果您使用一个随机的UUID生成器( 如此处所示) ,那么您会意外地选择与另一家公司相同的ProximityUUID是极不可能的。 这是正确的,因为有很多组合,正如@ gnasher729在回答中所说。 意外重叠的可能性非常低,以至于根本不值得担心。
就是说,没有什么可以阻止其他人故意使用您定义的相同ProximityUUID。 由于iBeacon传输以无加密的明文形式发送,因此任何在Android,Mac或Windows设备上使用Bluetooth LE扫描仪的人都可以通过无线方式从信标中读取ProximityUUID。
没有办法阻止这种情况。
Android和iOS应用程序仅在可接受的用例中使用iBeacons来解决此问题的方式。 如果您的用例不可接受,那么您必须寻找iBeacons以外的其他解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.