InvalidRegistration Fehler in der Feuerstellung Cloud Messaging für Android

Ich entwickle eine Android-App, mit Push-Benachrichtigung-Funktion. Ich brauche zu schieben vom server. Ich nutze FB. Ehrlich gesagt, dies ist meine erste Zeit der Nutzung der Feuerstellung. Ich bin Neuling auf FB. Aber wenn ich push vom server mit PHP und CURL, es ist mir ungültig Fehler bei der Registrierung.

Bekomme ich die FB-token in Android, wie diese

String token = FirebaseInstanceId.getInstance().getToken();

Dann habe ich speichern Sie gesendete token, um server und in der Datenbank gespeichert.

Auf dem server, ich bin drängen, wie dies

class Pusher extends REST_Controller {

    function __construct()
    {
        parent::__construct();
    }

    public function notification_get()
    {
        $rows = $this->db->get('device_registration')->result();
        $tokens= array();
        if(count($rows)>0)
        {
            foreach($rows as $row)
            {
                $tokens[] = $row->token;
            }
        }
        $message = array("message"=>"FCM PUSH NOTIFICATION TESTING");
        if(count($tokens)>0)
        {
            $result = $this->send_notification($tokens,$message);
            if(!$result)
            {
                die("Unable to send");
            }
            else{
                $this->response($result, REST_Controller::HTTP_OK);
            }
        }

    }

    function send_notification($tokens,$message)
    {
        $url = 'https://fcm.googleapis.com/fcm/send';
        $fields = array(
                'registration_ids'=>$tokens,
                'data'=>$message
            );

        $headers = array(
                'Authorization:key = AIzaSyApyfgXsNQ3dFTGWR6ns_9pttr694VDe5M',//Server key from firebase
                '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_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
        $result = curl_exec($ch);
        if($result==FALSE)
        {
            return FALSE;
        }
        curl_close($ch);
        return $result;
    }
}

Ich bin mit CodeIgniter 3 framework für die Erstellung von Rest-API. Wenn ich push den Zugriff auf url aus browser, es gibt JSON-Daten mit Fehler wie in dem folgenden screenshot zu sehen.

InvalidRegistration Fehler in der Feuerstellung Cloud Messaging für Android

Wie Sie sehen können, es gibt InvalidRegistration Fehler und die Nachricht ist nicht an Geräte übertragen. Was ist falsch an meinem code?

Zusätzliche

Dies ist mein FirebaseMessagingService Klasse zeigen, dass die Benachrichtigung in der android -

public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        showNotification(remoteMessage.getData().get("message"));
    }

    private void showNotification(String message)
    {
        Intent i = new Intent(this,MainActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        PendingIntent pendingIntent = PendingIntent.getActivity(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this).setAutoCancel(true)
                .setContentTitle("FCM Test")
                .setContentText(message)
                .setSmallIcon(R.drawable.info)
                .setContentIntent(pendingIntent);

        NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        manager.notify(0,builder.build());
    }
}

InformationsquelleAutor Wai Yan Hein | 2016-09-21

Schreibe einen Kommentar