问题标签 [cbperipheral]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6645 浏览

ios - 我想触发 iOS7 请求用户使用蓝牙和 Twitter 帐户的权限

这有点落后于大多数人的要求。我想故意触发询问用户权限的对话框:

  • 连接到蓝牙设备,即使在离线时也是如此。
  • 在那里访问基于 iOS 的 Twitter 帐户。

我已经有一个类似的位置对话框可以正常工作。我这样做是因为我想让请求许可的过程更温和一些,就像 Heyday 一样,通过显示一个欢迎屏幕来解释为什么应用程序需要这项服务,然后当用户点击 OK、发起请求并触发对话框。

我已经尝试了一些东西。对于 Twitter,我尝试了以下方法:

但是,尽管给予了许可,但它是自动的,而不是用户看到一个对话框并批准它的结果。

对于蓝牙版本,我还没有找到一些可以触发它的代码。文档和编程指南在请求权限的问题上都相对安静。我能找到的唯一一个参考是,通过为bluetooth-peripheral用户设置一个 plist 键,将在应用程序启动时自动提示。这在流程中太早了,没有用。

0 投票
2 回答
1290 浏览

ios - iBeacon 在应用程序上开始广告确实进入了后台

applicationDidEnterBackground或者applicationWillResignActive我需要,但我收到startAdvertising此错误:

我用:

任何帮助,将不胜感激..

0 投票
1 回答
1211 浏览

ios - 当警报首次出现在 iOS 中时,是否可以自定义蓝牙消息

我正在编写一个使用蓝牙发送数据的应用程序。第一次拨打电话时会弹出警报,上面写着

即使您不使用该应用程序,“应用程序名称”也希望向附近的蓝牙设备提供数据。

有没有办法自定义这个类似于定位服务消息?

0 投票
0 回答
567 浏览

ios - iOS - 使远程蓝牙 LE 设备订阅特性更改

我正在尝试在 BLE Central 作为客户端和服务器工作的 iOS 中重建一个 Android BLE 应用程序。
首先,本地设备正在扫描 BLE 设备,发现它并连接到它。(客户端角色)然后本地设备接管服务器角色,并在任何特性值发生更改时通知 BLE 设备。

在 Android 中它运行良好,因为我可以使用发现的 BluetoothDevice 并通过该BluetoothDevice.connectGatt方法使其订阅我的特征更改。更改值时,我使用该notifyCharacteristicChanged方法通知设备。

我想最重要的区别是,在 iOS 中,在设备发现之后,我只得到一个CBPeripheral作为发现的设备,我不能将它用于任何基于客户端的功能,例如订阅服务器。至少,这是我目前无法弄清楚的。

我读到这个:iOs CoreBluetooth Central Server and Peripheral Client thread 和链接的邮件列表讨论:http ://lists.apple.com/archives/bluetooth-dev/2013/Nov/msg00047.html关于 iOS 设备充当客户端和服务器理论上它应该是可能的,我想知道是否有人找到了一种方法让发现的远程设备订阅我的特性更改。

0 投票
1 回答
1679 浏览

cocoa - 类不符合 Swift 中的“CBPeripheralManagerDelegate”

我正在尝试在 Swift 中构建 iBeacon 发射器,但我无法让我的班级采用该CBPeripheralManagerDelegate协议。

在 Objective-C 中需要这个协议来初始化 PeripheralManager 对象,但是在 Swift 中,我会得到以下错误:

给出错误:

“MyBeacon”不符合“CBPeripheralManagerDelegate”

由于我的班级没有采用该协议,因此当我尝试使用自动完成初始化 PeripheralManager 时也会出现错误

给出错误:

找不到接受提供的参数的“init”的重载

任何人都可以阐明一下吗?

0 投票
0 回答
456 浏览

ios7 - 蓝牙中央管理器未连接到新服务

我正在尝试创建一个应用程序,其中两个不同的设备可以使用相同的 UIControlView 相互通信,以使用 iBeacon 来回发送通知并使用蓝牙来回发送数据。

我首先发送一个接近 iBeacon 询问该地区的人们是否想玩游戏。

如果收到通知的人点击“确定”按钮,他们会宣传蓝牙特征,其价值是原始人正在收听的唯一用户 ID 和服务,然后是 iBeacon 通知,提醒原始人他们想玩。

完成此操作后,应用程序停止外围广告并启动 centralManager 根据自己的用户 ID 和部分 UUID 扫描不同的服务 UUID。

我使用位置管理器来获取邀请通知。然后当点击“确定”按钮时,我使用

当发送者收到有人愿意玩的通知时,我将 peripheralManager 设置为 nil,这样我就可以将其设置为其他东西。

当原始人(发件人)点击“确定”按钮时,我重新分配外设管理器并开始根据第二个人用户 ID 和 UUID 的同一端广播服务 UUID。这是发送UUID。

这就是问题所在。我知道正在调用 peripheralManager 并正在发送数据,并且 CentralManager 正在通过日志进行连接。

这是发件人日志。

这是接收者日志。

如您所见, peripheralManager 正在做广告,而 centralManager 正在扫描。中央找到外围并连接但停止。通常外围设备会继续做广告,而中央设备必须在获取数据之前连接和断开连接几次。这就是我不知道如何开始工作的原因,因为我使用相同的代码来发送和接收这些数据,而且我使用的是从第二个人发送给第一个人的数据。

我已经尝试了几种不同的方法来使其正常工作,但不能。谁能启发我如何让它发挥作用?

0 投票
1 回答
660 浏览

ios - 更新外设的 CentralManagers 服务列表

我在 iOS 下遇到核心蓝牙问题。我正在编写一个 OTA 更新程序,并遇到了一个奇怪的问题。当我将设备切换到 OTAU 模式时,它会断开连接并在同一设备 UUID 下通告不同的服务,问题是,当我尝试从新连接的设备中查找服务时,我得到的是旧的服务列表,这些服务不再有效。问题的一个重要部分是 CBPeripheral.name 值是原始设备名称,但在返回到 didDiscoverPeripheral 的广告字典中,它是正确的新名称。

这是我看到的:

通常,对于程序的下一次干净运行,它会显示相反的方式,外设名称为 Xxxx_boot,广告名称为 Xxxx(广告始终正确)。

我不知道有什么方法可以清除保存在 CBCentralManager 中的外围信息,我什至尝试过创建 CentralManager 的新实例,但似乎没有任何效果。有任何想法吗?

0 投票
2 回答
88 浏览

tabs - Peripheral connection state goes to IDLE when switching tabs, but remains in first tab

So far I am able to connect to the peripheral fine and can send commands to it, but when I select a new tab the connection state goes to IDLE and I can't send anything from the next tab, but I can go back to the first tab and can send the commands just fine again. I am not the most experienced programmer, and I have been stuck here for a while now. So any help at all would be appreciated. When I created the tab bar controller I did not add any code to the .h or .m files... not sure if that could be a problem or not, I had a working first page then added the TBC and five other view controllers then connected them all together. I just want the connection to stay through tabs, as going back and forth between them will be happening often.

Thanks!

0 投票
1 回答
1565 浏览

objective-c - Objective- C 如何使用 Core Bluetooth 发送带有字节数组的数据

我正在尝试通过 Core Bluetooth 发送一个 typedef 对象,另一个设备将可以访问并能够使用该对象。@implementation NeeAppDelegate typedef struct { float a, b, c,

所以在这里我声明了我想通过核心蓝牙发送的 typedef 类,我认为这是可以的。然后在后面的方法中:

现在我将类切换到我处理数据发送的外围 ViewController。

这是我用来将数据发送到另一台设备的 dataSend 方法

}

现在在我的 CentralManager 类中,我将如何设法访问 byteArray 中的数据?我知道从您需要使用的字节数组中获取值的格式

0 投票
1 回答
2373 浏览

ios - CBPeripheral 存储的 UUID 对重新连接有效多长时间?

我一直在玩 Corebluetooth,我了解到,除了每次我想连接时都要经历扫描外围设备的繁琐过程之外,我还可以存储外围设备的 UUID 并将其与 retrievePeripheralsWithIdentifiers 和 connectPeripheral 一起使用以进行进一步的重新连接。

事实证明它只能工作一段时间,显然外围设备的 UUID 已更新,因此可以认为存储的 UUID 已过期。

我无法找到任何一致的文档,所以我不确定它会持续多久。

有没有办法解决这个问题,以便以后重新连接比重新扫描外围设备更快?