NRF Connect IOS app Server Attribute Table is Empty even though peripheral is able to discover the service when connecting.

Hello,

I have a ble peripheral that will disconnect from the nrf IOS Connect App if it cannot find a specific service-characteristic in the app's gatt server. This specific service-characteristic is added in the "Peripherals" tab of the nrf IOS Connect App and then enabled before scanning in order to find and connect to the ble peripheral mentioned earlier.

By enabling the gatt service in the "Peripherals" tab, the ble peripheral is able to discover the service-characteristic and the connection is maintained.

However, when the connection page is opened on the app and I look at the Server tab, I do not see the service/characteristic which was enabled previously. Why is that?

I need to be able to see it because the ble peripheral writes to this characteristic in order to send messages to the IOS App. 

My other option, if there is no way for the IOS app to see its own characteristic, seems to be to create another characteristic on the ble peripheral with notify/indicate properties in order to send a message from the peripheral to the app.

I am using nrf IOS Connect App version 2.5.3 on ios 15. 

Thank you,

LeoNam

  • Hi, nRF Connect for iOS Developer here,

    The Server part is not one of the best. I'm running it as we speak and I found a small issue on the logging side. I'll keep working on it after I finish this reply.

    So, what happens with the Server. You set it in Peripheral Tab, you add Service(s), Characteristic(s), and the Descriptors will be set automagically, at least the standard ones depending on your Properties, etc. Then, the Server Tab, will enable when a Device you've scanned, connects and subscribes to a notification / indication from your Server. That's when you see that Server tab, for the Device that has connected to your Server, fill. And if you have Read / Write, you'll see the button for Read / Write and you can interact with it.

    Please follow up with any questions you have. As I said, I'm trying it out and checking for issues for the next version, 2.7.3, which has a very long list of fixes already.

  • Another question I have is why a connections page does not open when a device connects using an advertisement generated by the peripherals tab on the ios app. 

    I was assuming that the peripherals tab on ios worked similar to the advertiser tab on Android and so when a connection is opened on ios I expected a connections page to open as well, however, this does not happen.

  • Because iOS does not report when a device connects "to you". Think of it the other way around: iOS doesn't want privacy data leaking. So if you're Facebook / Instagram app and a TV, Soundbar whatever connects, they can plug into that, get that information, etc, etc.

    On the iOS app's side, we only get information of when an external devices subscribes or unsubscribes to notifications / indications. When we get that, we immediately connect back to that device from nRF Connect so that we can show something, since we get the UUID (randomised MAC address) or whichever device subscribed to our Service, and so we can request iOS to connect to that Device without knowing much about what it is. We know "something" subscribed, so we get a reference to it. We connect back in an attempt to get more information.

    It's very confusing, I know.

  • Yes it is, but your replies have helped clarify things for me. 

    Thank You,

    LeoNam

Related