PHPackages                             origami/push - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. origami/push

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

origami/push
============

Push Notifications Laravel package

6.1.0(4mo ago)65.6kMITPHPPHP ^8.2

Since Aug 2Pushed 4mo ago1 watchersCompare

[ Source](https://github.com/papertank/origami-push)[ Packagist](https://packagist.org/packages/origami/push)[ RSS](/packages/origami-push/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (8)Versions (31)Used By (0)

Origami Push - Laravel Push Notifications
=========================================

[](#origami-push---laravel-push-notifications)

This package adds a push notification channel for notifications in Laravel 6 or greater projects.

For more on notification channels, visit

Installation
------------

[](#installation)

Install this package through Composer.

```
composer require origami/push

```

Requirements
------------

[](#requirements)

This package is designed to work with Laravel &gt;= 6.

Configuration
-------------

[](#configuration)

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`.

### APNs

[](#apns)

Version 4+ of this package uses [edamov/pushok](https://github.com/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.

The default private key location is `storage/certificates/apns.p8`

```
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

[](#fcm)

Version 5 of this package uses the [FCM HTTP v1 API](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages/send) and the [origami/google-auth](https://github.com/papertank/origami-google-auth) package to get oAuth tokens from service account credentials.

First set the project ID from your Firebase console:

```
PUSH_FCM_PROJECT="your-app-123abc"

```

Then generate and download your service account JSON file to generate oAuth access tokens.

1. In the Firebase console, open Settings &gt; 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"`

Usage
-----

[](#usage)

### Device Eloquent Model

[](#device-eloquent-model)

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

### User Notifiable Devices

[](#user-notifiable-devices)

In a Laravel project, you're most likely to send a push notification to your users. See the [Laravel Docs](https://laravel.com/docs/8.x/notifications) 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() : [];
}
```

Examples
--------

[](#examples)

### Notification Class

[](#notification-class)

```
