How to solve this issue i want to send notifications

93 Views Asked by At

Here i want to send notifications for mobile. i am trying like this i getting error like this.


{"multicast_id":9154934162102180737,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}


i can not understand what is API_ACCESS_KEY

<?php
// API access key from Google API's Console
define( 'API_ACCESS_KEY', 'xxxxxx' );
//$registrationIds = array( $_GET['id'] );
$registrationIds = array( "APA91bEbAxYQZuglicZ2Ea5c26MtK07BYyunv14Us5INdjNvy3gy0Anq6V09dv2j21g7n_JERDumynuOp4l9GYA4RUGRjRZb6KJ4JYg9qPN9dlytPsgPKctIMhxfHFQSr9FfDjobZUJU" );
// prep the bundle
$msg = array
(
    'message'   => 'here is a message. message',
    'title'     => 'This is a title. title',
    'subtitle'  => 'This is a subtitle. subtitle',
    'tickerText'    => 'Ticker text here...Ticker text here...Ticker text here',
    'vibrate'   => 1,
    'sound'     => 1,
    'largeIcon' => 'large_icon',
    'smallIcon' => 'small_icon'
);
$fields = array
(
    'registration_ids'  => $registrationIds,
    'data'          => $msg
);

$headers = array
(
    'Authorization: key=' . API_ACCESS_KEY,
    'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );
echo $result;
2

There are 2 best solutions below

2
On

So basing from our discussion in the comments, it seems you were using the wrong Sender ID. You should always use the corresponding Sender ID to which the registration token was, well, registered. Your client app can receive from multiple Sender IDs, so long as it is tied to it. Else it will return a MismatchSender:

A registration token is tied to a certain group of senders. When a client app registers for GCM, it must specify which senders are allowed to send messages. You should use one of those sender IDs when sending messages to the client app. If you switch to a different sender, the existing registration tokens won't work.

0
On

@SujiniR First you register your app in Google Cloud Messaging and get API Access KEY and Send ID, Link:

https://developers.google.com/cloud-messaging/registration

Then, Save Your api access key in :

define( 'API_ACCESS_KEY', 'api_key_recieved_from_google_by_above_process' );

Then use SenderID in Android Application to get RegistrationId, copy or send that registrationId to server and use it in:

$registrationIds = array(registrationID);