Я разрабатываю приложение для обмена сообщениями для iOS.iOS Push код уведомления о приеме
Я сохраняю номера телефонов пользователей на сервере, но я не сохраняю имена контактов на стороне сервера.
Когда пользователь получает push-уведомление от сервера, сервер отправляет номер телефона и содержимое сообщения пользователю в полезной нагрузке уведомления. Я внедрил приложение : didReceiveRemoteNotification: fetchCompletionHandler способ показать локальное уведомление. Я ищу в локальной базе данных для phoneContactName: номер телефона и показываю локальное уведомление в формате:% phoneContactName%:% messageContent%
Однако препятствие в том, что я не сейчас, как выполнить этот код, когда приложение не бегать. Я пытался реализовать приложения: didFinishLaunchingWithOptions и проверить там
NSDictionary *userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
но этот код не вызывается.
Чтобы решить проблему, я хотел бы спросить вас, какую архитектурную модель мне следует использовать. Должен ли я сохранять имена контактов на стороне сервера, чтобы отправить уведомление. С сервера с именем контакта (пока мой сервер не знает имя контактного телефона) или есть способ выполнить код, когда приложение не работает?
P.S. Кроме того, я рассчитываю номер значка на стороне клиента при получении уведомления. Таким образом, решение по выполнению кода будет лучше, если это возможно.
Спасибо
Моя проблема заключается в том, что применение: didFinishLaunchingWithOptions не вызывается в моем случае. Я делаю что-то неправильно? –
'application: didFinishLaunchingWithOptions' вызывается только тогда, когда приложение было прервано. Обычно это первый раз, когда приложение запускается при включении устройства или когда операционная система iOS убила процесс. Я предполагаю, что приложение открывается из приостановленного состояния, что означает, что 'application: didFinishLaunchingWithOptions' не будет вызываться. Если пользователь открывает ваше приложение из уведомления, пока приложение находится в этом состоянии, «приложение: didReceiveRemoteNotification» - это метод, который вызывается. –
спасибо. Как я понял из соответствующего ответа, приложение: didFinishLaunchingWithOptions вызывается, когда пользователи нажимают значок. Мой сервер не знает имя phoneContactName и отправляет только номер телефона и messageContent в полезную нагрузку. Приложение: метод didReceiveRemoteNotification вызывается, когда приложение находится на переднем плане или в фоновом режиме, но ни этот метод, ни приложение: didFinishLaunchingWithOptions вызывается, когда приложение было приостановлено.Как заменить номер телефона на phoneContactName, если приложение было приостановлено? –