How to make the device appear in the Bluetooth settings of iOS?

Hello.
I am developing using nrf52832 (S132 v7.0.1, SDK v17.0.0) as a peripheral device.

I want to pair from "Settings"-> "Bluetooth" of iOS (iPhone 12 Pro).
For pairing, you should see the device name on your iPhone. However, even if I issue an advertisement from nRF52832, it does not appear. In Android's nRF Connect, you can see that the advertisement is coming out from nRF52832.

Do I have to set different settings for iOS than for Android?
Please let me know if there is any material that describes how to set it.

Best regards.

Parents
  • Hello,

    You can try to include the "appearance" field in your advertising packet to let iOS determine what device category your peripheral is. The appearance value is typically set in gap_params_init() with sd_ble_gap_appearance_set(), and the .include_appearance flag in advertising_init() determines whether it shall be included in the advertisement packet or not.

    From the ble_app_hrs example:

    static void advertising_init(void)
    {
        ret_code_t             err_code;
        ble_advertising_init_t init;
    
        memset(&init, 0, sizeof(init));
    
        init.advdata.name_type               = BLE_ADVDATA_FULL_NAME;
        init.advdata.include_appearance      = true;
        ...

    static void gap_params_init(void)
    {
        ret_code_t              err_code;
        ble_gap_conn_params_t   gap_conn_params;
        ble_gap_conn_sec_mode_t sec_mode;
    
        BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode);
    
        err_code = sd_ble_gap_device_name_set(&sec_mode,
                                              (const uint8_t *)DEVICE_NAME,
                                              strlen(DEVICE_NAME));
        APP_ERROR_CHECK(err_code);
    
        err_code = sd_ble_gap_appearance_set(BLE_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT);
        APP_ERROR_CHECK(err_code);

    Note that iOS will automatically prompt users if they want to pair if you do service discovery from a custom app provided the server has characteristics that require security. 

    Best regards,

    Vidar

  • Hello.

    I added "Appearance" to the advertisement packet, but it was not displayed on the "Settings"→ "Bluetooth" screen of iOS.
    Is there any other data that needs to be set?
    Current advertisement packets are flags, appearance, 128bit UUID.

    I was wondering how to display it, but is BLE displayed on the iOS "Settings" → "Bluetooth" screen?

    Best regards.

  • Hello,

    Did you try to turn Bluetooth off and on again in settings? This is sometimes needed to clear cached advertisement data on the phone.

    And no, iOS does not list all BLE devices in settings. You can however try the ble_app_hrs example, heart rate sensors will be displayed.

    Best regards,

    Vidar

  • Hello.

    Sorry for the late reply.

    Even if Bluetooth ON and OFF were switched, it was not displayed.
    I believe that BLE devices do not appear in iOS settings. Therefore, we created an iOS app and changed to make bonding there.

    Best regards.

Reply Children
No Data
Related