Php 推送通知是;有时";未交付

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

我在我们的系统中面临一个奇怪的问题,推送通知(到iOS和Android)并非总是发送到移动设备,尽管我在发送这些消息时(从苹果和谷歌)得到了成功响应

后端是PHP。下面是我用来在iOS中发送推送通知的代码。它返回成功:例如156,但推送并不总是交付

同样对于iOS,是否有方法让我知道响应返回为0(失败)的原因

以下是一段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;