| Recommend this page to a friend! | 
| Info | Documentation | Reputation | Support forum | Blog | Links | 
| Ratings | Unique User Downloads | Download Rankings | ||||
| Total: 167 | All time:  8,889 This week: 524 | |||||
| Version | License | PHP version | Categories | |||
| ionic-push-php 1.1.18 | Custom (specified... | 5.1 | PHP 5, Wireless and Mobile, Libraries, W... | 
| Description | Authors Tomas Lopez Contributor  | ||||||||
This class can send push notifications using Ionic cloud API.  | 
  | 
ionic-push-php is a library that allows you to consume the Ionic Cloud API for sending push notifications (normal and scheduled), get a paginated list of sending push notifications, get information of registered devices, remove registered devices by token, ...
Ionic official documentation: Ionic HTTP API - Push.
composer require tomloprod/ionic-push-php
First, make sure you have your $ionicAPIToken and your $ionicProfile:
> More information here.
If you don't know how to configure your ionic app, you can take a look here: Setup Ionic Push
This library could throw:
echo $e;
echo $e->prettify();
echo $e->getCode();
echo $e->getMessage();
echo $e->getType();
echo $e->getLink();
First, instance an object as follow:
use Tomloprod\IonicApi\Push,
    Tomloprod\IonicApi\Exception\RequestException;
$ionicPushApi = new Push($ionicProfile, $ionicAPIToken);
Then you can interact (list, remove, create, ...) with device tokens, messages and notifications.
Remember that all the interactions returns an ApiResponse object instance, except __notifications->deleteAll__ that returns an array of ApiResponses.
1) List tokens:
try {
  $response = $ionicPushApi->deviceTokens->paginatedList([
      // Determines whether to include invalidated tokens (boolean)
      'show_invalid' => 1,
      // Only display tokens associated with the User ID (string)
      'user_id' => $desiredUserId,
      // Sets the number of items to return per page (integer)
      'page_size' => 4,
      // Sets the page number (integer)
      'page' => 1
  ]);
  foreach($response->data as $deviceToken){        
      print_r($deviceToken);
  }
} catch(RequestException $e) {
  echo $e;
}
2) List users associated with a device token:
try {
  $response = $ionicPushApi->deviceTokens->listAssociatedUsers($desiredDeviceToken, [
      // Sets the number of items to return per page (integer)
      'page_size' => 1,
      // Sets the page number (integer)
      'page' => 1,
  ]);
  // Do what you want with $response->data
} catch(RequestException $e) {
  echo $e;
}
3) Associate a user with a device token:
try {
  $deviceToken = "c686...";
  $userId = "a99ee...";
  $ionicPushApi->deviceTokens->associateUser($deviceToken, $userId);
  // The user has been associated.
} catch(RequestException $e) {
  echo $e;
}
4) Dissociate a user with a device token:
try {
  $deviceToken = "c686...";
  $userId = "a99ee...";
  $ionicPushApi->deviceTokens->dissociateUser($deviceToken, $userId);
  // The user has been dissociated.
} catch(RequestException $e) {
  echo $e;
}
5) Create device token that was previously generated by a device platform:
try {
  $response = $ionicPushApi->deviceTokens->create([
      // Device token (string)
      'token' => $newToken,
      // User ID. Associate the token with the User (string)
      'user_id' => $uuid
  ]);
  // Do what you want with $response->data
} catch(RequestException $e) {
  echo $e;
}
6) Retrieve device information related to the device token:
try {
  $response = $ionicPushApi->deviceTokens->retrieve($desiredDeviceToken);
  // Do what you want with $response->data
} catch(RequestException $e) {
  echo $e;
}
5) Update an specific token:
try {
  $isValid = true; // Determines whether the device token is valid (boolean)
  $ionicPushApi->deviceTokens->update($desiredDeviceToken, ['valid' => $isValid]);
  // The device token has been updated.
} catch(RequestException $e) {
  echo $e;
}
6) Delete a device related to the device token:
try {
  $ionicPushApi->deviceTokens->delete($desiredDeviceToken);
  // The device token has been deleted.
} catch(RequestException $e) {
  echo $e;
}
1) Retrieve specific message:
try {
  $response = $ionicPushApi->messages->retrieve($desiredMessageId);
  // Do what you want with $response->data
} catch(RequestException $e) {
  echo $e;
}
2) Delete a message:
try {
  $ionicPushApi->messages->delete($desiredMessageId);
  // The message has been deleted.
} catch(RequestException $e) {
  echo $e;
}
1) List notifications:
try {
  $response = $ionicPushApi->notifications->paginatedList([
      // Sets the number of items to return per page (integer)
      'page_size' => 1,
      // Sets the page number (integer)
      'page' => 1,
      // You can also pass other fields like "message_total" or "overview" (string[])
      'fields' => [
          // Total number of messages tied to each notification.
          'message_total',
          // Get an overview of messages delivered and failed for each notification.
          'overview'
      ]
  ]);
  // Do what you want with $response->data
} catch(RequestException $e) {
  echo $e;
}
2) Retrieve specific notification:
try {
  $response = $ionicPushApi->notifications->retrieve($desiredNotificationId);
  // Do what you want with $response->data
} catch(RequestException $e) {
  echo $e;
}
3) Delete a notification:
try {
  $ionicPushApi->notifications->delete($desiredNotificationId);
  // Notification has been deleted.
} catch(RequestException $e) {
  echo $e;
}
4) Delete all notifications:
try {
?
  $responses = $ionicPushApi->notifications->deleteAll();
  // Notifications have been deleted.
} catch(RequestException $e) {
  echo $e;
}
5) List messages of a notification:
try {
  $response = $ionicPushApi->notifications->listMessages($desiredNotificationId, [
      // Sets the number of items to return per page (integer)
      'page_size' => 1,
      // Sets the page number (integer)
      'page' => 1
  ])
  // Do what you want with $response->data
} catch(RequestException $e) {
  echo $e;
}
6) Send notifications:
/
* ANDROID [OPTIONAL] CONFIG PARAMETERS
*/
// Filename of the Icon to display with the notification (string)
$icon = "icon";
// Filename or URI of an image file to display with the notification (string)
$image = "image";
// Indicates whether each notification message results in a new entry on the notification center on Android.
// If not set, each request creates a new notification.
// If set, and a notification with the same tag is already being shown, the new notification replaces the existing one in notification center.
$tag = "yourTagIfYouNeedIt";
// When this parameter is set to true, it indicates that the message should not be sent until the device becomes active. (boolean)
$delayWhileIdle = false;
// Identifies a group of messages that can be collapsed, so that only the last message gets sent when delivery can be resumed. (string)
$collapseKey = "group1";
/
* IOS [OPTIONAL] CONFIG PARAMETERS
*/
// Message Priority. A value of 10 will cause APNS to attempt immediate delivery.
// A value of 5 will attempt a delivery which is convenient for battery life. (integer)
$priority = 10;
// The number to display as the badge of the app icon (integer)
$badge = 1;
// Alert Title, only applicable for iWatch devices
$iWatchTitle = "Hi!";
// Assign the previously defined configuration parameters to each platform, as well as the title and message:
$notificationConfig = [
    'title' => 'Your notification title',
    'message' => 'Your notification message. Bla, bla, bla, bla.',
    'android' => [
        'tag' => $tag,
        'icon' => $icon,
        'image' => $image,
        'delay_while_idle' => $delayWhileIdle,
        'collapse_key' => $collapseKey
    ],
    'ios' => [
        'priority' => $priority,
        'badge' => $badge,
        'title' => $iWatchTitle
    ]
];
// [OPTIONAL] You can also pass custom data to the notification. Default => []
$notificationPayload = [
    'myCustomField' => 'This is the content of my customField',
    'anotherCustomField' => 'More custom content'
];
// [OPTIONAL] And define, if you need it, a silent notification. Default => false
$silent = true;
// [OPTIONAL] Or/and even a scheduled notification for an indicated datetime. Default => ''
$scheduled = '2016-12-10 10:30:10';
// [OPTIONAL] Filename of audio file to play when a notification is received. Setting this to default will use the default device notification sound. Default => 'default'
$sound = 'default';
// Configure notification:
$ionicPushApi->notifications->setConfig($notificationConfig, $notificationPayload, $silent, $scheduled, $sound);
try {
  // Send notification...
  $response = $ionicPushApi->notifications->sendNotificationToAll(); // ...to all registered devices
  // or
  $response = $ionicPushApi->notifications->sendNotification([$desiredToken1, $desiredToken2, $desiredToken3]); // ...to some devices
  // Do what you want with $response->data
} catch(RequestException $e) {
  echo $e;
}
7) Replace existing notification with new config:
// Identifier of the notification we want to replace.
$notificationToReplace = "a86feewx...";
/
* ANDROID [OPTIONAL] CONFIG PARAMETERS
*/
// Filename of the Icon to display with the new notification (string)
$icon = "icon";
// Filename or URI of an image file to display with the new notification (string)
$image = "image";
// Indicates whether each notification message results in a new entry on the notification center on Android.
// If not set, each request creates a new notification.
// If set, and a notification with the same tag is already being shown, the new notification replaces the existing one in notification center.
$tag = "yourTagIfYouNeedIt";
// When this parameter is set to true, it indicates that the message should not be sent until the device becomes active. (boolean)
$delayWhileIdle = false;
// Identifies a group of messages that can be collapsed, so that only the last message gets sent when delivery can be resumed. (string)
$collapseKey = "group1";
/
* IOS [OPTIONAL] CONFIG PARAMETERS
*/
// Message Priority. A value of 10 will cause APNS to attempt immediate delivery.
// A value of 5 will attempt a delivery which is convenient for battery life. (integer)
$priority = 10;
// The number to display as the badge of the app icon (integer)
$badge = 1;
// Alert Title, only applicable for iWatch devices
$iWatchTitle = "Hi!";
// Assign the previously defined configuration parameters to each platform, as well as the title and message:
$notificationConfig = [
    'title' => 'Your notification title',
    'message' => 'Your notification message. Bla, bla, bla, bla.',
    'android' => [
        'tag' => $tag,
        'icon' => $icon,
        'image' => $image,
        'delay_while_idle' => $delayWhileIdle,
        'collapse_key' => $collapseKey
    ],
    'ios' => [
        'priority' => $priority,
        'badge' => $badge,
        'title' => $iWatchTitle
    ]
];
// [OPTIONAL] You can also pass custom data to the new notification. Default => []
$notificationPayload = [
    'myCustomField' => 'This is the content of my customField',
    'anotherCustomField' => 'More custom content'
];
// [OPTIONAL] And define, if you need it, a silent notification. Default => false
$silent = true;
// [OPTIONAL] Or/and even a scheduled notification for an indicated datetime. Default => ''
$scheduled = '2016-12-10 10:30:10';
// [OPTIONAL] Filename of audio file to play when a notification is received. Setting this to default will use the default device notification sound. Default => 'default'
$sound = 'default';
// Configure new notification:
$ionicPushApi->notifications->setConfig($notificationConfig, $notificationPayload, $silent, $scheduled, $sound);
try {
  // Replace notification with new configuration
  $response = $ionicPushApi->notifications->replace($notificationToReplace);
  // Do what you want with $response->data
} catch(RequestException $e) {
  echo $e;
}
| File | Role | Description | ||
|---|---|---|---|---|
| Data | Auxiliary data | |||
| Data | Auxiliary data | |||
| Lic. | License text | |||
| Data | Auxiliary data | |||
| Doc. | Documentation | |||
| / | examples | 
| File | Role | Description | 
|---|---|---|
|    | 
Example | Example script | 
|    | 
Example | Example script | 
| / | src | / | Api | 
| File | Role | Description | 
|---|---|---|
|    | 
Class | Class source | 
|    | 
Class | Class source | 
|    | 
Class | Class source | 
|    | 
Class | Class source | 
| The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page. | 
| Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
| 100% | 
  | 
  | 
| User Ratings | User Comments (1) | ||||||||||||||||||||||||||||||||||
  | 
  | ||||||||||||||||||||||||||||||||||
| Applications that use this package | 
 If you know an application of this package, send a message to the author to add a link here.