OK after some further testing and more coffee I think I found the solution myself. Documenting here. I need a template but the data field in the call service was a bit of a mystery. I created a template using:
{
"title": "testmessage",
"message": "{{payload}}"}
In the data field of the call service node I specified a FUNCTION (not JSON) msg.payload. This works!
If you want to verify or play around with my test flow, here it is: (donāt forget to replace service with your iOS device).
[{"id":"6b6adad2.48e144","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"6cfc5d13.e5919c","type":"api-call-service","z":"6b6adad2.48e144","name":"iphone_bericht","server":"13794b3e.0d6f05","version":1,"service_domain":"notify","service":"ios_iphone","entityId":"","data":"msg.payload","dataType":"jsonata","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":330,"y":300,"wires":[["f18ead38.554a"]]},{"id":"2db9f978.772a3e","type":"inject","z":"6b6adad2.48e144","name":"","topic":"","payload":"tester","payloadType":"str","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":110,"y":220,"wires":[["6e2890b6.bb1ee"]]},{"id":"f18ead38.554a","type":"debug","z":"6b6adad2.48e144","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":620,"y":320,"wires":[]},{"id":"6e2890b6.bb1ee","type":"template","z":"6b6adad2.48e144","name":"testing","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\n\"title\": \"testmessage\",\n\"message\": \"{{payload}}\"}","output":"json","x":310,"y":500,"wires":[["6cfc5d13.e5919c","7e07c58e.665594"]]},{"id":"7e07c58e.665594","type":"debug","z":"6b6adad2.48e144","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":680,"y":520,"wires":[]},{"id":"13794b3e.0d6f05","type":"server","z":"","name":"Home Assistant"}]
You can import this in Node-Red.
The possibilities of Node-Red are mind-boggling!