React-native-onesignal: didReceiveRemoteNotification funktioniert nicht in AppDelegate.m

Erstellt am 30. Okt. 2018  ·  4Kommentare  ·  Quelle: OneSignal/react-native-onesignal

Beschreibung:

Ich versuche, Freschat SDK zu verwenden, um die Push-Benachrichtigungen in AppDelegate.m zu verarbeiten, aber es scheint nicht mit der Onesignal-Diensterweiterung zu funktionieren.

Umfeld

  1. Welche Version des OneSignal React-Native SDK verwenden Sie? 3.2.7
  2. Wie haben Sie das SDK zu Ihrem Projekt hinzugefügt (z. B. npm) npm

Schritte zum Reproduzieren des Problems:

  • Installieren Sie das OneSignal SDK mit npm in Ihrem Projekt

  • Initialisieren Sie das SDK im iOS AppDelegate
  • Versuch, eine Push-Benachrichtigung zu erhalten
  • Noch etwas:

    (Absturz-Stacktraces, sowie alle anderen Informationen hier)

    Hilfreichster Kommentar

    Sorry für die (sehr) verspätete Antwort hier, aber es gibt ein paar Dinge.

    Zunächst einmal ist application:didReceiveRemoteNotification: veraltet. Sie sollten stattdessen application:didReceiveRemoteNotification:fetchCompletionHandler: verwenden. Aber ich würde auch davon abraten, die Methoden UNUserNotificationCenterDelegate verwenden, wenn Sie nativen Code ausführen möchten, wenn eine Benachrichtigung empfangen wird.

    Die Notification Service Extension überschreibt diese Methode nicht.

    Um UNUserNotificationCenterDelegate , bearbeiten Sie AppDelegate.h und fügen Sie

    #import <UserNotifications/UserNotifications.h>
    

    Ändern Sie dann die AppDelegate-Schnittstelle, um das UNUserNotificationCenterDelegate Protokoll zu implementieren:

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

    In AppDelegate.m innerhalb der Methode didFinishLaunchingWithOptions: sollten Sie die folgende Zeile hinzufügen:

    UNUserNotificationCenter.currentNotificationCenter.delegate = self;
    

    Schließlich können Sie die folgende Methode hinzufügen, die jetzt immer dann aufgerufen wird, wenn eine Benachrichtigung empfangen wird:

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

    Wird geschlossen, da dies mit unserem SDK kein Problem darstellt

    Alle 4 Kommentare

    @nitish1099 Was meinen Sie, wenn Sie sagen "es scheint nicht mit der OneSignal-Diensterweiterung zu funktionieren" ...?

    Außerdem ist das SDK von Freschat Closed Source, sodass wir leider nicht viel tun können, um die Inkompatibilität zu beheben. Wird die AppDelegate-Methode aufgerufen, wenn Sie ihr SDK aus Ihrem Projekt entfernen?

    Möglicherweise müssen Sie stattdessen die Methoden UNUserNotificationCenterDelegate verwenden, um Methodenaufrufe für Benachrichtigungsereignisse zu erhalten

    @Nightsd01 Da ich kein nativer Entwickler

    @ Nightsd01 Irgendwelche Updates?

    Sorry für die (sehr) verspätete Antwort hier, aber es gibt ein paar Dinge.

    Zunächst einmal ist application:didReceiveRemoteNotification: veraltet. Sie sollten stattdessen application:didReceiveRemoteNotification:fetchCompletionHandler: verwenden. Aber ich würde auch davon abraten, die Methoden UNUserNotificationCenterDelegate verwenden, wenn Sie nativen Code ausführen möchten, wenn eine Benachrichtigung empfangen wird.

    Die Notification Service Extension überschreibt diese Methode nicht.

    Um UNUserNotificationCenterDelegate , bearbeiten Sie AppDelegate.h und fügen Sie

    #import <UserNotifications/UserNotifications.h>
    

    Ändern Sie dann die AppDelegate-Schnittstelle, um das UNUserNotificationCenterDelegate Protokoll zu implementieren:

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

    In AppDelegate.m innerhalb der Methode didFinishLaunchingWithOptions: sollten Sie die folgende Zeile hinzufügen:

    UNUserNotificationCenter.currentNotificationCenter.delegate = self;
    

    Schließlich können Sie die folgende Methode hinzufügen, die jetzt immer dann aufgerufen wird, wenn eine Benachrichtigung empfangen wird:

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

    Wird geschlossen, da dies mit unserem SDK kein Problem darstellt

    War diese Seite hilfreich?
    0 / 5 - 0 Bewertungen