当前位置: 首页 > 知识库问答 >
问题:

iOS nRF51822=iBeacon?

申宜
2023-03-14

我有几个nRF51822传感器,我想开始玩iOS iBeacon设置。我遇到的问题是为了

- (id)initWithProximityUUID:(NSUUID *)proximityUUID identifier:(NSString *)identifier;

你需要知道传感器的位置。查看CLBeacon文档,这似乎是传感器的只读属性,但如何/从何处读取

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI

我看到kCBAdvDataServiceUUID有一个2500的字符串,但我认为不是这样。有人有什么方向或见解吗?

谢谢

共有3个答案

萧晔
2023-03-14

您使用nRF51822传感器构建的设备将通过iBeacon协议发布ProximityUID,据我所知,该协议尚未发布。在此之前,玩游戏最简单的方法是使用另一台iOS设备来宣传它的存在。UUID本身就是您定义的东西。

这篇文章很好地概述了你需要做什么。

隆飞驰
2023-03-14

UUID必须在BLE设备的广告数据中设置。这里有一篇博客文章描述了广告包的逆向工程。使用这种格式,您可以为您的BLE传感器制作固件,iOS将其识别为iBeacon。

一旦您有了一个知道UUID的工作信标硬件,您就可以使用CLLocationManager的-(void)startMonitoringForRegion:(CLRegion*)region查找它

平嘉熙
2023-03-14

您还可以查看这个代码片段,它首先在Nordic自己的Q上共享

typedef __packed struct
{
    uint16_t unknown1;
    uint8_t uuid[16];
    uint16_t major;
    uint16_t minor;
    uint8_t unknown2;
} clbeacon_info_t;
...
static void advertising_init(void)
{
    uint32_t      err_code;
    uint8_t       flags = BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED;
    ble_advdata_t advdata;

    uint8_t uuid[16] = {0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, 0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 0xf0};

    clbeacon_info_t beacon_info;
    beacon_info.unknown1 = 0x1502;
    memcpy(&beacon_info.uuid, &uuid, sizeof(uuid));
    beacon_info.major = 0x3412;
    beacon_info.minor = 0x7798;
    beacon_info.unknown2 = 0xC5;

    ble_advdata_manuf_data_t manuf_specific_data;
    manuf_specific_data.company_identifier = 0x004C;
    manuf_specific_data.data.p_data        = (uint8_t *) &beacon_info;
    manuf_specific_data.data.size          = sizeof(beacon_info);

    // Build and set advertising data
    memset(&advdata, 0, sizeof(advdata));

    advdata.name_type               = BLE_ADVDATA_NO_NAME;
    advdata.flags.size              = sizeof(flags);
    advdata.flags.p_data            = &flags;
    advdata.p_manuf_specific_data   = &manuf_specific_data;

    err_code = ble_advdata_set(&advdata, NULL);
    APP_ERROR_CHECK(err_code);
}


/**@brief Start advertising.
 */
static void advertising_start(void)
{
    uint32_t             err_code;
    ble_gap_adv_params_t adv_params;

    // Start advertising
    memset(&adv_params, 0, sizeof(adv_params));

    adv_params.type        = BLE_GAP_ADV_TYPE_ADV_NONCONN_IND;
    adv_params.p_peer_addr = NULL;
    adv_params.fp          = BLE_GAP_ADV_FP_ANY;
    adv_params.interval    = APP_ADV_INTERVAL;
    adv_params.timeout     = APP_ADV_TIMEOUT_IN_SECONDS;

    err_code = sd_ble_gap_adv_start(&adv_params);
    APP_ERROR_CHECK(err_code);
    nrf_gpio_pin_set(ADVERTISING_LED_PIN_NO);
}

...
 类似资料:
  • 问题内容: 已关闭 。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 改善这个问题 我正在开发一个允许设备在范围内时彼此识别的应用程序。为此,我正在使用iBeacon。 在下一步的开发中,我希望能够在范围内的任何设备之间发送“是”或“否”字符串-因此,连接到任何其他iBeacon的任何人都可以传达这些固定消息 由于i

  • 我是德国富特旺根大学的学生。 我在我的最后一个学期,我正在写我的论文。我对iBeacons及其背后的技术非常感兴趣。我目前的项目是将信标技术与其他技术进行比较,如GPS、无线定位、GSM和NFC。在我的论文中,我将创建不同的用例并比较结果。 在过去的几天里,我试图确定自己在房间里的位置。我使用三个信标的相对距离(精度),并给每个信标一个固定的位置。我得到三个圆,计算出6个交点。当弧度(精度)太低时

  • 我目前正在编写一个应用程序,使用在2个或更多的手机之间传递小字符串的数据。 当前在前台,我正在传递:和。当应用程序位于前台时,我能够恢复(通过NSLog)通过CBAdvertisementDataLocalNameKey传递的字符串。 但是,当应用程序位于后台时,不会被传递。仍然与整数、和一起传递。 在梳理了一个似乎永无止境的叫做苹果文档的圈子后,我发现没有办法在应用程序处于后台时传递一个小字符串

  • 我想通过iPhone(5s)上的应用程序,在50-100米半径范围内同时跟踪大量信标(~500)。我已经看过了规范和在线版本,我看不出使用BLE一次可以跟踪的信标数量是否有任何限制。有人知道你可以跟踪的信标数量是否有限制,或者iphone5s是否能够完成跟踪那么多信标的任务?

  • 您好,我有一些iBeacon,但我对制造商一无所知,我需要用自定义UUID、主要参数和次要参数配置这些信标。 所以在四处搜索后,我知道里面的芯片是CC2541-HM传感器。据我所知,它是由德州仪器公司生产的,但不幸的是,我尝试过的任何编辑iBeacon标签的应用程序(即使是iOS和Android上的SensorTag)都失败了,似乎没有人能允许我更改UUID,大调和小调。 我希望有人能帮助我更好地

  • 我在项目中使用iBeacons,需要从广告数据中提取主要、次要、UUID、txPower和信标类型的值。 我从CBCentralManagerDelegate获取广告数据: 然后我得到主要,次要,uuid和txPower值: 但我如何才能得到信标类型?(iBeacon规范中的0x02和0x15值) 更新:我在Obj-C中找到了下一个用于确定信标类型的函数 但它在Swift中不起作用。

  • 我对蓝牙一无所知 我开始监视一个只定义了UUID的区域(没有定义主要和次要),因为我想找到具有相同UUID的所有信标,不想对主要/次要应用任何“过滤器”。 回调"did确定mineStateForZone"正在执行区域进入/退出,但当我转储到控制台的数据被传递到回调...找不到它的主要/次要。一个例子: 我想监控一个给定的UUID,但也能够知道为这个UUID找到的每个iBeacon的主要/次要值。

  • 我有显示iBeacon信息的文本视图(例如uuid、major、minor等)和一个用于启动/停止扫描的检测/停止按钮。当我在iBeacon关闭的情况下按下按钮开始扫描时,应用程序没有显示预期的内容。但是,当我在iBeacon打开时开始扫描,然后在扫描时关闭iBeacon时,应用程序仍会显示信息,就好像它仍在检测iBeacon一样。当应用程序在信标打开的情况下扫描BLE时,它会给出 D/Bluet