I don't even want to put IO into the device at all. Not only because it increases cost and size, but because I don't what the user having to interact. We have to find better ways to fit the device in your life, so you don't even think about it.
We haven't had too many issues with BLE, but I think the UI of the mobile app needs to clearly communicate the connection state, and not just "connected/disconnected" but more of "last connection, the device will ping in x seconds" so the person knows the device will be looking for the phone.
We have a few tricks up our sleeve, as we're like Santa (we know when you are sleeping, we know when you're awake), and seeing as the headband is only used for sleeping, we can have an open connection when you are awake, and then go into low power mode when we detect you've closed your eyes, and then we can ping on a more reasonable schedule.