We have an VoIP app that supports starting VoIP calls using Siri. On devices running iOS 11 or 12 this functionality works well. However, it stopped working on devices running iOS 13.
1) User asks Siri to use our app to call one of their contacts
2) resolveContacts is called, the contacted is matched, and the success result is returned
3) confirm is called and a response is returned with .continueInApp and a userActivity
4) At this point handle is not called and an iOS log is displayed such as the following...
[Intents] -[INCache cacheableObjectForIdentifier:] Unable to find cacheable object with identifier FA0D8C9A-1A54-405F-9A7B-52D0E9DC2098 in cache.
It turns out the problem was in the confirm method. For the successful case we had been sending back a response like such...
INStartAudioCallIntentResponse(code: .continueInApp, userActivity: userActivity)
This worked up until iOS 13. For iOS 13 we had to change .continueInApp to .ready. This solution works for older iOS versions as well.