博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】IOS 怎么获取外设的广播数据AdvData
阅读量:5296 次
发布时间:2019-06-14

本文共 1769 字,大约阅读时间需要 5 分钟。

原文网址:http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/73443.aspx

NSArray *keys = [advertisementData allKeys];

    NSData *dataAmb, *dataObj;
    for (int i = 0; i < [keys count]; ++i) {
        id key = [keys objectAtIndex: i];
        NSString *keyName = (NSString *) key;
        NSObject *value = [advertisementData objectForKey: key];
        if ([value isKindOfClass: [NSArray class]]) {
            printf("   key: %s\n", [keyName cStringUsingEncoding: NSUTF8StringEncoding]);
            NSArray *values = (NSArray *) value;
            for (int j = 0; j < [values count]; ++j) {
                if ([[values objectAtIndex: j] isKindOfClass: [CBUUID class]]) {
                    CBUUID *uuid = [values objectAtIndex: j];
                    NSData *data = uuid.data;
                    if (j == 0) {
                        dataObj = uuid.data;
                    } else {
                        dataAmb = uuid.data;
                    }
                    printf("      uuid(%d):", j);
                    for (int j = 0; j < data.length; ++j)
                        printf(" %02X", ((UInt8 *) data.bytes)[j]);
                    printf("\n");
                } else {
                    const char *valueString = [[value description] cStringUsingEncoding: NSUTF8StringEncoding];
                    printf("      value(%d): %s\n", j, valueString);
                }
            }
        } else {
            const char *valueString = [[value description] cStringUsingEncoding: NSUTF8StringEncoding];
            printf("   key: %s, value: %s\n", [keyName cStringUsingEncoding: NSUTF8StringEncoding], valueString);
        }
    }

 

 

谢谢,可是得出来得结果是

   key: kCBAdvDataIsConnectable, value: 1

   key: kCBAdvDataLocalName, value: SimpleBLEPeripheral

   key: kCBAdvDataServiceUUIDs

      uuid(0): FF F0

   key: kCBAdvDataTxPowerLevel, value: 0

我想获取得广播数据还是读取不到。。。。

 

对于iOS设备,我是通过kCBAdvDataServiceUUIDs得到广播数据的。

 

Li Zongwu:

我也感觉广播数据应该是在advertisementData中的,可以里面就是没有kCBAdvDataServiceUUIDs这个键值。纠结。。。。不知道是不是那里面的程序不对,你的

-(void)centralManagerDidUpdateState:(CBCentralManager *)central

{....}这里面怎么定义的啊。。。

 

用我之前提供的代码,就可以得到kCBAdvDataServiceUUIDs这个key值,这个key值对应的就是广播里地所谓的数据了。

 

 

转载于:https://www.cnblogs.com/wi100sh/p/5530910.html

你可能感兴趣的文章
codeforces E - Anya and Cubes 分块处理 暴力搜索
查看>>
Unity3d UGUI序列帧动画
查看>>
如何给spine骨骼动画挂载粒子特效
查看>>
POJO、JavaBean、DTO的区别
查看>>
mysql 主从复制 (2)
查看>>
基本算法_位运算_lowbit
查看>>
EXTI—外部中断/事件控制器
查看>>
我所理解的Delphi中的数组类型
查看>>
Java基础知识强化95:Calendar类之Calendar类的add()和set()方法
查看>>
腾讯面试问题
查看>>
虚拟机上安装Cell节点(12.1.2.3.3)
查看>>
python 学习笔记(二)两种方式实现第一个python程序
查看>>
P1140 相似基因 (动态规划)
查看>>
手风琴适应用左侧导航
查看>>
COM编程之二 接口
查看>>
夜间模式的开启与关闭,父模板的制作
查看>>
Mysql-单表查询的操作和注意事项
查看>>
Using SqlDataReader’s new async methods in .Net 4.5 Beta
查看>>
jQuery 1.9 beta1 发布,删除被废弃的 API
查看>>
FCKEditor 3.6.6 发布,修复 IE10 下的关键问题
查看>>