Как использовать UNNotificationPresentationOptions

В iOS 10 есть возможность представить уведомление, когда приложение находится на переднем плане, с помощью UNNotificationPresentationOptions,

но я не смог найти ни одного примера того, как это использовать, пожалуйста, предложите идею о том, как реализовать эту функцию


person satheesh    schedule 05.10.2016    source источник


Ответы (2)


Я реализовал уведомление переднего плана с помощью

Добавление приведенного ниже кода в мой viewController

extension UIViewController: UNUserNotificationCenterDelegate {

    public func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Swift.Void) {
        completionHandler( [.alert, .badge, .sound])
    }

    public func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Swift.Void) {
        print("Do what ever you want")

    }

}

В моем Appdelegate на didFinishLaunchingWithOptions

UNUserNotificationCenter.current().requestAuthorization(options: [.alert,.sound]) {(accepted, error) in

            if !accepted {   
                print("Notification access denied")
            }            
        }
person satheesh    schedule 05.10.2016
comment
Не забудьте позвонить completionHandler() в конце userNotificationCenter(_:didReceive:withCompletionHandler:). Если вы не вызовете его, вы, вероятно, получите нежелательное поведение. Дополнительные сведения см. в документах. - person Nathan Walker; 01.08.2017

Новый UNUserNotificationCenterDelegate в iOS 10 теперь имеет единый набор методов для обработки как удаленных, так и локальных уведомлений. .

UNUserNotificationCenterDelegate протокол:

userNotificationCenter(_:didReceive:withCompletionHandler:)

Вызывается, чтобы сообщить вашему приложению, какое действие было выбрано пользователем для данного уведомления.

userNotificationCenter(_:willPresent:withCompletionHandler:)

Доставляет уведомление приложению, работающему на переднем плане.

Два метода. И что еще лучше, так это то, что теперь, когда они перешли на собственный протокол, iOS 10

UNUserNotificationCenterDelegate, так что это поможет очистить ваш существующий UIApplicationDelegate, поскольку вы сможете преобразовать весь этот старый код обработки уведомлений в собственный блестящий, новый, целостный протокол.

Вот пример:

extension NotificationManager: UNUserNotificationCenterDelegate {

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: () -> Void) {

    switch response.actionIdentifier {

    // NotificationActions is a custom String enum I've defined
    case NotificationActions.HighFive.rawValue:
        print("High Five Delivered!")
    default: break
    }
}

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

    // Delivers a notification to an app running in the foreground.
}
}
person Pooja Srivastava    schedule 05.10.2016