2017-08-31 4 views
0

J'ai vérifié que toutes les notifications sont planifiées correctement au NotificationCenter. Et, j'ai le code completionHandler([.alert, .badge, .sound]) dans mon délégué de l'application pour s'assurer que les notifications apparaîtront même lorsque l'utilisateur utilise l'application. Le résultat est que les notifications montrent que l'application est en arrière-plan, et non l'inverse.Les notifications locales ne sortiront pas lorsque l'application est en cours d'exécution mais le seront lorsque l'application sera en arrière-plan

+0

Avez-vous traiter les notifications de réception (lorsque l'application est active) dans AppDelegate? –

+0

Vous pouvez vérifier ce lien - https://stackoverflow.com/questions/39713605/getting-local-notifications-to-show-while-app-is-in-foreground-swift-3 J'espère que cela fonctionnera pour vous . –

+0

S'il vous plaît vérifier ce lien - https://stackoverflow.com/questions/39713605/getting-local-notifications-to-show-while-app-is-in-foreground-swift-3 –

Répondre

0

Avez-vous géré les notifications locales dans le délégué de l'application comme ceci?

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) { 
    // Do something you want 
    println("Received Local Notification:") 
    println(notification.alertBody) 
} 

Ci-dessus, pour les notifications locales et il y a une autre méthode pour les notifications à distance hadle,

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) { 
// Do something you want 
} 

Assurez-vous que vous gérez les notifications locales en utilisant la méthode de notification locale.

+0

oui! J'ai fait. J'utilise: func userNotificationCenter (_ centre: UNUserNotificationCenter, réponse de didReceive: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { –

0

S'il vous plaît essayez ceci:

extension AppDelegate: UNUserNotificationCenterDelegate { 
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { 
     completionHandler([.alert, .sound]) 
    } 
} 

Vous pouvez trouver Apple doc here. Ce que j'ai compris, c'est que toutes les options que j'aurai envoyées à completionHandler vont arriver.

Si vous envoyez seulement .alert, il affichera juste l'alerte Si vous envoyez seulement .sound, il va juste jouer le son spécifié par la notification.

Et fera les deux si nous envoyons les deux options.

Et ne fera rien si nous n'envoyons aucun paramètre.

Donc ce que vous devez faire est d'envoyer le paramètre .alert.

En didFinishLaunchingWithOptions vous aurez également besoin d'ajouter

UNUserNotificationCenter.current().delegate = self