J'utilise le service de notification push dans mon application. Lorsque l'application est en arrière-plan, je peux voir la notification sur l'écran de notification (écran affiché lorsque nous glissons du haut de l'appareil iOS vers le bas). Mais si l'application est au premier plan, la méthode déléguée
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
est appelé mais la notification n'est pas affichée dans l'écran de notification.
Je souhaite afficher une notification sur l'écran de notification, que l'application soit en arrière-plan ou au premier plan. Je suis fatigué de chercher une solution. Toute aide est grandement appréciée.
iphone
ios
objective-c
push-notification
Ab'initio
la source
la source
Réponses:
Pour afficher le message de la bannière lorsque l'application est au premier plan, utilisez la méthode suivante.
iOS 10, Swift 3/4 :
iOS 10, Swift 2.3 :
Vous devez également enregistrer votre délégué d'application en tant que délégué pour le centre de notifications:
la source
UNUserNotificationsCenter.current().delegate = self
dans l'application didFinishLaunchingWithOptionsLe code ci-dessous fonctionnera pour vous:
la source
title
est légèrement plus grand en gras et lemessage
texte est plus petit en dessous. Un bouton "OK" pour ignorer se trouve en bas). L'option applicationIconBadgeNumber définie sur 0 consiste à masquer le nombre qui apparaît en haut de l'icône de l'application dans Springboard (par exemple, indiquant le nombre de messages non lus dans une application de messagerie). Dans cet exemple, je ne sais pas si cette option est même nécessaire.Pour tous ceux qui pourraient être intéressés, j'ai fini par créer une vue personnalisée qui ressemble à la bannière push du système en haut, mais ajoute un bouton de fermeture (petit X bleu) et une option pour appuyer sur le message pour une action personnalisée. Il prend également en charge le cas de plus d'une notification arrivée avant que l'utilisateur n'ait le temps de lire / rejeter les anciennes (sans limite au nombre de notifications pouvant s'empiler ...)
Lien vers GitHub: AGPushNote
L'utilisation est essentiellement en ligne:
Et cela ressemble à ceci sur iOS7 (iOS6 a un look and feel iOS6 ...)
la source
Objectif c
Car
iOS 10
nous avons besoin d'unewillPresentNotification
méthode d' intégration pour afficher la bannière de notification dansforeground
.Si l'application en mode premier plan (active)
la source
Si l'application s'exécute au premier plan, iOS n'affichera pas de bannière / alerte de notification. C'est par conception. Mais nous pouvons y parvenir en utilisant
UILocalNotification
comme suitVérifiez si l'application est à l'état actif lors de la réception d'une
notification à distance . Si dans l'état actif, déclenchez un UILocalNotification.
RAPIDE:
la source
If the app is foremost and visible when the system delivers the notification, the app delegate’s application:didReceiveLocalNotification: is called to process the notification. Use the information in the provided UILocalNotification object to decide what action to take. The system does not display any alerts, badge the app’s icon, or play any sounds when the app is already frontmost.
Si l'application s'exécute au premier plan, iOS n'affichera pas de bannière / alerte de notification. C'est par conception. Vous devez écrire du code pour gérer la situation dans laquelle votre application reçoit une notification alors qu'elle est au premier plan. Vous devez afficher la notification de la manière la plus appropriée (par exemple, ajouter un numéro de badge à une
UITabBar
icône, simuler une bannière du centre de notifications, etc.).la source
UNUserNotificationCenter
API). Avec la nouvelle API, il est désormais possible d'afficher les notifications si l'application est au premier plan. Donc si vous êtes confus parce que les différentes réponses à cette question, c'est parce que certaines des réponses sont trop anciennes, et ne décrivent que le comportement pour iOS 9 et avant, alors que les autres ne tiennent pas compte du fait que leUNUserNotificationCenter
n'est disponible que depuis iOS 10.Xcode 10 Swift 4.2
Pour afficher la notification push lorsque votre application est au premier plan -
Étape 1: ajoutez le délégué UNUserNotificationCenterDelegate dans la classe AppDelegate.
Étape 2: définir le délégué UNUserNotificationCenter
Étape 3: Cette étape permettra à votre application d'afficher la notification push même lorsque votre application est au premier plan
Étape 4: Cette étape est facultative . Vérifiez si votre application est au premier plan et si elle est au premier plan, puis affichez Local PushNotification.
Fonction de notification locale -
la source
Selon la documentation Apple , Oui, vous pouvez afficher une notification pendant que l'application est en cours d'exécution
la source
UNUserNotificationCenterDelegate
protocoleviewDidLoad
extension AppDelegate: UNUserNotificationCenterDelegate
Vous pouvez créer votre propre notification qui imite l'alerte de bannière.
Une façon consiste à créer une vue uiview personnalisée qui ressemble à la bannière et peut animer et répondre aux touches. Dans cet esprit, vous pouvez créer des bannières encore meilleures avec encore plus de fonctionnalités.
Ou vous pouvez rechercher une API qui le fait pour vous et les ajouter en tant que podfiles à votre projet.
Voici quelques exemples que j'ai utilisés:
https://github.com/terryworona/TWMessageBarManager
https://github.com/toursprung/TSMessages
la source
TWMessageBarManager
peut être facilement invoqué et utilisé via appdelegate lui-même car il utilise un modèle de conception singleton. Merci pour les liens.Voici le code pour recevoir une notification push lorsque l'application est à l'état actif (au premier plan ou ouverte). Documentation UNUserNotificationCenter
Si vous devez accéder à userInfo de notification, utilisez le code:
notification.request.content.userInfo
la source
L'ajout de cette ligne completionHandler à la méthode de délégation a résolu le même problème pour moi:
la source
Pour Swift 5 pour analyser le dictionnaire PushNotification
Pour récupérer la vue de dessusContrôleur sur lequel nous montrons topBanner
la source
guard
déclaration est votre ami :-)Dans votre délégué d'application, utilisez le code ci-dessous
la source
Pour Swift 5
C'est tout!
la source
Comme mentionné ci-dessus, vous devez utiliser
UserNotification.framework
pour y parvenir. Mais pour mes besoins, je dois quand même le montrer dans l'application etiOS 11
je voulais avoir du style, j'ai donc créé une petite vue d'aide, ce qui serait peut-être utile pour quelqu'un.Affichage des notifications push GitHub iOS 11 .
la source
La meilleure approche pour cela est d'ajouter
UNUserNotificationCenterDelegate
enAppDelegate
utilisantextension AppDelegate: UNUserNotificationCenterDelegate
cette extension indique à l'application d'être en mesure de recevoir une notification lorsqu'elle est utiliséeEt implémentez cette méthode
Cette méthode sera appelée sur le délégué uniquement si l'application est au premier plan .
Donc, la mise en œuvre finale:
Et pour appeler cela, vous devez définir le délégué dans AppDelegate en
didFinishLaunchingWithOptions
ajoutant cette ligneVous pouvez modifier
avec
la source
Si votre application est au premier plan, cela signifie que vous utilisez actuellement la même application. Il n'est donc pas nécessaire d'afficher une notification en haut en général.
Mais toujours si vous souhaitez afficher une notification dans ce cas, vous devez créer votre vue d'alerte personnalisée ou vue personnalisée comme Toast ou autre chose pour montrer à l'utilisateur que vous avez reçu une notification.
Vous pouvez également afficher un badge en haut si vous disposez de ce type de fonctionnalité dans votre application.
la source
Comme @Danial Martine l'a dit, iOS n'affichera pas de bannière / alerte de notification. C'est par conception. Mais s'il faut vraiment le faire, il y a un moyen. J'ai également réalisé cela par le même.
1.Téléchargez le travail du cadre d'analyse à partir de Parse FrameWork
2. importation
#import <Parse/Parse.h>
3.Ajoutez le code suivant à votre méthode didReceiveRemoteNotification
PFPush prendra soin de gérer la notification à distance. Si l'application est au premier plan, cela affiche l'alerte, sinon la notification en haut.
la source