We've encountered a pretty nasty bug in our iOS app, that seems to be somewhere in the bluetooth stack. Our app acts as a central, and connects to a ble module in a consumer device which acts as a peripheral. Our devices each have a BlueRadios nBlue module in them, that we connect to using the BlueRadios brsp iOS SDK. Everything works great most of the time, for most users. But for about 1 in 50 users, we see the following behavior:
• The app works great for a while. The user can use our app to discover, connect to, and communicate with their peripheral.
• At some point after anywhere from an hour to a few weeks of using our app, the user will open the app and it can no longer see their peripheral Their phone can still see other peripherals of the same kind, and other phones can still see their peripheral, but it's as though the peripheral has been put on some kind of internal blacklist of peripherals on the user's phone.
• After this point, when scanning for peripherals from our app, we no longer receive a didDiscoverPeripheral: call for this particular peripheral. When we record a bluetooth diagnostic log, we see events for other peripherals, but the log never shows that the system discovers the affected peripheral.
• Resetting network settings, privacy settings, etc. is no help. Deleting and reinstalling the app does not help. Nor rebooting the phone & peripheral. The only way we've found to reestablish communication between an affected phone and peripheral pair is to wipe & reinstall iOS onto the phone, and then restore from a backup. Which is not a fun conversation for our support folks.
Have you seen anything similar to this before? Any ideas about what could be going on? Maybe our bluetooth modules are misbehaving and the iPhone just decides to permanently ignore it?
Any ideas will be much appreciated!
Thanks very much,
Ben