Push notification via an array

Asked

Viewed 102 times

0

I’m having a problem sending push notification to multiple users at the same time, I have a sending page plus it’s sending only for a single token I’d 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);
}

2 answers

0

I am not an expert in PHP but apparently this logic is right. For you to make the shot for several, you will have to take the value of $deviceToken which is hardcoded and assigns it through variable. Then just play in a repeat block as it is already opening and closing the connection with the gateway correctly.

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

If you’re going to do this, make a callback too so you know if the push was fired or not.

One more thing, DON’T FORGET to change the value of the gateway address (which is also hardcoded), when putting into production, otherwise no notification will be triggered.

0

You need to send one notification at a time.

Loop the tokens and send them individually.

You can use this lib to facilitate apns-php

Browser other questions tagged

You are not signed in. Login or sign up in order to post.