如何通过其他方法识别通过蓝牙扫描的设备

Posted

技术标签:

【中文标题】如何通过其他方法识别通过蓝牙扫描的设备【英文标题】:How to identify a device scanning via bluetooth with other methods 【发布时间】:2014-03-19 10:13:10 【问题描述】:

这不是重复任何问题。

我正在创建一个应用程序,它使用蓝牙来查找您附近使用我的应用程序的其他用户。 用安卓就没事。但是,如果我使用 ios,则不可能,因为正如我在 *** 中所读到的,无法通过蓝牙扫描识别具有唯一性的设备,(如果存在,请告诉我!!!! ) 但让我举个例子说明我正在搜索的内容:

如果在我的应用中注册了两个不同的人(分别是 Robin1 和 Robin2)并且他们在蓝牙中具有相同的名称(例如“Robin 的 iphone”),有一种方法可以在我的应用中让我知道第一个“Robin's iphone”是“Robin1”(他在我的应用程序中的昵称),而第二个“Robin's iphone”是“Robin2”? 我唯一需要的是蓝牙扫描,因为我的应用程序是基于你附近的用户,而 GPS 不精确……还没有。

我希望这个例子写得很好:/

谢谢

【问题讨论】:

【参考方案1】:

蓝牙开发邮件列表以及许多 Stack Overflow 问题中都广泛讨论了识别设备的策略。例如,看看这个讨论:http://lists.apple.com/archives/bluetooth-dev/2013/Nov/msg00071.html

为简单起见,这里有两个选项:

    startAdvertising: 调用中设置要由CBAdvertisementDataLocalNameKey 通告的用户名。不过,这是一个非常脆弱的解决方案。 更强大的是连接到发现的外围设备并读取您的应用程序包含的特征以公开用户标识符。

请注意,您不能依赖使用CBPeripheral.identifier 进行识别,因为在发现外围设备的每个设备上,它都是不同的随机值。另请注意,如果您计划使用后台操作,则需要特别小心,因为当应用程序进入后台时会出现许多限制。

【讨论】:

感谢您的回答,但您告诉我不可能有真正的解决方案。荒谬的是,我不能只使用我的应用程序通过蓝牙查看设备,它们不会发送和接收数据,只能查看,之后我的应用程序将完成其余的工作。我说的对吗? 不,我是说您必须开发自己的识别解决方案。您的用例是完全可行的,但系统不向您提供此功能。这可以像添加一个用于与中心共享用户名/登录 ID 的特征一样简单。

以上是关于如何通过其他方法识别通过蓝牙扫描的设备的主要内容,如果未能解决你的问题,请参考以下文章

Android Developer -- Bluetooth篇 概述

Android 蓝牙实例

Swift:为啥我的 iOS 不能扫描其他蓝牙设备

iOS-蓝牙设备的唯一标识问题

手机蓝牙连接其他手机,传输文件时,怎么找到对方设备

如何检查android中其他设备的蓝牙是不是打开/关闭?