Have you tried the test page for gathering ICE candidates? Is it working there?
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
If not I heard there is supposed to be some sort of "Disable ICE candidate filtering" option for safari - by default, ice candidates are applied to a filter which sometimes caused issues for users.
If the test page is working and just not your example, it might be worth a try to include adapter.js into your solution if you aren't already doing that.