subit / php-expo-sdk
Expo SDK written in PHP
Installs: 5 675
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- ext-json: *
- guzzlehttp/guzzle: >=6.3
Requires (Dev)
- orchestra/testbench: ^3.8
- phpunit/phpunit: ^7.4
README
Server-side PHP library for working with Expo push notifications
Contents
Installation
You can install the package via composer:
composer require subit-io/expo-server-sdk-php
Usage (simple example)
Create an new Expo
SDK client
$expo = new Expo();
Create the ExpoMessage
you want to send to the client
$message = ExpoMessage::create()
->to('')
->title('')
...;
Then use the Expo->sendPushNotification()
method to send the ExpoMessage
$expo->sendPushNotification($message)
That's it! The notification has now been sent to the Expo servers.
Expo
methods
sendPushNotification(ExpoMessage) |
Sends an ExpoMessage |
---|---|
sendPushNotifications([ExpoMessage]) |
Sends multiple ExpoMessage |
getPushNotificationReceipt($ticketId) |
Get delivery status for Android/iOS services (not client device) |
getPushNotificationReceipts([$ticketId]) |
Get delivery status for Android/iOS services (not client devices) |
isValidTokenFormat($token) |
Check if an expo token is of a valid format |
isValidReceiptIdFormat($id) |
Check if a receipt id is of a valid format |
chunkPushNotifications() |
Chunk notifications into approved request batch sizes |
chunkPushNotificationReceiptIds |
Chunk notification receipt ids into approved request batch sizes |
ExpoMessage
options
Property | iOS/Android | Type | Description |
---|---|---|---|
to() |
both | string | An Expo push token specifying the recipient of this message |
jsonData() |
both | string | A JSON object delivered to your app. It may be up to 4KiB |
title() |
both | string | The title to display in the notification |
body() |
both | string | The message to display in the notification |
ttl() |
both | int | Seconds the message may be kept around for redelivery |
expiration() |
both | int | UNIX epoch timestamp. Same effect as ttl. ttl takes precedence |
priority() |
both | Priority | The delivery priority of the message |
subtitle() |
iOS | string | The subtitle to display in the notification below the title |
enableSound() |
iOS | Play a sound when the recipient receives this notification | |
disableSound() |
iOS | Play no sound (default) | |
badge() |
iOS | int | Number to display in the badge on the app icon |
channelId() |
Android | string | Channel through which to display this notification |
For a more detailed description, refer to the Expo documentation https://docs.expo.io/versions/latest/guides/push-notifications/#formats
To be implemented/reworked:
- Look into if requests should be run asynchronously
- Send request gzipped
- Make an ExpoMessage able to receive multiple tokens