Every OS that supports BLE caches parts of your device's profile. It's a method to save power and time by re-reading values that don't change very often. But what happens when you need to change those values? If you're not careful, you can end up rendering your product useless.
Between new features and our firmware update process, the GATT table on the Bean changes often. We had a couple of 'interesting' weeks figuring out how this works on iOS, Android, and OS X. Read on to hear how we deconstructed the caching process, discovered some bugs, and got a few more gray hairs in the process.