Great tips. It’s difficult working alongside iOS engineers — or implementing a CoreBluetooth solution yourself — knowing how much easier it is on iOS. It can be a tough sell to other engineers that you need to implement complex retry logic, delays, threading, etc., to resolve issues on Android that never happen on iOS.
Additionally a note on the dreaded 133 Error Code — when this occurs the peripheral you’re attempting to connect to almost never receives any communications from the Android central. This, and some other errors that are showing up with increased frequency like Error Code 22, are almost always indicative of Android’s Bluetooth stack having internal issues. Rarely the result of poor communication or a peripheral behaving badly.