React-native-onesignal: didReceiveRemoteNotification ne fonctionne pas dans AppDelegate.m

Créé le 30 oct. 2018  ·  4Commentaires  ·  Source: OneSignal/react-native-onesignal

La description:

J'essaie d'utiliser Freschat SDK pour gérer leurs notifications push dans AppDelegate.m mais cela ne semble pas fonctionner avec l'extension de service onesignal.

Environnement

  1. Quelle version du SDK OneSignal React-Native utilisez-vous ? 3.2.7
  2. Comment avez-vous ajouté le SDK à votre projet (par exemple, npm) npm

Étapes pour reproduire le problème :

  • Installez le SDK OneSignal à l'aide de npm dans votre projet

  • Initialiser le SDK dans iOS AppDelegate
  • Tenter de recevoir une notification push
  • Rien d'autre:

    (crash stacktraces, ainsi que toute autre information ici)

    Commentaire le plus utile

    Désolé pour la réponse (très) tardive ici, mais il y a quelques petites choses.

    Tout d'abord, application:didReceiveRemoteNotification: est obsolète. Vous voudrez plutôt utiliser application:didReceiveRemoteNotification:fetchCompletionHandler: . Mais je vous déconseille également de l'utiliser, vous devez absolument utiliser les méthodes UNUserNotificationCenterDelegate si vous souhaitez exécuter du code natif lorsqu'une notification est reçue.

    L'extension de service de notification ne remplace pas cette méthode.

    Pour utiliser le UNUserNotificationCenterDelegate , modifiez AppDelegate.h et ajoutez :

    #import <UserNotifications/UserNotifications.h>
    

    Modifiez ensuite l'interface AppDelegate pour implémenter le protocole UNUserNotificationCenterDelegate :

    <strong i="18">@interface</strong> AppDelegate : UIResponder <UIApplicationDelegate, UNUserNotificationCenterDelegate>
    

    Dans AppDelegate.m intérieur de la méthode didFinishLaunchingWithOptions: , vous devez ajouter la ligne suivante :

    UNUserNotificationCenter.currentNotificationCenter.delegate = self;
    

    Enfin, vous pouvez ajouter la méthode suivante qui sera désormais appelée à chaque fois qu'une notification sera reçue :

    -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
      //do stuff
    }
    

    Fermeture car ce n'est pas un problème avec notre SDK

    Tous les 4 commentaires

    @ nitish1099 Que voulez-vous dire lorsque vous dites "ça ne semble pas fonctionner avec l'extension de service OneSignal"... ?

    De plus, le SDK de Freschat est une source fermée, donc malheureusement, nous ne pouvons pas faire grand-chose en termes de débogage de l'incompatibilité. Lorsque vous supprimez leur SDK de votre projet, la méthode AppDelegate est-elle appelée ?

    Vous devrez peut-être utiliser les méthodes UNUserNotificationCenterDelegate place pour recevoir des appels de méthode d'événement de notification

    @Nightsd01 N'étant pas un développeur natif, pouvez-vous me dire si l'extension du service de notification remplace la didReceiveRemoteNotification ? Pourriez-vous également me dire comment utiliser UNUserNotificationCenterDelegate ou si vous pouvez partager un guide auquel je peux me référer.

    @Nightsd01 Des mises à jour ?

    Désolé pour la réponse (très) tardive ici, mais il y a quelques petites choses.

    Tout d'abord, application:didReceiveRemoteNotification: est obsolète. Vous voudrez plutôt utiliser application:didReceiveRemoteNotification:fetchCompletionHandler: . Mais je vous déconseille également de l'utiliser, vous devez absolument utiliser les méthodes UNUserNotificationCenterDelegate si vous souhaitez exécuter du code natif lorsqu'une notification est reçue.

    L'extension de service de notification ne remplace pas cette méthode.

    Pour utiliser le UNUserNotificationCenterDelegate , modifiez AppDelegate.h et ajoutez :

    #import <UserNotifications/UserNotifications.h>
    

    Modifiez ensuite l'interface AppDelegate pour implémenter le protocole UNUserNotificationCenterDelegate :

    <strong i="18">@interface</strong> AppDelegate : UIResponder <UIApplicationDelegate, UNUserNotificationCenterDelegate>
    

    Dans AppDelegate.m intérieur de la méthode didFinishLaunchingWithOptions: , vous devez ajouter la ligne suivante :

    UNUserNotificationCenter.currentNotificationCenter.delegate = self;
    

    Enfin, vous pouvez ajouter la méthode suivante qui sera désormais appelée à chaque fois qu'une notification sera reçue :

    -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
      //do stuff
    }
    

    Fermeture car ce n'est pas un problème avec notre SDK

    Cette page vous a été utile?
    0 / 5 - 0 notes