Добавление категории в AppDelegate для реализации метода из протокола UIAplicationDelegate - PullRequest
0 голосов
/ 21 октября 2019

Я занимаюсь разработкой Cocoa Touch Framework, хочу получить удаленные уведомления от APNS и обнаружил, что (после всего процесса, необходимого для установления связи с APNS), я должен отлавливать уведомления внутри метода application:didReceiveRemoteNotification:fetchCompletionHandler:. Тем не менее, я хочу предоставить разработчику IOS меньше работы, поэтому мне было интересно.

  • Возможно ли создать категорию AppDelegate внутри моей инфраструктуры (поскольку она уже имеет расширение, когдасоздано новое приложение) для реализации этого метода?.

1 Ответ

1 голос
/ 21 октября 2019

Я бы сказал, что это не нужно. Здесь вы можете создать некоторую функцию с теми же параметрами, что и в application:didReceiveRemoteNotification:fetchCompletionHandler:, и предоставить ее возможному разработчику для вызова из вашей платформы.

Многие платформы работают так же, как FacebookSDK. Например, мой код в AppDelegate для открытия / обработки URL:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    let fbHandled: Bool = ApplicationDelegate.shared.application(app,
                                                               open: url,
                                                               sourceApplication: options[.sourceApplication] as? String,
                                                               annotation: options[.annotation])
    return fbHandled
}

Вы могли видеть, что Facebook просто предоставляет мне несколько открытых методов для обработки ссылок внутри своего SDK. Это лучшее решение, чем неявная обработка чего-либо, о чем разработчик мог бы знать и быть доступным для изменения в своем коде.

...