Expo SDK written in PHP

v2.1.0 2021-09-29 12:48 UTC

This package is auto-updated.

Last update: 2022-07-29 02:37:13 UTC


Server-side PHP library for working with Expo push notifications

Latest Version on Packagist Software License Total Downloads




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()

Then use the Expo->sendPushNotification() method to send the ExpoMessage


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


To be implemented/reworked:

  • Look into if requests should be run asynchronously
  • Send request gzipped
  • Make an ExpoMessage able to receive multiple tokens