Package Data | |
---|---|
Maintainer Username: | papertank |
Maintainer Contact: | hello@papertank.com (Papertank Limited) |
Package Create Date: | 2015-08-02 |
Package Last Update: | 2024-10-18 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-18 03:05:14 |
Package Statistics | |
---|---|
Total Downloads: | 4,099 |
Monthly Downloads: | 71 |
Daily Downloads: | 0 |
Total Stars: | 6 |
Total Watchers: | 2 |
Total Forks: | 0 |
Total Open Issues: | 0 |
This package adds a push notification channel for notifications in Laravel 5.3 or greater projects.
For more on notification channels, visit https://laravel.com/docs/5.3/notifications
Install this package through Composer.
composer require origami/push
This package is designed to work with Laravel >= 5.3 currently.
As standard, there is a Laravel 5 is a service provider you can make use of to automatically prepare the bindings.
// app/config/app.php
‘providers’ => [
...
Origami\Api\ApiServiceProvider::class
];
There are some API configuration options that you’ll want to overwrite. First, publish the default configuration.
php artisan vendor:publish --provider="Origami\Api\ApiServiceProvider"
This will add a new configuration file to: config/push.php
.
You will most likely be storing devices in your database using an Eloquent model, e.g. App\Device
.
To have that work with this package, you just need to make sure it implements the Origami\Push\Contracts\Device
interface.
namespace App;
use Origami\Push\Contracts\Device as PushDevice;
class Device extends Model implements PushDevice {
}
Next, you need to add two methods to get the service - either apns
for iOS, gcm
for Google Cloud Messaging or fcm
for Firebase Cloud Messaging - and the device identifier.
public function getPushService()
{
switch ( $this->make ) {
case 'apple':
case 'ios':
case 'iphone':
return 'apns';
break;
case 'android':
return 'fcm';
break;
default:
throw new \Exception('Unable to determine push service for ' . $this->make);
}
}
public function getPushToken()
{
return $this->device_token;
}
In Laravel 5.3, you're most likely to send a push notification to your users. See the Laravel Docs for more information.
To get your User's devices, assuming you are using an Eloquent model above, you would just add a routeNotificationForPush
method to your Eloquent model.
public function routeNotificationForPush()
{
$devices = $this->devices()->get();
return $devices ? $devices->all() : [];
}
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Origami\Push\PushNotification;
class UserJoined extends Notification implements ShouldQueue
{
use Queueable;
public function __construct($user)
{
$this->user = $user;
}
public function via($notifiable)
{
return ['push'];
}
public function toPush($notifiable)
{
return (new PushNotification)
->message($this->user->name . ' just joined')
->meta([
'event' => 'NewUser',
'user' => $this->user->id
]);
}
}
<?php
$device = new Origami\Push\Device('apns', '12346...');
$push = (new Origami\Push\PushNotification)
->message('Testing, testing, 1, 2, 3.');
app('Origami\Push\PushManager')
->driver($device->getPushService())
->send($device, $push);