By Sagar Shankaran, Founder of CallSphere
PushKit is the only API that wakes a terminated iOS app for an incoming AI call. Here is what changed in 2026, why CallKit reporting is enforced, and how to ship it.
Key takeaways
Regular APNs notifications cannot wake a terminated iOS app. PushKit can — and since iOS 13 the OS enforces that you immediately report a CallKit incoming call when you receive a VoIP push, or it terminates your app and disables future deliveries.
PushKit was introduced in iOS 8 as a separate, higher-priority push channel for VoIP apps. The payload is bigger than APNs (5 KB), the priority is highest, and the OS will wake your app even from a terminated state to process it. The catch: since iOS 13, you must call `provider.reportNewIncomingCall` on CallKit synchronously inside the PushKit handler. Apple's auditors check telemetry for compliance, and the system disables your VoIP token if you violate it.
For AI voice agents in 2026, this is the only way to ring an iPhone from a backend trigger when the user has the app closed. Anything else (silent push, background fetch, Live Activities) is unreliable on cellular or after a reboot.
```mermaid flowchart LR Backend[Voice Agent Backend] -- VoIP push --> APNs[(Apple APNs)] APNs -- topic.voip --> Device[iOS Device] Device -- pushRegistry --> Handler[PKPushRegistryDelegate] Handler -- reportNewIncomingCall --> CallKit[CallKit CXProvider] CallKit -- user answers --> WebRTC[WebRTC PeerConnection] WebRTC -- SRTP --> Gateway[Pion Go gateway 1.23] ```
CallSphere's iOS clients across the six verticals (real estate, healthcare, behavioral health, legal, salon, insurance) all rely on PushKit:
Hear it before you finish reading
Talk to a live CallSphere AI voice agent in your browser — 60 seconds, no signup.
37 agents, 90+ tools, 115+ database tables, SOC 2 + HIPAA, $149/$499/$1499 with 14-day /trial, 22% affiliate at /affiliate.
```swift import PushKit
class VoIPPushManager: NSObject, PKPushRegistryDelegate { let registry = PKPushRegistry(queue: .main)
override init() { super.init() registry.delegate = self registry.desiredPushTypes = [.voIP] }
func pushRegistry(_ registry: PKPushRegistry, didUpdate credentials: PKPushCredentials, for type: PKPushType) { // POST credentials.token (hex) to your backend Backend.registerVoIPToken(credentials.token.map { String(format: "%02x", $0) }.joined()) }
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) { let uuid = UUID(uuidString: payload.dictionaryPayload["call_id"] as? String ?? "") ?? UUID() let update = CXCallUpdate() update.remoteHandle = CXHandle(type: .generic, value: payload.dictionaryPayload["from"] as? String ?? "AI Agent") CXProviderManager.shared.provider.reportNewIncomingCall(with: uuid, update: update) { _ in completion() } } } ```
Still reading? Stop comparing — try CallSphere live.
CallSphere ships complete AI voice agents per industry — 14 tools for healthcare, 10 agents for real estate, 4 specialists for salons. See how it actually handles a call before you book a demo.
Backend side: send through APNs with the topic suffix `.voip` and the `apns-push-type: voip` header. The token is separate from your regular APNs token; treat it as such.
Is PushKit available on iPad? Yes, but the device must be a "phone-capable" iPad with cellular for full background wake; Wi-Fi-only iPads still work but with looser guarantees.
Can I deliver large payloads? Up to 5 KB; if you need more, send a small payload and have the app fetch the rest.
What if the user has Do Not Disturb on? CallKit respects DND; the call goes to voicemail UI but the app still wakes.
Are PushKit deliveries guaranteed? No — it is best-effort like APNs but with higher priority.
How fast is PushKit in 2026? P50 around 200 ms in the US; p99 around 1.5 s on cellular.
See the inbound flow live at /demo, see plans at /pricing, or start a /trial.
Written by
Sagar Shankaran· Founder, CallSphere
Sagar Shankaran is the founder of CallSphere, where he builds production AI voice and chat agents deployed across healthcare, hospitality, real estate, and home services. He writes about agentic AI, LLM engineering, and shipping voice agents that handle real calls in production.
See how AI voice agents work for your industry. Live demo available -- no signup required.
A founder's guide to texto a voz (text-to-speech in Spanish): LATAM vs Castilian voices, free options, and how CallSphere ships Spanish agents.
A founder's guide to the female voice generator landscape: AI female voices, Japanese voices, robot voices, and how CallSphere ships 57+ voices live.
A founder's guide to the Siri voice generator landscape: how AI voice cloning works, what is legal, and how CallSphere uses 57+ voices in production.
A founder's guide to AI voice assistants for ecommerce: customer service, order lookup, and how CallSphere fits in versus virtual receptionists.
Robot text to speech in 2026: how I pick TTS APIs, when robotic voices help, and how CallSphere ships 57+ language voice agents. Hands-on guide.
The customer support specialist role in 2026 is half human, half AI. Here is what the job looks like, the AI tools that pair with it, and how we ship it.
© 2026 CallSphere LLC. All rights reserved.