I increasingly get the impression that the development of the Android and iOS apps only has a destination in common.
I can’t speak for the iOS app, but the Android app is very keen on attributes having values. Not only will it keep ‘checking’ until all the attributes have a non-null value, even when it does have a value for the attribute it needs to display, but it will totally ignore default units defined in capabilities and sulk until you explicitly set a unit, and it would much rather you sent that unit with every event.
So you find that DTHs now have go to the trouble to initialise attributes to valid values, even if doing so gives them a nonsense value and sets off the alarms and fires the stairlift ejection seat. They also have to set the units every time they set an attribute even if it hasn’t changed. Neither thing should be necessary but you have to go with the flow.
Update: I may have oversold that and it might be that ‘Checking’ only cares about the value it needs to display.