Send push notifications through an array

0

I have a problem sending push notification to multiple users at the same time, I have a sending page plus it is sending only to a single token I would like to know how to get it to send to an array of registered tokens, follow the code.

<?php
$message = ucfirst($_POST['txtmensagem']);
if (!empty($message)){

  $deviceToken ='aa798429fa852e1d593c7c4d9360293da2b3c9704d044dd8a8fcd693e2260170';

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

// Put your alert message here:


$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');//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',
    'conteudo' => 'aqui o conteudo',
    'comando' => 'video',
    'badgecount' => '1'
    );

// 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);
}
    
asked by anonymous 17.11.2015 / 12:44

2 answers

0

You need to submit one notification at a time.

Loop with tokens and submit individually.

You can use this lib to facilitate apns-php

    
17.11.2015 / 13:39
0

I'm not an expert on PHP but apparently this logic is right. For you to do the multi-shot, you'll have to get the value of $deviceToken that is hardcoded and assign it through variable. Then just play on a replay block, as it is already opening and closing the connection to the gateway correctly.

A good idea is to encapsulate this in a function, passing the device token as an argument. So you can use this code in a loop to make the shot.

If you are going to do this yourself, make a callback to see if the push was triggered or not.

One more thing, DO NOT FORGET to change the value of the gateway address (which is also hardcoded), when it goes into production, otherwise no notification will be triggered.

    
18.11.2015 / 10:54