InvalidRegistration erreur dans Firebase Nuage de Messagerie pour Android
Je développe une Application Android qui aide à Pousser fonction de Notification. J'ai besoin de pousser par le serveur. J'utilise Firebase. Franchement, c'est ma première fois de l'aide de Firebase. Je suis novice à Firebase. Mais quand je l'ai pousser à partir du serveur à l'aide de PHP et CURL, c'est de me donner non valide erreur d'enregistrement.
- Je obtenir le Firebase jeton dans Android, comme ce
String token = FirebaseInstanceId.getInstance().getToken();
Puis-je enregistrer envoyé le jeton de serveur et stockées dans la base de données.
Sur le serveur, je suis poussant comme ce
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;
}
}
J'utilise CodeIgniter 3-cadre pour la construction de l'API Rest. Quand je pousse accédant à l'url dans le navigateur, il renvoie les données JSON avec l'erreur comme dans la capture d'écran ci-dessous.
Comme vous pouvez le voir c'est de donner InvalidRegistration d'erreur et le message n'est pas poussé vers les périphériques. Quel est le problème avec mon code?
Supplémentaires
C'est mon FirebaseMessagingService classe qui montrent notification 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());
}
}
OriginalL'auteur Wai Yan Hein | 2016-09-21
Vous devez vous connecter pour publier un commentaire.
Veuillez vérifier avec à la fois du côté de l'app côté et de votre côté que de l'exacte même id d'enregistrement est stocké dans le serveur de l'Application sur le mobile reçoit sur
onTokenRefresh
méthode. Vous devriez avoir reçu exactement le même jeton d'inscription en tant que développeur, obtenu dansFirebaseInstanceId.getInstance().getToken()
Que j'ai reçu votre commentaire et vous avez mis à jour le code ici est un peu de changement dans votre code, c'est à partir de google doc auto...
Firebase a trois types de messages:
sur la plate-forme que vous ne recevez pas de notification?
Sur Android. Je ne reçois aucune notification.
Je viens d'ajouter le code. Cette classe est déclarée dans le fichier manifeste.
Mais je ne suis pas de faire quelque chose avec cette classe parce que je pense que déclarer dans le fichier de manifeste est assez. S'agit-il?
OriginalL'auteur Arpit Patel
Bien que je ne suis pas à l'aide de codeigniter, et a été la rencontre avec la
InvalidRegistration
erreur lors de l'envoi d'uniOS
appareil, j'ai pensé que je voudrais partager comment j'ai résolu le problème.J'ai dû changer registration_ids à à en PHP lors de l'envoi d'un
Notification message
à un unique dispositif de jeton, et assurez-vous que la valeur de à est une chaîne et non un tableau.Changer cela:
:
OriginalL'auteur tyler.frankenstein