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.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte überprüfen Sie mit sowohl von der Seite als app-Seite und die Seite, die genau die gleiche Registrierungs-id wird gespeichert in der server-Anwendung auf mobile empfängt Sie in auf
onTokenRefresh
Methode. Sie sollten erhalten haben, die genau die gleiche Registrierung-token als Entwickler habe inFirebaseInstanceId.getInstance().getToken()
Als ich Ihren Kommentar und Sie haben aktualisiert, der code hier ist einige änderung im code ist es aus google-doc selbst...
FB hat drei message-Typen:
auf welcher Plattform, Sie sind nicht immer Benachrichtigung?
Auf Android. Ich bekomme keine Benachrichtigung.
Ich habe gerade den code Hinzugefügt. Die Klasse deklariert ist, in der manifest-Datei als auch.
Aber ich bin nicht etwas zu tun mit dieser Klasse, weil ich denke, deklarieren Sie in der manifest-Datei ist genug. Ist es?
InformationsquelleAutor Arpit Patel
Obwohl ich bin nicht mit codeigniter, und war die Begegnung mit der
InvalidRegistration
Fehler beim senden an eineniOS
Gerät, ich dachte, ich würde teilen, wie ich beschloss die situation hier.Musste ich ändern registration_ids zu zu in PHP beim senden einer
Notification message
zu einem single - device-token, und stellen Sie sicher, dass der Wert von zu war ein string und kein array.Ändern:
:
InformationsquelleAutor tyler.frankenstein