这是我发送通知的代码:
$msg = array
(
"title" => "Portugal vs. Denmark",
"message" => "5 to 1"
);
$fields = array (
"to" => $deviceToken,
"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 );
我收到"5 to 1"
消息但未显示标题"Portugal vs. Denmark"
。
有没有人有想法?
在data
字段中,我尝试alert
,subtitle
并且他们没有改变任何内容。
感谢' S
修改
我有通知的屏幕截图
答案 0 :(得分:0)
尝试将以下json作为paylod发送。如果它工作,问题可能在array()函数上。它应该创建一个字典,而不是我相信的数组
{
"data": {
"score": "5x1",
"title" : "portugal vs Denmark",
"message":"5 to 1"
},
"to": "YOUR DEVICE TOKEN",
}
编辑:
查看此伪代码,并与您的代码进行比较。您必须从推送通知中的捆绑数据中获取字段。
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("message");
String title = data.getString("title");
String score = data.getString("score");
///...
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_stat_ic_notification)
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
//....
}
答案 1 :(得分:0)
这是相当遥远的,但你可以改变消息'对于像myinfo' myinfo'或其他东西,然后在客户端提取它(进行必要的更改)。 我在思考'留言'可能会根据标准解释,其余部分将被忽略。
还尝试在Android工作室上显示内容,这样您就可以看到自己是否真正在客户端获得了标题。