GCM使用PHP推送主题

GCM使用PHP推送主题,php,android,google-cloud-messaging,Php,Android,Google Cloud Messaging,我正在尝试编写一个PHP脚本,它将使用。它似乎成功并返回消息ID,但手机上不会显示任何内容。我确实有一个类似的python脚本,这个脚本可以正常工作,因此GCM必须在应用程序中正确实现 无法使用PHP脚本 $msg = array( 'to' => '/topics/my_little_topic', 'notifcation' => array( 'body' => 'here

我正在尝试编写一个PHP脚本,它将使用。它似乎成功并返回消息ID,但手机上不会显示任何内容。我确实有一个类似的python脚本,这个脚本可以正常工作,因此GCM必须在应用程序中正确实现

无法使用PHP脚本
$msg = array(
    'to'          => '/topics/my_little_topic',
    'notifcation' => array(
                            'body'      => 'here is a message message',
                            'title'     => 'This is a title title',
                            'icon'      => "ic_launcher"
    )
);

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

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://gcm-http.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( $msg, JSON_UNESCAPED_SLASHES) );
$result = curl_exec($ch );
curl_close( $ch );

echo $result;

?>
工作python脚本

$msg = array(
    'to'          => '/topics/my_little_topic',
    'notifcation' => array(
                            'body'      => 'here is a message message',
                            'title'     => 'This is a title title',
                            'icon'      => "ic_launcher"
    )
);

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

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://gcm-http.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( $msg, JSON_UNESCAPED_SLASHES) );
$result = curl_exec($ch );
curl_close( $ch );

echo $result;

?>
from urllib2 import *
import urllib
import json
import sys

MY_API_KEY="AIzaSyBh...aWIVA"

messageTitle = sys.argv[1]
messageBody = sys.argv[2]

data={
    "to" : "/topics/my_little_topic",
    "notification" : {
        "body" : messageBody,
        "title" : messageTitle,
        "icon" : "ic_launcher"
    }
}

dataAsJSON = json.dumps(data)

print dataAsJSON

request = Request(
    "https://gcm-http.googleapis.com/gcm/send",
    dataAsJSON,
    { "Authorization" : "key="+MY_API_KEY,
      "Content-type" : "application/json"
    }
)

print urlopen(request).read()

我想出来了。我复制了你的整个PHP脚本,并在我的终端进行了测试。我的
onMessageReceived()
被触发,但我注意到细节没有被检索到,与您的场景相同

只是错过了。您在脚本中拼错了
通知

'notifcation' => array(
它缺少一个
i
。它应该是
通知


经典和容易错过(lol)。在我这方面尝试过,之后能够显示通知。

你确定你的客户端应用程序正确订阅了相应的主题吗?@AL。是的,我有一个类似的脚本,但用python编写,该脚本工作正常,因此应用程序肯定订阅了该主题。现在,我只是想把python中的东西转换成php.Odd。您是否也发送相同的有效负载结构?您得到了成功的响应吗?@AL。据我所知,有效载荷是相同的(打印时两者的输出相同)。php脚本通过API返回的唯一消息_id stub获得成功响应,但应用程序中没有显示任何内容。我已经发布了运行中的python脚本,以防有人想看一下。@AL。谢谢你的帮助,我今天几乎一整天都在调试这个脚本。我也使用了不同的卷发选项,但似乎没有任何效果。会继续看的。啊啊啊啊啊!!!我现在要哭一会儿,然后再去把它修好。非常感谢。哈哈,酷。祝你的应用程序好运。干杯!:)