Pusher push notifications channel for Laravel 5.3.* | 5.4.* | 5.5.*
, (*1)
This package makes it easy to send Pusher push notifications with Laravel 5.3.* | 5.4.* | 5.5.* | 6.0.*, (*2)
Contents
Installation
You can install the package via composer:, (*3)
``` bash
composer require larasoft-io/pusher-mobile-notifications, (*4)
You must install the service provider:
```php
// config/app.php
'providers' => [
...
Larasoft\PusherPushNotifications\PusherPushNotificationsServiceProvider::class,
],
Setting up your Pusher account
Before using this package you should set up a Pusher account. Here are the steps required., (*5)
- Login to https://dashboard.pusher.com/
- Select your app from the sidebar or create a new app.
- Click on the "Push Notifications" tab.
- Upload your APNS Certificate or add your GCM API key.
- Now select the "App Keys" tab.
- Copy your
app_id, key, and secret.
- Update the values in your
config/broadcasting.php file under the pusher connection.
- You're now good to go.
Usage
Now you can use the channel in your via() method inside the Notification class., (*6)
``` php
use Larasoft\PusherPushNotifications\PusherChannel;
use Larasoft\PusherPushNotifications\PusherMessage;
use Illuminate\Notifications\Notification;, (*7)
class AccountApproved extends Notification
{
public function via($notifiable)
{
return [PusherChannel::class];
}, (*8)
public function toPushNotification($notifiable)
{
return PusherMessage::create()
->iOS()
->badge(1)
->sound('success')
->body("Your {$notifiable->service} account was approved!");
}
}, (*9)
### Available Message methods
- `platform('')`: Accepts a string value of `iOS` or `Android`.
- `iOS()`: Sets the platform value to iOS.
- `android()`: Sets the platform value to Android.
- `title('')`: Accepts a string value for the title.
- `body('')`: Accepts a string value for the body.
- `sound('')`: Accepts a string value for the notification sound file. Notice that if you leave blank the default sound value will be `default`.
- `icon('')`: Accepts a string value for the icon file. (Android Only)
- `badge(1)`: Accepts an integer value for the badge. (iOS Only)
- `setOption($key, $value)`: Allows you to set any value in the message payload. For more information [check here for iOS](https://pusher.com/docs/push_notifications/ios/server), [or here for Android](https://pusher.com/docs/push_notifications/android/server).
### Sending to multiple platforms
You can send a single message to an iOS device and an Android device at the same time using the `withiOS()` and `withAndroid()` method:
```php
public function toPushNotification($notifiable)
{
$message = "Your {$notifiable->service} account was approved!";
return PusherMessage::create()
->iOS()
->badge(1)
->body($message)
->withAndroid(
PusherMessage::create()
->title($message)
->icon('icon')
);
}
- Notice that iOS is the default platform, which means you don't have to call
->iOS().
- When using
withAndroid() or withiOS() you don't have to define the platform, it's done behind the scenes for you.
Routing a message
By default the pusher "interest" messages will be sent to will be defined using the {notifiable}.{id} convention, for example App.User.1, however you can change this behaviour by including a routeNotificationForPusherPushNotifications() in the notifiable class method that returns the interest name., (*10)
Changelog
Please see CHANGELOG for more information what has changed recently., (*11)
Testing
bash
$ composer test, (*12)
Security
If you discover any security related issues, please email themsaid@gmail.com instead of using the issue tracker., (*13)
Contributing
Please see CONTRIBUTING for details., (*14)
Credits
License
The MIT License (MIT). Please see License File for more information., (*15)