1

I am implementing CallKit in swift and I'm facing a problem with NSUserActivity while making a call directly from the recent log.

While tapping on my app entry in the recent log, my app is launching but any method of AppDelegate is not calling.

I have turned on Siri from application capabilities and have added NSUserActivityType in info.plist. I've added INStartAudioCallIntent and INStartVideoCallIntent inside NSUserActivityType. The method I've implemented inside AppDelegate class is the following:

func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    print("Restoration")

    return true
}

When tapping on any entry of my app from the recent log the following line is printed in the debugger console.

AppDelegate-BAA416CD-ED84-4161-A054-B2192AFAD47A application:continueUserActivity:restorationHandler:] has an interaction attached but it is not handled

Afsar edrisy
  • 1,985
  • 12
  • 28

1 Answers1

3

Change the signature of the function, i.e. the restorationHandler parameter type from ([Any]?) -> Void to ([UIUserActivityRestoring]?) -> Void

func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    //if its a call

    guard let handle = userActivity.startCallHandle else {
        print("Could not determine start call handle from user activity: \(userActivity)")
        return false
    }
}

For more details: https://github.com/Lax/Learn-iOS-Swift-by-Examples/blob/master/Speakerbox/Speakerbox/AppDelegate.swift

I changed the signature and it worked for me.

Andrew Regan
  • 5,087
  • 6
  • 37
  • 73
MADHAVI KUMARI
  • 719
  • 1
  • 6
  • 17