0

Итак, у меня есть приложение. Это приложение, отправить Push Notification, используя этот PHP код:Отправить Push-уведомления всем пользователям

<?php 

$deviceToken = '4bc9b8e71b9......235095a22d'; 

// Put your private key's passphrase here: 
$passphrase = '12345'; 

// Put your alert message here: 
$message = 'My Message Here!'; 

//////////////////////////////////////////////////////////////////////////////// 

$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); 
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 

// Open a connection to the APNS server 
$fp = stream_socket_client(
     'ssl://gateway.sandbox.push.apple.com:2195', $err, 
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

if (!$fp) 
    exit("Failed to connect: $err $errstr" . PHP_EOL); 

echo 'Connected to APNS' . PHP_EOL; 

// Create the payload body 
$body['aps'] = array(
'alert' => $message, 
'sound' => 'default' 
); 

// Encode the payload as JSON 
$payload = json_encode($body); 

// Build the binary notification 
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) .     $payload; 

// Send it to the server 
$result = fwrite($fp, $msg, strlen($msg)); 

if (!$result) 
echo 'Message not delivered' . PHP_EOL; 
else 
echo 'Message successfully delivered' . PHP_EOL; 

// Close the connection to the server 
fclose($fp); 

Мой вопрос: Если у меня есть более чем один пользователей в мое приложение, и я бегу этот PHP-код в терминале, то Push уведомление будет посылать только к этому устройству (4bc9b8e71b9 ...), или он будет отправлен всем моим пользователям? Если это будет отправлено только на это устройство, как я могу отправить Push всем моим пользователям?

PS: Я следовал за this учебником, и это сработало, за исключением того, что я не знаю, будет ли Push отправляться всем моим пользователям.

Извините за плохой английский, и спасибо большое !!

+0

Вам нужно, чтобы ваше приложение отправило токен устройства APNs, он возвращается на ваш сервер. – onnoweb

+0

Извините, я впервые использовал Push-уведомления. Не могли бы вы объяснить это лучше? Благодаря!! –

+0

Знаете ли вы какой-то учебник для чего я хочу? –

ответ

2

Обычный подход должен хранить маркеры в базе данных и, как только вам нужно отправить их - просто выберите токены из БД и прокручивать их.

код может выглядеть, что

$pdo = new PDO(
    "mysql:host=$db_host;port=$db_port;dbname=$db_name", 
    $db_user, 
    $db_pass 
); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
$select_tokens_sql = 'SELECT * FROM tokens'; 
$select_tokens_statement = $pdo->prepare($select_tokens_sql); 

// Open a connection to the APNS server 
$fp = stream_socket_client(
    'ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

if (!$fp) 
    exit("Failed to connect: $err $errstr" . PHP_EOL); 

echo 'Connected to APNS' . PHP_EOL; 

// Create the payload body 
$body['aps'] = array(
    'alert' => $message, 
    'sound' => 'default' 
); 

// Encode the payload as JSON 
$payload = json_encode($body); 

$select_tokens_statement->execute(); 
$tokens = $select_tokens_statement->fetchAll(); 
//loop through the tokens 
foreach($tokens as $token) {  

    // Build the binary notification 
    $msg = chr(0) . pack('n', 32) . pack('H*', $token) . pack('n', strlen($payload)) . $payload; 

    // Send it to the server 
    $result = fwrite($fp, $msg, strlen($msg)); 

    if (!$result) 
     echo 'Message to the device ' . $token . ' not delivered' . PHP_EOL; 
    else 
     echo 'Message to the device ' . $token . ' successfully delivered' . PHP_EOL; 
} 
// Close the connection to the server 
fclose($fp); 

Он также может быть хорошей идеей, чтобы слушать яблочную службу обратной связи только после того, как вы закончили отправку уведомления толчка. Он скажет вам, есть ли на некоторых устройствах ваше приложение больше нет, поэтому вы можете безопасно удалить соответствующие токены из базы данных.

+1

Правильно ли это код, если я должен отправить push-уведомление на 10 миллионов устройств? – Satyam

+0

@ Satyam вы нашли код? – Darpan

1

Вам придется перебрать все ваши лексемы устройства и записывать их в шлюз с FWRITE()

+1

Итак, мне нужно добавить каждый токен устройства в базы данных и в php-коде, я сделаю цикл, отправив сообщение на каждое устройство? –

+0

Да, так вы должны это делать. – Mark

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