Recommend this page to a friend! |
Download .zip |
Info | Documentation | View files (13) | Download .zip | Reputation | Support forum (1) | Blog | Links |
Ratings | Unique User Downloads | Download Rankings | ||||
58% | Total: 167 | All time: 8,881 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;
}
Files |
File | Role | Description | ||
---|---|---|---|---|
examples (2 files) | ||||
src (1 file, 2 directories) | ||||
CHANGELOG.md | Data | Auxiliary data | ||
composer.json | Data | Auxiliary data | ||
LICENSE.md | Lic. | License text | ||
package.json | Data | Auxiliary data | ||
README.md | Doc. | Documentation |
Files | / | examples |
File | Role | Description |
---|---|---|
device-tokens-examples.php | Example | Example script |
notifications-examples.php | Example | Example script |
Files | / | src | / | Api |
File | Role | Description |
---|---|---|
DeviceTokens.php | Class | Class source |
Messages.php | Class | Class source |
Notifications.php | Class | Class source |
Request.php | Class | Class source |
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.