Итак, я внедрил Удаленные push-уведомления (apn) для моего приложения, чтобы я мог отправлять уведомления с сервера на клиент.
Мое приложениеЭто своего рода мессенджер, такой как WhatsApp или Telegram, и поэтому я хочу, чтобы клиент мог отвечать на уведомления.Итак, я реализовал расширение NotificationService .
Если я нажму на уведомление, введите свое сообщение в появившееся текстовое поле и нажмите кнопку ответа (как мы все знаем изнаше любимое приложение для обмена сообщениями) Я хочу отправить сообщение обратно на мой сервер.
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
// on reply
if let url = URL(string: "myserver/send/text") {
let task = URLSession.shared.dataTask(with: url) {(data, response, error) in
if let serverResult = data as? String {
print("success")
}
}
task.resume()
}
}
Этот метод иногда работает, но я заметил, что у меня возникают проблемы, если приложение закрыто или моеiphone заблокирован: URL-адрес не извлекается с этим кодом.
С помощью отладчика я нашел в журналах что-то очень интересное: Программное обеспечение вызвало прерывание соединения .
Как я могу решить эту проблему?Изменит ли это что-то, если я реализую сокеты?Почему это работает для клиентов, таких как telegram / whatsapp, но не для меня?Что в мире я делаю не так?: - (