Мы можем запланировать UNUserNotificationCenter только в определенном контроллере представления в iOS? - PullRequest
0 голосов
/ 03 июля 2018

Я хочу показывать уведомление только на определенных страницах, например, если идентификатор пользователя, полученный из полезной нагрузки уведомления, не равен текущему идентификатору пользователя. Где я должен использовать это условие внутри appdelegate? Я использовал willPresent делегат userNotificationCenter, чтобы доставить уведомление, когда приложение находится на переднем плане, и запрашивать разрешение на отображение метода уведомления в didFinishLauchingWithOptions в AppDelegate.

Пример кода метода willPresent приведен ниже.

func userNotificationCenter(_ center: UNUserNotificationCenter,
                            willPresent notification: UNNotification,
                            withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void){

    if let userID = notification.request.content.userInfo["user_id"] {
        self.userIDSelected = userID as! String
    }
    let notificationCenter = UNUserNotificationCenter.current()
    notificationCenter.removeAllDeliveredNotifications()
    if self.currentuserID != self.userIDSelected
    {
        completionHandler([.alert,.badge,.sound])
    }
    else
    {
         completionHandler([])
    }
}
...