问题标签 [cbcentralmanager]
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.
ios - iOS Core 蓝牙密码
我有一个需要 PIN 码的 BLE 外围设备。我在 iOS 7 上使用 Core Bluetooth CBCentralManager 连接到这个外围设备。
当我连接到此外围设备时,会在PIN 码身份验证成功完成之前调用“didConnectPeripheral”(中央代表) 。
iOS 仅在调用 'didConnectPeripheral'后显示 pin 码对话框。
一旦这个 PIN 码对话框完成并且身份验证过程完成,我需要开始与外围设备交互。我如何确定何时发生这种情况?
挑战是仅在身份验证成功后继续进行,但是:
- iOS在对话框显示之前调用“didFailToConnectPeripheral” 。
- 如果 PIN 码授权成功,iOS 不会再次调用“didConnectPeripheral”。
- 如果 PIN 码授权失败,iOS 不会再次调用“didFailToConnectPeripheral”。
从上面,我一直无法确定:
- 当对话完成时。
- PIN码授权是否成功。
任何帮助,将不胜感激。
ios - iOS Core Bluetooth (LE):处理不同视图时应用程序崩溃
我有两个视图:一个显示所有发现的设备的中央 TableView 和一个在用户选择连接到发现的设备之一时加载的 detailView。
它一直工作到以下几点:
- 发现设备
- 连接到设备
- 阅读服务、特征并订阅它们
- char 的值被成功读取并显示在 detailView 上
当我现在通过“返回”按钮从 detailView 返回时,回调函数
}
被调用,但之后我以 EXC_BAD_ACCESS 结束。我的 discoverDevices() 函数如下:
“centralManager.scanForPeripheralsWithServices(nil, options: nil)”中似乎有一些错误——但只有在回调之后。从一开始一切都很好。我必须在某处设置一些代表吗?我无法弄清楚“EXC_BAD_ACCESS”错误的任何内容。
我必须重新初始化 centralManager 吗?我必须重新启动它吗?
感谢您提前提供任何帮助。
亲切的问候,斯蒂维尔
ios - 从 iOS 在后台扫描蓝牙 LE 设备
我正在努力在后台模式下扫描 BLE。
问题在后台扫描中不起作用。它在前台模式下工作得很好。
下面是几行代码。
在这里,我将 nil 作为服务传递。
我在 Xcode 的设备部分收到登录信息。但不在应用程序中。
ios - CBCentralManager 未检测到附近的设备
未 CBCentralManager
检测到附近的蓝牙设备。
我已经检查了状态CBCentralManagerStatePoweredOn
之后它不会调用委托方法。
ios - Swift 类函数没有被调用
我用Swiftclass
编写了以下内容:
然后我ViewController
使用以下代码在我的 main 中创建一个实例:
代码编译正常,但该函数centralManagerDidUpdateState
从未被调用,我不知道为什么。
ios - 您如何两次扫描相同的 BLE 设备?
我有一个 iOS 应用程序可以扫描 BLE 外围设备,其中可能有很多,并允许用户决定是否连接到设备。连接后,用户还可以决定断开连接。所有这一切都很好。
我还想添加一个选项,允许用户改变主意并重新扫描设备,但这似乎有问题。最明显的方法似乎是停止扫描并重新启动它,如下所示:
这不起作用。
最终,iOS 决定告诉我的应用该设备再次投放广告,但这需要几分钟。
如何说服 iOS 在不等待几分钟的情况下第二次告诉我有关外围设备的信息?
ios - CBPeripheral, Get Local Peripheral Identifier
I faced a problem about CoreBluetooth Framework.
As Example, I have two devices and each device performs both advertising and scanning. So, I use CBCentralManager
and CBPeripheralManager
on each.
So, to simplify problem, let's assume that Device1 is broadcasting and Device2 scanning.
When CBCentralManager
on Device2 discover the Device1, callback
centralManager:didDiscoverPeripheral:advertisementData:RSSI:
is called and I can get Device1 identifier by calling [peripheral.identifier UUIDString]
.
How then I can get my local device (Device2) Identifier? I mean in case that both devices are advertising, Device1 will discover Device2 too and get it's peripheral identifier, but How can I get exact this identifier (some kind of self-address) on Device2?
P.S. I know that this Identifier is not unique for each device and can change over the time, it's not a problem.
ios - 外围设备的中心写入特性(iOS 核心蓝牙)
好的,所以我已经浏览了一千个教程和其他 Stack Overflow 线程(所以请不要在没有回答问题的情况下将其列为重复),我无法弄清楚如何使用此功能。
我遵循了本教程: http ://code.tutsplus.com/tutorials/ios-7-sdk-core-bluetooth-practical-lesson--mobile-20741
我有一个系统,中央可以连接到外围设备并从中读取特征。
我现在正试图让我的中心重写特征内的数据,但我发现我调用的写入行被忽略了。
我已经在我的外围类中声明了我的特征:
在我的 centralManager 中,我调用了
但是这条线被忽略了。谁能告诉我可能出了什么问题?我需要向我的外围类添加一个方法吗?
此外,我已经尝试过使用 WithResponse 进行操作,但它甚至都没有从外围设备调用该方法。
ios - 未能在 iOS 中发现蓝牙 LE 服务广告
我创建了两个 iOS 应用程序;一个是广播服务的蓝牙 LE 外围设备,另一个是扫描广告服务的蓝牙 LE 中心。外围设备在我的 iPhone5s 上运行,中央设备在我的 iPad Mini 上运行。我最初将中央设置为扫描特定的广告服务,但后来将其更改为侦听任何服务。在任何一种情况下,作为中心的 iPad Mini 应用程序都不会检测到任何广告服务。我不确定这是我设置外围管理器进行广告的方式有问题,还是我设置中央管理器进行扫描的方式有问题,或者是设备配置问题。请提供我可以执行的建议或测试以使其正常工作。
以下是 iPhone5s 应用作为外设的相关代码:
这里是必要的委托方法。注意:委托方法 peripheralManagerDidUpdateState 触发并指示“CoreBluetooth BLE 硬件已开启并准备就绪”(中央侧也是如此)。委托方法 peripheralManager:didAddService:error 触发没有错误(见下面的输出)。并且委托方法 peripheralManagerDidStartAdvertising:error 触发没有错误)。这是从 didAddService 打印的服务信息:
CBPeripheralManager 委托方法(对不起所有代码,只是想完整。):
以下是在 iPad Mini 上运行的相关中心代码:
这是中央委托方法之一。除了 centralManagerDidUpdateState:,没有任何委托方法触发。
最后一点,我质疑 BLE 是否可以在我的设备上运行。我在 iPhone 和 iPad Mini 上加载了几个不同的 iBeacon 应用程序,看看我是否可以让这两个设备识别 iBeacon(一个发送,一个接收),但他们也没有发现 iBeacon。我也试过两部 iPhone。我也关闭了蓝牙然后打开。我还尝试关闭/打开设备电源。两个设备都在前台运行。仍然没有运气。请帮忙。
bluetooth-lowenergy - 从外围设备收到错误:didUpdateNotificationStateForCharacteristic
我开发了一个蓝牙低功耗外围应用程序,它成功连接了第二个 BLE 中央应用程序。但是,我无法让中央应用程序订阅有关外围设备提供的服务特征之一的通知。在中央应用程序中,我有以下内容:
不幸的是,这失败了,并且在委托方法 peripheral:didUpdateNotificationStateForCharacteristic 收到了错误(错误类型为“未知”)。如果我在上面的代码(aChar)中打印特征对象,我会得到以下信息:
请注意,通知 = 否。如何设置外围设备以启用特性通知?