Android and iOS push notification library.
The notymo is a library which can help you to send push notifications on iOS and Andriod devices using single interface. The Library has no external dependencies., (*1)
The suggested installation method is via composer:, (*2)
$ composer require nstdio/notymo: "dev-master"
or add, (*3)
"nstdio/notymo": "dev-master"
to the require
section of your composer.json
file., (*4)
use nstdio\notymo\Message; use nstdio\notymo\PushNotification; $push = new PushNotification(array( // If you dоn't want to use one of the services we can just skip them loading. // It's obvious that the skipped service is not necessary to configure. // 'skipApns' => true, // 'skipGcm' => true, 'apns' => array( 'live' => true, // We need to connect to APNS production server 'cert' => 'live_cert.pem' // Also we must specify a SSL certificate for sending notification to iOS devices. ), 'gcm' => array( 'apiKey' => 'api_key' // Google GCM Service API key. ), ) ); /** * If we have multiple recipients and all of them should receive same data we can create * one single instance of Message class and send messages at once. */ $msg = Message::android(); $msg->setMessage("You have a notification."); $msg->setSound("default"); $msg->setBadge(2); $msg->setCustomData(array("user_data" => array())); $msg->setToken(range(0, 10000)); /** * Just clone original message and replace old device's tokens with new once for iOS devices. */ $msg2 = $msg->cloneWith(Message::TYPE_IOS, range(10000, 20000)); $push->enqueue($msg); $push->enqueue($msg2); // Adding messages to queue $push->send(); // Send notifications.
use nstdio\notymo\APNSNotification; use nstdio\notymo\Message; $apns = new APNSNotification(true, 'live_cert.pem'); $msg = Message::ios(); $msg->setMessage("This notification sent by cron."); $msg->setSound("bang_bang"); $msg->setCustomData(array("segue" => "toSignInView")); $msg->setToken(range(0, 10000)); // $apns->enqueue($msg); // Adding messages to queue $apns->send(); // Send notifications.
use nstdio\notymo\GCMNotification; use nstdio\notymo\Message; $gcm = new GCMNotification("gcm_api_key"); $msg = Message::ios(); // ... same story as in iOS example. $msg->setToken(range('A', 'Z')); $gcm->enqueue($msg); $gcm->send();
Method | Comment | Callback signature |
---|---|---|
void onComplete(Closure $callback) |
Will be called when all messages are sent. | void function(MessageQueue $messages) |
void onEachSent(Closure $callback) |
Will be called when the every message was sent. | void function(MessageInterface $message, array $response) |
void onError(Closure $callback) |
Will be called when error occurs. Note that when error occured and this callback is not defined, an exception will be thrown. | void function(MessageInterface $message, PushNotificationException $exc) |
void detach() |
This method has no Closure argument because it is not involved in the message sending lifecycle. The single assignment of this method to remove callbacks. Will be called immediately after onSent . |
- |
// ... $push->onComplete(function(MessageQueue $queue) { /** @var MessageInterface $message */ foreach ($queue as $message) { printf("Message %s not sent\n", $message->getToken()) } }); $push->onSent(function(MessageInterface $message, $response) use ($model) { $model->save(array( 'device_token' => $message->getToken(), 'is_sent' => $response['success'], )); }); $push->onError(function(MessageInterface $message, PushNotificationException $e) { printf("Error %s occurs while sending %s\n", $message->getToken(), $e->getMessage()); }); $push->send();