1

我正在快速实现 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 application:continueUserActivity:restorationHandler:] 已附加交互但未处理

4

1 回答 1

2

将函数的签名,即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

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

于 2019-09-06T12:24:10.563 回答