andymswick / expo
Laravel notification driver for Expo Push Notifications.
Requires
- php: >=7.2
- guzzlehttp/guzzle: ^6.3
- illuminate/notifications: ~5.5 || ~6.0
- illuminate/support: ~5.5 || ~6.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-11-04 06:10:48 UTC
README
This package makes it easy to send push notifications to your Expo app with Laravel 5.5+ and 6.0.
For more information on how to set up push notifications from within your Expo app, please refer to their documentation on push notifications.
Contents
Installation
You can install this package via composer using this command:
composer require "laravel-notification-channels/expo"
The package will automatically register itself.
You can publish the optional migration with:
php artisan vendor:publish --provider="NotificationChannels\Expo\ExpoServiceProvider" --tag="migrations"
After the migration has been published you can add the push_token
the users table by running the migrations:
php artisan migrate
You can publish the optional config-file with:
php artisan vendor:publish --provider="NotificationChannels\Expo\ExpoServiceProvider" --tag="config"
This is the contents of the published config file:
return [ /* * The attribute on the notifiable that will be accessed by default for the `to` method. */ 'token' => env('EXPO_PUSH_TOKEN', 'push_token'), ];
Usage
If a notification supports being sent as a Expo push notification, you should define a toExpo
method on the notification class. This method will receive a $notifiable
entity and should return a NotificationChannels\Expo\ExpoMessage
instance. Expo messages may contain a title and body as well as "jsonData" that adds additional data that is sent to the Expo app. Let's take a look at a basic toExpo
example:
// ... use NotificationChannels\Expo\ExpoChannel; use NotificationChannels\Expo\ExpoMessage; class CheckInTime extends Notification { // ... public function via($notifiable) { return [ExpoChannel::class]; } public function toExpo($notifiable) { return (new ExpoMessage) ->title("It's time to check in!") ->body('Check in now for us to print your name badge') ->setJsonData(['screen' => 'CheckIn']); } }
A to
method is required if the notifiable does not have a token
value set in config/expo.php
. You can optionally publish this config as well as a migration that will add a push_token
to the users
table after remember_token
.
Below is an example of using the to
method, if you would rather not use the config or migration.
// ... use NotificationChannels\Expo\ExpoChannel; use NotificationChannels\Expo\ExpoMessage; class CheckInTime extends Notification { // ... public function via($notifiable) { return [ExpoChannel::class]; } public function toExpo($notifiable) { return (new ExpoMessage) ->to('ExponentPushToken[**********************]') ->title("It's time to check in!") ->body('Check in now for us to print your name badge') ->setJsonData(['screen' => 'CheckIn']); } }
Available Message methods
to(string)
: Set the recipient of the message. This will default to the notifiable'spush_token
attribute.title(string)
: Set the title of the message.body(string)
: Set the body of the message.enableSound()
: Enable the default sound to be played.disableSound()
: Disable the default sound to be played.badge(int)
: Set the badge to the int value. (iOS only)setTtl(int)
: Set the time to live value. (iOS only)setChanelId(int)
: Set the chanelId of the notification. (Android only)setJsonData(array|string)
: Set the extra data of the notification, can be passed an array or a json string.toArray()
: Converts the message to an array.
Changelog
Please see CHANGELOG for more information what has changed recently.
Testing
$ composer test
Security
If you discover any security related issues, please email andymswick@gmail.com instead of using the issue tracker.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see License File for more information.