weelis/notification
最新稳定版本:v1.0.3
Composer 安装命令:
composer require weelis/notification
包简介
Weelis Notification Channel (APN, FCM, SMS, EMAIL)
README 文档
README
Weelis Notification Channel (APN, FCM, ESMS)
Use this package to send push notifications via Laravel to Firebase Cloud Messaging, APN, ESMS. Laravel 5.3+ required.
Install
This package can be installed through Composer.
composer require weelis/notification
Once installed, add the service provider:
// config/app.php 'providers' => [ ... Weelis\Notification\NotificationServiceProvider::class, ... ]; 'aliases' => [ ... 'NotificationHelper'=> \Weelis\Notification\Facade\NotificationHelper::class ... ]
Publish the config file:
php artisan vendor:publish --provider="Weelis\Notification\NotificationServiceProvider"
Register device
Using existing controller add this to your route
Route::group(['prefix' => 'device'], function () { Route::post('register', '\Weelis\Notification\Controller\DevicesController@registerDevice'); Route::post('unregister', '\Weelis\Notification\Controller\DevicesController@unregisterDevice'); });
Using notification database model & report
use Weelis\Notification\Base\Notifiable; use Weelis\Notification\Model\NotificationModel; class User extends Authenticatable { use Notifiable, NotificationModel; ... }
Using facade
$request => ['os' => 'required', // 'device' => 'required', 'type' => 'required', 'did' => 'required', 'scope' => 'required', // 'push_token' => 'required'] NotificationHelper::registerDevice($request);
Setting up the FCM service
The following config file will be published in config/notification.php. Add your Firebase API Key here.
Set up .env file
FCM_API_KEY=legacy key
OR
return [ /* * Add the Firebase API key */ 'fcm' => [ 'api_key' => '' ], ];
Example Usage
Use Artisan to create a notification:
php artisan make:notification SomeNotification
Return [fcm] in the public function via($notifiable) method of your notification:
public function via($notifiable) { return ['fcm']; }
Add the method public function toFcm($notifiable) to your notification, and return an instance of FcmMessage:
public function toFcm($notifiable) { $message = new Weelis\Notification\Fcm\FcmMessage(); $message->content([ 'title' => 'Foo', 'body' => 'Bar', 'sound' => '', // Optional 'icon' => '', // Optional 'click_action' => '' // Optional ])->data([ 'param1' => 'baz' // Optional ])->priority(Weelis\Notification\Fcm\FcmMessage::PRIORITY_HIGH); // Optional - Default is 'normal'. return $message; }
When sending to specific device, make sure your notifiable entity has routeNotificationForFcm method defined:
/** * Route notifications for the FCM channel. * * @return string */ public function routeNotificationForFcm() { return $this->device_token; }
When sending to a topic, you may define so within the toFcm method in the notification:
public function toFcm($notifiable) { $message = new Weelis\Notification\Fcm\FcmMessage(); $message->to('the-topic', $recipientIsTopic = true) ->content([...]) ->data([...]); return $message; }
Setting up the APN service
Before using the APN Service, follow the Provisioning and Development guide from Apple
You will need to generate a certificate for you application, before you can use this channel. Configure the path in config/broadcasting.php
Set up .env file
APN_KEY_DEV={"user":{"cert":"/storage/path/file","pass":"passphrase"},"worker":{"cert":"/storage/path/file","pass":"passphrase"}} APN_KEY_PRO={"user":{"cert":"/storage/path/file","pass":"passphrase"},"worker":{"cert":"/storage/path/file","pass":"passphrase"}}
Usage
You can now send messages to APN by creating a ApnMessage:
Return [apn] in the public function via($notifiable) method of your notification:
use Weelis\Notification\Apn\ApnMessage; use Illuminate\Notifications\Notification; class AccountApproved extends Notification { public function via($notifiable) { return ['apn']; } public function toApn($notifiable) { return ApnMessage::create() ->badge(1) ->title('Account approved') ->body("Your {$notifiable->service} account was approved!"); } }
In your notifiable model, make sure to include a routeNotificationForApn() method, which return one or an array of tokens.
public function routeNotificationForApn() { return $this->apn_token; }
Setting up the ESMS service
Set up .env file
ESMS_API_KEY=<key> ESMS_SECRET_KEY=<secrect> ESMS_SMS_TYPE=6 ESMS_BRAND_NAME= ESMS_URL=http://rest.esms.vn/MainService.svc/json/SendMultipleMessage_V4_get ESMS_DAY_MAX=5
Usage
You can now send messages to Esms:
Return [esms] in the public function via($notifiable) method of your notification:
use Illuminate\Notifications\Notification; class AccountApproved extends Notification { public function via($notifiable) { return ['esms']; } public function toApn($notifiable) { return [ "sms" => <your sms message> ]; } }
When sending to specific device, make sure your notifiable entity has routeNotificationForEsms method defined:
/** * Route notifications for the FCM channel. * * @return string */ public function routeNotificationForEsms() { return $this->phone; }
Sending user channel
use Weelis\Notification\Base\NotificationToUser; $user->notify(new NotificationToUser([ 'scope' => "user", 'types' => ['email', 'esms', 'apn', 'fcm'], 'title' => "Foo", 'body' => "Bar", 'icon' => "", // Optional 'sound' => "", // Optional 'type' => "Foo Bar", 'type_slug' => "foo-bar", 'email_view' => 'foo.bar', // Optional 'custom' => [ // use for email view param also 'foo' => '', 'bar' => '', 'click_action' => "" ] // Optional ]), $notifitable_model // Optional);
License
This project belong to vias company.
统计信息
- 总下载量: 16
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2023-04-13