如何解决这个问题我想发送通知

时间:2016-10-27 04:48:25

标签: php google-cloud-messaging gcmtaskservice

我想在此发送手机通知。我这样想我得到这样的错误。

{" 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;

2 个答案:

答案 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。 如果您切换到其他发件人,则现有的注册令牌将无效。