As to why there is an unknown state:
This probably gets down into how the OS works. Both Android and iOS pull off BLE using technologies like IPC. Android uses Binders and services; iOS likely uses XPC technologies based on the log events that get printed to console when using Core Bluetooth.
https://developer.apple.com/documentation/xpcImagine if you have a client (CBManger) state machine and you initialize it, it wouldn't have an IPC connection yet to the Bluetooth process. The CBManagers will in fact give you an "unknown" state when you initialize them. This is just how things work. Keep listening to your delegate and you'll get another callback with the state poweredOn, poweredOff, unauthorized (iOS 13, you'll get a new privacy/permission prompt), etc. I've never seen it NOT transition to another state within moments after initializing the manager class in the last 6 years I've been using Core Bluetooth.
How is the CBManager.State property unreliable? Can you provide more details on this?