FCM-Push-Benachrichtigungsproblem: „error“: „NotRegistered“

Lesezeit: 3 Minuten

Benutzeravatar von Shashank Shah
Shashank Shah

Ich habe ein seltsames Problem beim Senden von Push-Benachrichtigungen an Android mithilfe von FCM.

Ziel: – Beim Senden der Push-Benachrichtigung ist ein Fehler aufgetreten

Unten ist das Szenario, in dem ich eine Funktion zum Senden von Push-Benachrichtigungen an Android habe

 public static function SendMultipleNotificationAndroid($groups)
    {
        //your api key SERVER API KEY
        $apiKey = Yii::$app->params['android_api_key'];
        $url="https://fcm.googleapis.com/fcm/send";    
        $headers = array(
            'Authorization:key=' . $apiKey,
            'Content-Type: application/json'
        );
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        
        foreach($groups as $resG){
            $users  = $resG['users'];                        
            $msg    =   $resG['message'];
            $type    =   $resG['notification_type'];
            $notification_data    =   $resG['notification_data'];

            $deviceTokens = [];
            foreach($users as $resUser){
                $deviceTokens[] = $resUser['device_token'];
                //Add  Friend badge count +1
                Common::AddRemoveBadgeCount($resUser['user_id']);
            }
            if(!empty($deviceTokens)){
                $fields = array(
                    'registration_ids' => $deviceTokens,
                    'priority'     => 'high', 
                    'collapse_key' => $resG['notification_type'],   
                    'time_to_live' => 2419200,     
                    "click_action" =>"NotificationListingActivity",     
                    'data'         => [                  
                        "title"             => "ProjectName",
                        "body"              => $resG['message'],
                        "action_tag"        => $resG['notification_type'],
                        "message"           => $resG['message'],
                        'notification_type' => $type,
                        'notification_data' => $notification_data,
                        'sound'             => 'default',
                    ]
                );
                //Print result 
                p($ch,0);
                curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
                curl_exec($ch);
            }            
        }
        curl_close($ch);
    }

Das Problem ist also, dass es gut funktioniert, wenn ich eine einzelne Benachrichtigung sende, aber wenn ich mehrere Benachrichtigungen sende, erhalte ich jedes Mal eine Fehlermeldung

<pre>Resource id #5</pre>{"multicast_id":4818908994630396118,"success":1,"failure":1,"canonical_ids":0,"results":[{"error":"NotRegistered"},{"message_id":"0:1487136045570022%c3bae3c6002e9358"}]}

<pre>Resource id #5</pre>{"multicast_id":5218359780835228544,"success":1,"failure":1,"canonical_ids":0,"results":[{"error":"NotRegistered"},{"message_id":"0:1487136046618669%c3bae3c6002e9358"}]}

Während wir den Code debuggen, haben wir in unserer Datenbank ein Geräte-Token und keine Firewall, die das Senden von Push-Benachrichtigungen stoppt.

Jedes Mal, wenn ich die obige Funktion aufrufe, erhalte ich

"error":"NotRegistered"

  • Nein, das war nicht der Fall!! Ich habe dort mehrere Benachrichtigungen gesendet! Einige der Benachrichtigungen wurden erfolgreich gesendet, andere weisen den Fehler „NotRegistered“ auf. In beiden Fällen wurde die Anwendung auf dem Gerät installiert.

    – Shashank Shah

    4. Dezember 2018 um 6:17 Uhr

  • „Einige der Benachrichtigungen wurden erfolgreich gesendet, andere weisen einen NotRegistered-Fehler auf.“ -> Ich habe das gleiche Problem @ShashankShah. Können Sie uns etwas mitteilen, wenn Sie es geschafft haben?

    – Nandam Mahesh

    14. November 2020 um 12:50 Uhr


  • Nach der Suche nach 4 Vieren stelle ich sicher, dass dies die richtige Antwort ist.

    – Dorbagna

    7. Februar um 13:42 Uhr

  • @maddy, das hat bei mir nicht funktioniert. Ich habe den Serverschlüssel geändert, als ich die Anfrage gestellt habe, erhalte aber immer noch die gleiche Fehlermeldung.

    – AIon

    1. März 2018 um 11:10 Uhr

  • @AIon, senden Sie eine Testbenachrichtigung von der Firebase-Konsole. Wenn es funktioniert, liegt das Problem möglicherweise bei Ihnen.

    – Maddy

    1. März 2018 um 11:12 Uhr

  • stackoverflow.com/questions/51123197/…

    – Martin Zeitler

    18. August 2018 um 13:53 Uhr

  • _firebaseRegister() { // _firebaseMessaging.deleteInstanceID(); _firebaseMessaging.getToken().then((token) => fcmtoken = token); }

    – Sadhvik Chirunomula

    6. August 2020 um 19:07 Uhr

  • _firebaseRegister() { // _firebaseMessaging.deleteInstanceID(); _firebaseMessaging.getToken().then((token) => fcmtoken = token); }

    – Sadhvik Chirunomula

    6. August 2020 um 19:07 Uhr

  • Ich stimme Ihrer Vorgehensweise zu. Aber ich habe eine Frage: Was passiert, wenn ein Benutzer die App eine Zeit lang nicht öffnet und das Token zwischen den Geräten geändert wird? Was sollten wir tun?

    – Nils

    17. Juni 2021 um 9:03 Uhr

  • @Nils, das Token ändert sich nur, wenn die App geöffnet wird (bei jedem Start der App). Wenn die App also nicht geöffnet wird, ändert sich das Token nicht. Sie können es am Ende versuchen und hier bestätigen.

    – SHS

    18. Juni 2021 um 14:38

  • das ist toll für mich. In meinem Fall erhielt ich bei der Installation der App durch den Benutzer 3–5 Tage lang eine Benachrichtigung. Und wenn der Benutzer die App 4-5 Tage lang nicht nutzt. Ich habe keine Push-Benachrichtigung erhalten. Irgendeine Idee, was ich falsch gemacht habe?

    – Nils

    21. Juni 2021 um 10:13 Uhr


1452610cookie-checkFCM-Push-Benachrichtigungsproblem: „error“: „NotRegistered“

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy