Как удалить уведомление из бэкэнда, отправленного на iPhone, когда приложение убито пользователем - PullRequest
0 голосов
/ 08 мая 2019

Как и WhatsApp , я собираюсь реализовать веб-интерфейс для приложения iPhone.Если пользователь вошел в обе среды (iPhone и веб) и получил сообщение от другого пользователя, уведомление отправляется на iPhone и в Интернет.Когда пользователь читает это сообщение из веб-интерфейса, уведомление, отправленное на iPhone, должно удаляться, как WhatsApp , даже если приложение iPhone убито.

Как мы можем удалить отправленный iPhoneуведомление от бэкэнда?Как я знаю, у нас нет контроля над приложением iPhone, когда app is killed by User.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 08 мая 2019

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

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

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
       print(" Entire message \(userInfo)")
       print("Article avaialble for download: \(userInfo["articleId"]!)")
       //let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(scheduleLocalNotification), userInfo: nil, repeats: false)
       let state: UIApplication.State = application.applicationState
       switch state {
       case UIApplicationState.active:
           print("If needed notify user about the message")
       default:
           registerBackgroundTask()
           removeBadges()
    }
    completionHandler(UIBackgroundFetchResult.newData)
}
func registerBackgroundTask() {
       backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
       self?.endBackgroundTask()
   }
   assert(backgroundTask != UIBackgroundTaskIdentifier.invalid)
}

func endBackgroundTask() {
  print("Background task ended.")
  UIApplication.shared.endBackgroundTask(backgroundTask)
  backgroundTask = UIBackgroundTaskIdentifier.invalid
}
func removeBadge() {           
  UIApplication.shared.applicationIconBadgeNumber = 0           
  UIApplication.shared.cancelAllLocalNotifications()
}
1 голос
/ 09 мая 2019

Что такое приложение VoIP, и оно всегда (в некотором роде) просыпается в фоновом режиме. Таким образом, можно выполнять вызовы API для проверки состояния сообщений приложения. Если в вашем приложении есть функция VoIP, вы можете воспользоваться ею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...