我想在此发送手机通知。我这样想我得到这样的错误。
{" multicast_id":9154934162102180737,"成功":0,"失效":1," canonical_ids":0,&# 34;结果":[{"错误":" MismatchSenderId"}]}
我无法理解什么是 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;
答案 0 :(得分:0)
@SujiniR首先,您在Google Cloud Messaging中注册您的应用并获取API访问密钥和发送ID,链接:
https://developers.google.com/cloud-messaging/registration
然后,在以下位置保存您的api访问密钥:
define( 'API_ACCESS_KEY', 'api_key_recieved_from_google_by_above_process' );
然后在Android应用程序中使用SenderID获取RegistrationId,将该registrationId复制或发送到服务器并在以下位置使用:
$registrationIds = array(registrationID);
答案 1 :(得分:0)
因此,根据我们在评论中的讨论,您似乎使用了错误的发件人ID。您应始终使用注册令牌所针对的相应发件人ID,即已注册。您的客户端应用可以从多个发件人ID中接收,只要它与绑定即可。否则它将返回MismatchSender:
注册令牌与某组发件人绑定。当客户端应用程序注册GCM时,它必须指定允许哪些发件人发送消息。在向客户端应用程序发送消息时,您应该使用其中一个发件人ID。 如果您切换到其他发件人,则现有的注册令牌将无效。