标签: cbperipheral

iOS6:CBPeripheral正在连接时被解除分配

我正在尝试连接蓝牙BTLE设备.我发现外设没有问题.

但是,当我尝试连接到外围设备时,我收到了以下警告.

2013-04-05 22:10:3​​6.110 CoreBluetooth [警告] 7DA9E322-D710-081B-4A9D-526DE546B13C,名称="Find My Car Smarter",IsConnected = NO>在连接时被解除分类

此外,没有相关的委托方法被调用:

didConnectPeripheral:
didFailToConnectPeripheral:
Run Code Online (Sandbox Code Playgroud)

几个小时我一直在努力...请帮助.

objective-c core-bluetooth ios6 cbperipheral

13
推荐指数
1
解决办法
5659
查看次数

蓝牙外设ADVERTISE_FAILED_DATA_TOO_LARGE

我试图在NEXUS 9中做广告并得到ADVERTISE_FAILED_DATA_TOO_LARGE的错误.在成功通告后添加服务时,它工作得非常好但是如果我通过"广告数据"构建器添加服务以便其他设备可以在扫描时进行过滤,则会收到错误代码1,即ADVERTISE_FAILED_DATA_TOO_LARGE

a)工作准则

     public void startAdvertisingService() {
    AdvertiseSettings settings = new AdvertiseSettings.Builder()
            .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH)
            .setTimeout(0)
            .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY)      
            .build();


     AdvertiseData.Builder advertiseData = new AdvertiseData.Builder();
    advertiseData.setIncludeDeviceName(true);

     BluetoothLeAdvertiser myBluetoothLeAdvertiser = btAdapter.getBluetoothLeAdvertiser();
      myBluetoothLeAdvertiser.stopAdvertising(mAdvertiseCallback);

    myBluetoothLeAdvertiser.startAdvertising(settings, advertiseData.build(),mAdvertiseCallback);

   }
    private AdvertiseCallback mAdvertiseCallback = new AdvertiseCallback() {

    @Override
    public void onStartSuccess(AdvertiseSettings settingsInEffect) {
        super.onStartSuccess(settingsInEffect);
        BLEBroadcast();
    }

    @Override
    public void onStartFailure(int errorCode) {
        String description = "";
        if (errorCode == AdvertiseCallback.ADVERTISE_FAILED_FEATURE_UNSUPPORTED)
            description = "ADVERTISE_FAILED_FEATURE_UNSUPPORTED";
        else if (errorCode == AdvertiseCallback.ADVERTISE_FAILED_TOO_MANY_ADVERTISERS)
            description = "ADVERTISE_FAILED_TOO_MANY_ADVERTISERS";
        else if (errorCode …
Run Code Online (Sandbox Code Playgroud)

peripherals android bluetooth bluetooth-lowenergy cbperipheral

11
推荐指数
2
解决办法
6216
查看次数

CoreBluetooth:刷新已发现的外围设备的本地名称

我成功发现了外围设备并检索其本地名称:

[advertisementData objectForKey:CBAdvertisementDataLocalNameKey]
Run Code Online (Sandbox Code Playgroud)

但是,如果外围设备停止并重新启动具有不同本地名称的广告,则客户端无法识别该更改.我猜

- (void)peripheralDidUpdateName:(CBPeripheral *)peripheral
Run Code Online (Sandbox Code Playgroud)

仅在两个设备配对时才有效.有没有办法在没有配对的情况下获得更新?

bluetooth ios core-bluetooth cbperipheral

10
推荐指数
1
解决办法
3804
查看次数

我可以将我的Mac作为蓝牙外设吗?

我正在研究一个需要我的Mac将一些数据发送到我的iOS设备的想法.我知道CoreBluetooth框架不适用于Mac OS,只适用于iOS,所以有什么方法可以让我的Mac构成一个外围设备?

我做了一些谷歌搜索 - 没有得到一个直接的答案:(

macos iobluetooth ios core-bluetooth cbperipheral

10
推荐指数
2
解决办法
4219
查看次数

如何存储CBPeripheral以便在其他视图中使用

我在视图控制器SViewController中设置了几个BLE连接,我需要存储外围设备以便在其他视图控制器中使用.我已经尝试创建一个NSUserDefault对象并在那里存储外围设备,但是我收到了错误"Attempt to insert non-property value",它从未插入过.然后我尝试将其包装在NSData对象中并将其存储在NSUserDefaults中,但是得到了错误"-[CBConcretePeripheral encodeWithCoder:]: unrecognized selector sent"并且应用程序崩溃了.这绝对没有用.我也尝试将三个CBPeripheral变量全局化,但我遇到了很多问题.(我对编程还很新).然后我以某种方式调查了它们,但是在这里读到它不会工作并且不浪费时间.

有谁知道如何存储CBPeripheral对象,以便我可以访问它并在其他视图控制器中初始化它?

objective-c ios core-bluetooth bluetooth-lowenergy cbperipheral

10
推荐指数
1
解决办法
2637
查看次数

CoreBluetooth:如何为许多特性设计代码(30 - 40)?

我搜索了一下,发现这可能是一个重复的问题:

多个CBPeripheral用于同一设备

我的问题是:

我有多个服务,它们共有大约30-40个特征(是的,我需要所有这些...).作为处理CoreBluetooth的起点,我总是使用Apple示例代码(CoreBluetooth温度传感器).

发现和服务/特征处理分为两类,这只适用于几个特征.但是在一个类中处理这么多的特性并不是我在"良好的软件设计"中所理解的.

进入脑海的第一个想法是为每个服务创建一个类.但不幸的是,CBPeripheral只能同时拥有一个CBPeripheralDelegate.这意味着我不能把它分成几个类.

(如果BLE是获取此类数据的正确技术,我们不必开始讨论 - 事实并非如此.但是有些制造商使用BLE,因此他们不必为MFi计划烦恼......)

我还阅读了最终提供的CoreBluetooth编程指南,但它只描述了基本的工作流程 - 没有关于正确的设计.

我正在寻找一个很好的设计方法.您可能有任何建议,提示或示例代码链接?提前谢谢了!

architecture software-design ios core-bluetooth cbperipheral

10
推荐指数
1
解决办法
2160
查看次数

CoreBluetooth配对反馈/回调

感觉我在这里遗漏了一些东西,但是如何获得关于配对受密码保护的外围设备失败还是成功的反馈?

当我连接受密码保护的外围设备时,弹出密码UIAlertView并连接外围设备(didConnectPeripheral),并立即断开连接(didDisconnectPeripheral).

[bluetoothManager connectPeripheral:peripheral options:nil];
Run Code Online (Sandbox Code Playgroud)

现在我是否输入正确的密码,错误的密码或只是按下取消:在任何情况下我都没有收到来自CoreBluetooth委托方法的任何反馈.

问题是如何获得有关此过程的反馈?

ios core-bluetooth cbperipheral

7
推荐指数
1
解决办法
1167
查看次数

监视CBPeripheral状态更改

因此,有一种方法可以监控CBCentralManagervia的状态变化centralManagerDidUpdateState().但有没有类似的方法调用监视状态更改CBPeripheral?我在CoreBluetooth库中找不到任何暴露的东西,我想在每次CBPeripheralState更改时调用一个函数.

现在我只有一个switch语句来检查外设状态,但它总是只返回连接或断开连接.我如何进入连接/断开连接的情况?我已经尝试将我的switch语句放在我的代码的各个部分,从bleInit()方法到startScanning(), connectToPeripheral()等等

switch(peripheral.state){
case .disconnected:
    print("disconnected")
case .connecting:
    print("connecting")
case .connected:
    print("connected")
case .disconnecting:
    print("disconnecting")
default: break
}
Run Code Online (Sandbox Code Playgroud)

ios core-bluetooth cbperipheral swift swift3

7
推荐指数
1
解决办法
1702
查看次数

应用程序未运行时BLE通知

是否有可能在您的应用程序中收到特定UUID的BLE通知,或者在应用程序未运行时任何UUID进入范围?例如推送通知的工作方式相同吗?

我试图谷歌,但到目前为止,没有任何有用的信息,我可以实现.有什么指针吗?

ios core-bluetooth bluetooth-lowenergy cbperipheral ios7

6
推荐指数
1
解决办法
1140
查看次数

iOS CBPeripheral服务未更新

我在使用更新服务的CBPeripheral时遇到了一些问题:我的物理设备有一个更新广告服务的按钮,但我的应用程序仍然在委托方法中读取旧服务didDiscoverServices.

虽然当我发现外设时didDiscoverPeripheral,我可以看到服务是最新的.

如果我再次运行应用程序,旧服务仍然存在!似乎让我的应用程序发现新服务的唯一方法是关闭蓝牙并重新打开.即使卸载/重新安装我的应用程序也是不够的.

iOS会永久缓存服务吗?有没有办法重置/擦除缓存?

bluetooth ios core-bluetooth cbperipheral

6
推荐指数
0
解决办法
340
查看次数