Just for big picture perspective, since Crestron fully supports talking TCP/UDP over the network, nothing stops anyone from leveraging that capability to just talk to Crestron by developing native iOS apps using Xcode and the Apple Developer Program ($99/yr) and then following Apple's workflow for "ad hoc distribution".
By "ad hoc distribution", I mean the workflow where you're not publishing to the App Store, but instead, collecting the UDID (device identifier) of the specific iOS devices you want to load to (Apple limits each standard developer account to 100 such devices) and then pushing the app directly to phones via a provisioning profile. If this works so well for you that 100 devices isn't enough, Apple's $299 Enterprise program is the next level up, and cuts out the provisioning profile step, in favor of a slicker "enterprise distribution" system.
I don't think Crestron will be the least bit unhappy if more Crestron gear gets sold to happy clients who are using it whichever way they want.
With a native iOS app you can support all the widgets and other OS-specific functionality you want. Sure, it's a custom baked solution per client, and off the beaten path compared to using the standard Crestron tools. But again, Crestron fully supports native TCP/UDP communication, and that includes to native homemade iOS clients you make in-house, for which there's absolutely no question as to whether widgets or other iOS functionality will be available. And ChatGPT has plenty of access to Swift code to have trained on, and can babystep programmers whose experience is something other than iOS into pivoting their existing knowledge and experience onto iOS.
Regarding the play/pause FOR RESI...the older Crestron app for Android (not Go) supported notification widget buttons. It was so convinient there, I had play/pause, prev/next and volume contol, 6 buttons I believe. The app didn't have to be in the foreground for this to work.
Now that iOS supports widgets, I wonder if there is automation app that you can create custom widget with a few buttons, and simply have a UDP packet sent to crestron. Programmatically/SIMPL change what source/room the widget control, based on last selection in the Crestron app for that IPID.