Я націлений на сповіщення користувачів у стилі ios10 (UNUserNotificationCenter
). Поки ми реалізували ...
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
// ...
completionHandler()
}
Що чудово працює, коли додаток перебуває у фоновому режимі. Однак коли додаток припиняється та запускається за допомогою поштового повідомлення, що містить пряму посилання, це didReceive
func не називається.
При впровадженні push-сповіщень для iOS9, здається, ви повинні перевірити launchOptions
в didFinishLaunchingWithOptions
і перевірте, чи немає сповіщення, і прореагуйте відповідно. Це здається неправильним для iOS10, враховуючи, що сповіщення в launchOptions
є типу UIApplicationLaunchOptionsRemoteNotification
а не тип сповіщення про стиль iOS10 UNNotificationResponse
.
Хто-небудь може допомогти мені підтвердити спосіб запуску програми iOS10 за допомогою push-повідомлення, якщо ви реалізуєте UNUserNotificationCenterDelegate
?
Відповіді:
0 для відповіді № 1Так, для iOS 10 вам потрібно пограти з двома методами делегатів, коли надійде повідомлення.
1) -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{
2) -(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{
Відповідно до документації Apple, перший метод корисний, коли ваша програма стоїть на першому плані.
Отже, Другий метод буде корисним для вас. другий метод називається, коли ваша програма перебуває в фоновим або закритим. Таким чином, ви можете встановити дію в цьому способі, коли додаток закрито та відкрито за допомогою push-сповіщення.
Ви дізнаєтесь детально про push-повідомлення на iOS 10, будь ласка, перевірте це Ashishkakkad.com
Сподіваюся, ця інформація буде корисною для вас.