NSUserActivity: какой метод будет вызываться, когда пользователь нажмет (или сделает вызов) из недавнего журнала моего приложения?

Я быстро внедряю CallKit, и у меня возникла проблема с NSUserActivity при совершении вызова непосредственно из последнего журнала.

При нажатии на запись моего приложения в последнем журнале мое приложение запускается, но ни один метод AppDelegate не вызывается.

Я включил Siri из возможностей приложения и добавил NSUserActivityType в info.plist. Я добавил INStartAudioCallIntent и INStartVideoCallIntent внутри NSUserActivityType. Метод, который я реализовал внутри класса 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:] имеет прикрепленное взаимодействие, но оно не обрабатывается


person Afsar edrisy    schedule 05.09.2019    source источник


Ответы (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

Я изменил подпись, и это сработало для меня.

person MADHAVI KUMARI    schedule 06.09.2019