2015-03-07 3 views
1

У меня есть приложение для push-уведомления. Код Android работает отлично, и я получаю push-уведомление. Для Apple телефон просто вибрирует и делает звук для push-уведомлений, но я не получаю значок или что-то еще.Android & Apple Push Notifcations

Может кто-нибудь, пожалуйста, покажите мне, где я иду не так?

<?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; 
} 
+0

проверить ur $ dataArr, который вы добавляете в качестве полезной нагрузки ur .. – Jitendra

+0

Jitendra следует использовать одно и то же сообщениеArr, которое я использовал для andriod? – user3770745

+0

Вам нужно создать свой корпус полезной нагрузки, как это сделать. Поместить ваше сообщение и значок на нем .. и если вы хотите настроить звук, то добавьте ур пользовательский звук на место defalut .. $ payload ['aps'] = array ( ' badge '=> 1, ' alert '=> $ message, ' sound '=>' default ' ); – Jitendra

ответ

Смежные вопросы