It is usually easy to detect a specific client. Like even if you ignore the keys there are dozens of little details like the TLS fingerprint of whatever library they use not matching iOS. Things that are easy to miss and sometimes hard to bypass. Then there are heuristics on how it is used is likely unique.
Many toolkits make dbus usage simple. It’s also introspectable so very easy to explore or generate bindings for dynamically.
It’s pretty nice to use IME.