2017 © Pedro Peláez
 

library push

Push Notifications Laravel 5 package

image

origami/push

Push Notifications Laravel 5 package

  • Friday, July 13, 2018
  • by papertank
  • Repository
  • 1 Watchers
  • 5 Stars
  • 778 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 11 Versions
  • 18 % Grown

The README.md

Origami Push - Laravel Push Notifications

This package adds a push notification channel for notifications in Laravel 6 or greater projects., (*1)

For more on notification channels, visit https://laravel.com/docs/8.x/notifications, (*2)

Installation

Install this package through Composer., (*3)

composer require origami/push

Requirements

This package is designed to work with Laravel >= 6., (*4)

Configuration

There are some API configuration options that you’ll want to overwrite. First, publish the default configuration., (*5)

php artisan vendor:publish --provider="Origami\Api\ApiServiceProvider"

This will add a new configuration file to: config/push.php., (*6)

APNs

Version 4+ of this package uses edamov/pushok for the APNs transport and logic. You should add the following to your .env file to setup the required config, or see the edamov/pushok readme for Certificate (.pem) options., (*7)

The default private key location is storage/certificates/apns.p8, (*8)

PUSH_APNS_ENV=production
PUSH_APNS_KEY_ID=
PUSH_APNS_TEAM_ID=
PUSH_APNS_APP_BUNDLE=
PUSH_APNS_PRIVATE_KEY=
PUSH_APNS_PRIVATE_KEY_SECRET=

FCM

Version 5 of this package uses the FCM HTTP v1 API and the origami/google-auth package to get oAuth tokens from service account credentials., (*9)

First set the project ID from your Firebase console:, (*10)

PUSH_FCM_PROJECT="your-app-123abc"

Then generate and download your service account JSON file to generate oAuth access tokens., (*11)

  1. In the Firebase console, open Settings > Service Accounts.
  2. Click Generate New Private Key, then confirm by clicking Generate Key.
  3. Securely store the JSON file containing the key at: storage/app/google-auth/service-account-credentials.json

If you want to change the loaded path you can set the GOOGLE_AUTH_SERVICE_CREDENTIALS environment variable, or to change other settings you can publish the google-auth config: php artisan vendor:publish --provider="Origami\GoogleAuth\GoogleAuthServiceProvider", (*12)

Usage

Device Eloquent Model

You will most likely be storing devices in your database using an Eloquent model, e.g. App\Device., (*13)

To have that work with this package, you just need to make sure it implements the Origami\Push\Contracts\Device interface., (*14)

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 or fcm for Firebase Cloud Messaging - and the device identifier., (*15)

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;
}

User Notifiable Devices

In a Laravel project, you're most likely to send a push notification to your users. See the Laravel Docs for more information., (*16)

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., (*17)

public function routeNotificationForPush()
{
    $devices = $this->devices()->get();
    return $devices ? $devices->all() : [];
}

Examples

Notification Class

<?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)
                    ->setTitle('New User')
                    ->setBody($this->user->name . ' just joined')
                    ->setMeta([
                        'event' => 'NewUser',
                        'user' => $this->user->id
                    ]);
    }

}

Standalone

<?php

$device = new Origami\Push\Device('apns', '12346...');

$push = (new Origami\Push\PushNotification)
        ->setBody('Testing, testing, 1, 2, 3.');

app('Origami\Push\PushManager')
        ->driver($device->getPushService())
        ->send($device, $push);

Versions

  • v5.* - Version 5 is a breaking change that updates the config and drivers for fcm to use the new HTTP v1 API and service account credentials / oAuth.
  • v4.* - Version 4 is a breaking change that updates the config and drivers for apns and fcm.
  • v3.* - Version 3 bumps the Laravel support to include 6, 7 and 8 projects. Laravel 5.x dropped.
  • v2.* - Version 2 is a rewrite of the package to work with Laravel 5.3 notifications or standalone
  • v1.-* - Version 1 did not integrate with the notifications service of Laravel

Author

Papertank Limited, (*18)

License

View the license, (*19)

The Versions

13/07 2018

dev-master

9999999-dev

Push Notifications Laravel 5 package

  Sources   Download

MIT

The Requires

 

by Avatar papertank

13/07 2018

2.0.4

2.0.4.0

Push Notifications Laravel 5 package

  Sources   Download

MIT

The Requires

 

by Avatar papertank

13/07 2018

2.0.5

2.0.5.0

Push Notifications Laravel 5 package

  Sources   Download

MIT

The Requires

 

by Avatar papertank

05/07 2018

2.0.3

2.0.3.0

Push Notifications Laravel 5 package

  Sources   Download

MIT

The Requires

 

by Avatar papertank

16/02 2017

2.0.2

2.0.2.0

Push Notifications Laravel 5 package

  Sources   Download

MIT

The Requires

 

by Avatar papertank

14/02 2017

2.0.1

2.0.1.0

Push Notifications Laravel 5 package

  Sources   Download

MIT

The Requires

 

by Avatar papertank

02/02 2017

2.0.0

2.0.0.0

Push Notifications Laravel 5 package

  Sources   Download

MIT

The Requires

 

by Avatar papertank

30/11 2016

1.0.3

1.0.3.0

Push Notifications Laravel 5 package

  Sources   Download

MIT

The Requires

 

by Avatar papertank

16/08 2016

1.0.2

1.0.2.0

Push Notifications Laravel 5 package

  Sources   Download

MIT

The Requires

 

by Avatar papertank

02/08 2015

1.0.1

1.0.1.0

Push Notifications Laravel 5 package

  Sources   Download

MIT

The Requires

 

by Avatar papertank

02/08 2015

1.0.0

1.0.0.0

Push Notifications Laravel 5 package

  Sources   Download

MIT

The Requires

 

by Avatar papertank