My questions are: What exactly counts as “timely”? You must call reportNewIncomingCall before you return from the PushKit delegate handler. Does CallKit need to be reported within the same run loop, or within a specific time window (for example, within 1 second)? Strictly speaking, what's actually happening is that PKPushRegistry is checking a flag that CallKit sets (basically did report call) as soon as you return from the delegate handler. If that flag isn't set, then it throws an exception, crashing your app. More experienced developers might realize that this is not in fact a secure enforcement mechanism since, with enough work, it seems like it would be possible for an app to disrupt that mechanism. That is in fact true and, in fact, with enough digging, you can actually find the mechanism CallKit uses to notify PushKit of the call. I won't describe the details, but it isn't particularly difficult to spoof that mechanism. That's because the role of this particular crash isn't to formally enforce the requ
Topic:
App & System Services
SubTopic:
Notifications
Tags: