And one more question, if you can bear with me.
What's a better approach (better=with lower risk that the app might miss some characteristic value change)?
(i) when an accessory is found unreachable (either inside of my accessoryDidUpdateReachability: delegate method, or !acc.isReachable in the each-minute-poll), just mark the state, but do nothing else — keep the polled reads (which would yield errors, but do no harm) and the observations set before up through enableNotification:completionHandler: untouched;
(ii) or, when an accessory is found unreachable (as above), un-observe it (enableNotification:NO completionHandler...) and do not poll its characteristics anymore. When later is found reachable again (either accessoryDidUpdateReachability:, or explicitly checking for acc.isReachable in the timed poll), again set observations through enableNotification:NO completionHandler... and start polling its characteristics afresh;
(iii) any other way better than the two ones above?
Perhaps never unobserve, but when found again reachable, re-observe, which (I hope, am not sure) should be harmless, i.e., any number of subsequent enableNotification:YES completionHandler... for the same HMCharacteristic would do no harm? Or is there some even better approach?
The goal is to get as many characteristic value changes as reasonably possible and miss as little as possible. MacOS/Catalyst app, at this moment read-only far as HK is concerned, should run foreground (in the Catalyst terms) essentially all the time.
Thanks a lot!