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.

Reply Children
Related