【问题标题】:Android & Apple Push Notifcations安卓和苹果推送通知
【发布时间】:2015-03-07 19:51:23
【问题描述】:

我为推送通知设置了一个应用程序。 Android 代码运行良好,我收到推送通知。对于 Apple,手机只是振动并发出声音来推送通知,但我没有获得徽章或其他任何东西。

谁能告诉我哪里出错了?

<?php
// function to send Android push notification

function send_message($deviceToken, $message){
    $messageArr['message'] = "";
    if($message=="")
    {
         $messageArr['message'] = "Test data";
    }
    else
    {
             $messageArr['message'] = $message ;
    }
    $registatoin_ids = $deviceToken;
    return mer_send_notification($registatoin_ids, $messageArr);

}

function mer_curlPost($url, $headers, $fields) {
    $ch = curl_init();
    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_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
    $result = curl_exec($ch);
    if ($result === FALSE) {
        die('Curl failed: ' . curl_error($ch));
    }
    curl_close($ch);
    return $result;
}



function mer_send_notification($registatoin_ids, $message) {
$url = 'https://android.googleapis.com/gcm/send';
$apiKey = 'mykeyishere';
echo 'Test if 4\n';
$fields = array(
    'registration_ids' => $registatoin_ids,
    'data' => $message,
);
$headers = array(
    'Authorization: key=' . $apiKey,
    'Content-Type: application/json'
);
$result = mer_curlPost($url, $headers, $fields);
return $result;
}
function sendNotification($dataArr, $device_token_array) {

$apns_url = NULL;
$apns_cert = NULL;
$apns_port = 2195;
$development = false;
if ($development) {
    $apns_url = 'gateway.sandbox.push.apple.com';
        $apns_cert = 'devcert.pem';
} else {
    $apns_url = 'gateway.push.apple.com';
    $apns_cert = 'prodcert.pem';
}
$stream_context = stream_context_create();
stream_context_set_option($stream_context, 'ssl', 'local_cert', $apns_cert);
stream_context_set_option($stream_context, 'ssl', 'passphrase', 'mypassphrase');
$payload = array();
$payload['aps'] = $dataArr;
$payloadJson = json_encode($payload);
$apns = @stream_socket_client('ssl://' . $apns_url . ':' . $apns_port, $error, $error_string, 2, STREAM_CLIENT_CONNECT, $stream_context);

foreach ($device_token_array as $key => $device_token) {
    $apns_message = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $device_token)) . chr(0) . chr(strlen($payloadJson)) . $payloadJson;
    $xxx[] = @fwrite($apns, $apns_message);
}
$yyy = @socket_close($apns);
$zzz = @fclose($apns);
$arr = array();
$arr[] = $stream_context;
$arr[] = $apns;
$arr[] = $xxx;
$arr[] = $yyy;
$arr[] = $zzz;
return $arr;
}

【问题讨论】:

  • 检查您的 $dataArr 您要添加为您的有效负载..
  • Jitendra 我应该使用与安卓相同的 messageArr 吗?
  • 你需要创建你的有效载荷主体。传递你的消息和徽章..如果你想自定义声音然后添加你的自定义声音代替默认.. $payload['aps' ] = array( 'badge' => 1, 'alert' => $message, 'sound' => 'default' );
  • 我添加的 Jitendra 替换了 $payload['aps'] = $dataArr; 行with $payload['aps'] = array('badge' => 1, 'alert' => $dataArr, 'sound' => 'default' );我得到同样的东西 iphone 振动但没有徽章或消息

标签: ios iphone notifications push


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 2011-09-19
  • 2011-05-19
  • 2010-12-01
相关资源
最近更新 更多