2016-09-29 4 views
1

Итак, мы все знаем, что Apple представила UserNotifications Framework этим летом, и это здорово. И в соответствии с рекомендациями API от Apple и WWDC сессии об этих рамках, мы теперь имеем новый способ регистрации для нажимного уведомления следующим образом:Удаленные уведомления в iOS 10

UNUserNotificationCenter.current().requestAuthorization(options: [options], completionHandler: {}) 

Но ясно, что этот метод не собирается получить deviceToken от сервера APNs поэтому компания Apple сохранила некоторые API в UIKit следующим образом:

UIApplication.shared.registerForRemoteNotifications() 
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){} 

Это два метода для регистрации и получения deviceToken для удаленных уведомлений.

Так что становится двусмысленным, что если я хочу зарегистрироваться только для удаленных уведомлений, мне все равно придется делать requestAuthorization вещь? Или requestAuthorization только для регистрации местных уведомлений?

Плюс, если мне нужно реализовать оба из них, даже если я хочу зарегистрироваться только для удаленных уведомлений, где я должен писать registerForRemoteNotifications()? Должен ли я писать его в completionHandler в requestAuthorization или просто написать его снаружи, как если бы эти две команды request и register работали параллельно?

ответ

4

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

Вы можете позвонить registerForRemoteNotifications за пределами своего обработчика завершения requestAuthorization и разрешить им работать параллельно.

Update:

registerForRemoteNotifications получает вас маркер или нет они утверждены пользователя уведомления толчка.

Как это полезно, если пользователь отказался?

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

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

+0

Я просто очень смущен, что это не логически понятно, я имею в виду, как мы реализуем код. Например, если внутри обработчика завершения я обнаружил, что 'given == false', что означает, что пользователи отклонили запрос приложения для уведомления, для чего нам еще нужно« registerForRemoteNotifications »параллельно? – Allen

+0

Просто сделал несколько тестов в своем приложении, чтобы я мог обновить свой ответ. Я согласен, что документация крайне неясна. – charmingToad

+0

Угадайте, что Apple просто нуждается в улучшении. – Allen

Смежные вопросы