Php 推送通知是;有时";未交付
我在我们的系统中面临一个奇怪的问题,推送通知(到iOS和Android)并非总是发送到移动设备,尽管我在发送这些消息时(从苹果和谷歌)得到了成功响应 后端是PHP。下面是我用来在iOS中发送推送通知的代码。它返回成功:例如156,但推送并不总是交付 同样对于iOS,是否有方法让我知道响应返回为0(失败)的原因 以下是一段Android代码:Php 推送通知是;有时";未交付,php,android,ios,push-notification,Php,Android,Ios,Push Notification,我在我们的系统中面临一个奇怪的问题,推送通知(到iOS和Android)并非总是发送到移动设备,尽管我在发送这些消息时(从苹果和谷歌)得到了成功响应 后端是PHP。下面是我用来在iOS中发送推送通知的代码。它返回成功:例如156,但推送并不总是交付 同样对于iOS,是否有方法让我知道响应返回为0(失败)的原因 以下是一段Android代码: $apiKey = ANDROID_PUSH_API_KEY; // Set POST variables $url = 'https://android
$apiKey = ANDROID_PUSH_API_KEY;
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registatoin_ids,
'data' => $message
);
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
return $result;
对于Android,我也收到了成功响应,但消息有时会发送到设备上,有时不会:
{“多播id”:5182490226054200549,“成功”:1,“失败”:0,“规范id”:0,“结果”:[{“消息id”:“0:1495238429549628%31ecb33bf9fd7ecd”}有效负载中包含多少数据?你能检查一下它的大小吗?如果它超过4KB,那么它就不会被传送到你的设备上了。同样,相同的文本(例如,新消息的通知)可以发送到同一设备一次,然后相同的消息不会通过第二或第三次timeso check device token发送到同一设备
$apiKey = ANDROID_PUSH_API_KEY;
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registatoin_ids,
'data' => $message
);
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
return $result;