-1
votes

Comment supprimer la notification de Backend Envoyé sur iPhone lorsque l'application est tuée par l'utilisateur

Comme WhatsApp , je vais mettre en œuvre une interface Web pour une application iPhone . Si un utilisateur connecté sur les deux environnements (iPhone & Web) et reçoit un message d'un autre utilisateur, une notification est envoyée au iPhone et Web. Lorsque l'utilisateur lit ce message à partir de l'interface Web, la notification envoyée à l'iphone doit être supprimée comme WhatsApp , même lorsque l'application iPhone est tuée.

Comment pouvons-nous supprimer cette notification de cette iPhone de Backend? Comme je sais que nous n'avons pas de contrôle sur l'application iPhone lorsque l'application est tuée par l'utilisateur .

Merci d'avance.


1 commentaires

Voir la réponse ci-dessous pour la façon dont la notification silencieuse fonctionne. Stackoverflow.com/Questtions/36694963/...


3 Réponses :


2
votes

Je ne sais pas comment WhatsApp gère cela, mais vous pouvez utiliser une notification silencieuse pour atteindre la fonctionnalité ci-dessus. Vous devez activer le mode arrière-plan pour une notification silencieuse.

Lorsque la notification silencieuse vient, il ne s'affiche pas Écran comme une notification régulière, il ouvrira votre candidature même si votre application est terminée. Le système fournira un certain temps à votre application pour effectuer une certaine tâche et vous pouvez uniquement faire dans ce cadre uniquement. P>

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()
}


8 commentaires

Didreceiveremotenotification a-t-il appelé lorsque l'application est tuée?


Oui, il ouvrira également en mode tué. Vous pouvez vérifier cela en exécutant le code de notification local lorsque vous recevez une notification silencieuse.


Permettez-moi de tester et de tester le scénario ci-dessus.


J'ai vérifié la solution ci-dessus et confirmé car je sais déjà que Didreceiveremotenotification non appelée lorsque l'application est tuée.


Voir la réponse ci-dessous Stackoverflow.com/questions/36694963/...


Voir cet article, Medium.com/fantaceek/push-notification-inios- 46D979E5F7EC


Cette solution ne fonctionne que lorsque l'application est en arrière-plan. Je parle spécifiquement de quand l'application est tuée par l'utilisateur.


Veuillez lire un document sur la notification silencieuse et la façon dont cela fonctionne.



1
votes

Quelle application est une application VoIP et c'est toujours (d'une manière) éveillé dans l'arrière-plan. Donc, on peut effectuer des appels d'API pour vérifier l'état des messages d'application. Si votre application a une fonctionnalité VoIP, vous pouvez en bénéficier.


4 commentaires

Oui cela a du sens.


Merci, cela n'est possible qu'avec VoIP.


Mais l'application n'est pas approuvée par Apple si nous utilisons la notification VoIP.


Oui, votre application doit être une application VoIP pour utiliser les notifications VoIP, sinon Apple rejette l'application



1
votes

Essayez d'utiliser les pousses VoIP, la notification de la poussée silencieuse ne fonctionne pas si l'application a été intentionnellement terminée par l'utilisateur.


1 commentaires

Oui cette approche a réussi