You can reliably show scheduled reminders on iOS when the app is killed - but with important limitations. The only fully-supported mechanisms are:
Local notifications scheduled with the system (UNUserNotificationCenter). They will be delivered when the app is terminated, but the notification sound is limited (system-truncated to ~30s) and normal notifications respect mute/Do Not Disturb.
Remote (APNs) notifications from your server can also wake the device and play a sound (again: subject to delivery delays and to the same sound limitations unless you have Critical Alerts).
If you need to override mute / DND or play an alarm sound longer than the standard notification sound, you must request and be granted the Critical Alerts entitlement from Apple — otherwise you can’t reproduce the Clock app behavior exactly.
What isn’t allowed / realistic:
PushKit (VoIP) / CallKit workarounds for non-VoIP alarms are not acceptable — Apple restricts PushKit for VoIP and will reject apps abusing it.
Playing continuous audio while the app is terminated is not possible unless the app is running with background-audio mode (which doesn’t help if the app was force-killed). Apps don’t have the same system privileges as Apple’s built-in Clock app.
Which approach you should pick (practical guidance)
If “notification + short sound / vibration” is enough (typical attendance reminder)
If you need higher reliability / server control / remote scheduling
If you need to override mute/DND or play long/continuous alarm sound
DO NOT try to use PushKit/VoIP unless your app truly is a VoIP app - Apple enforces this and will reject misuse