NSUserActivity:当用户从我的应用程序的最近日志中点击(或进行调用)时,将调用哪种方法?

时间:2019-09-05 12:27:32

标签: ios swift callkit sirikit nsuseractivity

我正在迅速实现CallKit,并且在直接从最近的日志中拨打电话时遇到了NSUserActivity问题。

在最近的日志中点击我的应用程序条目时,我的应用程序正在启动,但是AppDelegate的任何方法都没有调用。

我已经从应用程序功能打开了Siri,并在info.plist中添加了NSUserActivityType。我在NSUserActivityType中添加了INStartAudioCallIntent和INStartVideoCallIntent。我在AppDelegate类中实现的方法如下:

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

    return true
}

在最近的日志中点击我的应用程序的任何条目时,调试器控制台中将打印以下行。

  

AppDelegate-BAA416CD-ED84-4161-A054-B2192AFAD47A应用程序:continueUserActivity:restorationHandler:]已附加交互,但未处理

1 个答案:

答案 0 :(得分:1)

将函数的签名(即restorationHandler参数类型从([Any]?) -> Void更改为([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
    }
}

有关更多详细信息: https://github.com/Lax/Learn-iOS-Swift-by-Examples/blob/master/Speakerbox/Speakerbox/AppDelegate.swift

我更改了签名,它对我有用。