laravel-notification-channels / onesignal
OneSignal 通知驱动程序
Requires
- php: ^8.0
- berkayk/onesignal-laravel: ^2.0.0
- illuminate/notifications: 5.*|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/support: 5.*|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- mockery/mockery: ^1.3|^1.4
- orchestra/testbench: ^4.0|^5.0|^7.0|^8.0|^9.0
- phpunit/phpunit: ^8.0|^9.5.10|^10.0
This package is auto-updated.
Last update: 2024-08-31 00:33:14 UTC
README
此包使您能够轻松使用 Laravel 5.3+ 发送 OneSignal 通知。
内容
安装
您可以通过 composer 安装此包
$ composer require laravel-notification-channels/onesignal
如果您在 Laravel 5.4 或更低版本中安装此包,则必须导入服务提供者
// config/app.php 'providers' => [ ... NotificationChannels\OneSignal\OneSignalServiceProvider::class, ],
设置您的 OneSignal 账户
将您的 OneSignal App ID 和 REST API 密钥添加到您的 config/services.php
// config/services.php ... 'onesignal' => [ 'app_id' => env('ONESIGNAL_APP_ID'), 'rest_api_key' => env('ONESIGNAL_REST_API_KEY'), 'guzzle_client_timeout' => env('ONESIGNAL_GUZZLE_CLIENT_TIMEOUT', 0), ], ...
使用方法
现在您可以在通知中的 via()
方法中使用该频道
use NotificationChannels\OneSignal\OneSignalChannel; use NotificationChannels\OneSignal\OneSignalMessage; use NotificationChannels\OneSignal\OneSignalWebButton; use Illuminate\Notifications\Notification; class AccountApproved extends Notification { public function via($notifiable) { return [OneSignalChannel::class]; } public function toOneSignal($notifiable) { return OneSignalMessage::create() ->setSubject("Your {$notifiable->service} account was approved!") ->setBody("Click here to see details.") ->setUrl('http://onesignal.com') ->webButton( OneSignalWebButton::create('link-1') ->text('Click here') ->icon('https://upload.wikimedia.org/wikipedia/commons/4/4f/Laravel_logo.png') ->url('https://laravel.net.cn') ); } }
为了使您的通知知道您正在针对哪些 OneSignal 用户,将 routeNotificationForOneSignal
方法添加到您的可通知模型中。
您可以返回一个 player-id,或者如果您想通知多个 player ID,则返回包含所有 ID 的数组。
public function routeNotificationForOneSignal() { return 'ONE_SIGNAL_PLAYER_ID'; }
如果您想根据 OneSignal 的 "syncHashedEmail" 功能发送通知,请返回包含 "email" 索引的数组。由于 OneSignal API 的限制,无法在单个过滤器中使用多个电子邮件。
public function routeNotificationForOneSignal() { return ['email' => 'example@example.com']; }
如果您想根据 OneSignal 的 "Tags" 功能发送通知,请返回包含 "tags" 索引的数组。
public function routeNotificationForOneSignal() { return ['tags' => ['key' => 'device_uuid', 'relation' => '=', 'value' => '1234567890-abcdefgh-1234567']]; }
如果您想根据使用 setExternalUserId
功能设置的外部用户 ID 发送通知,这将使您能够根据 Laravel 用户 ID 精准定位用户。
public function routeNotificationForOneSignal() { return ['include_external_user_ids' => $this->id]; }
所有可用方法
setSubject('')
: 接受字符串值作为标题。setBody('')
: 接受字符串值作为通知正文。setIcon('')
: 接受图标 URL。setUrl('')
: 接受通知点击事件的 URL。webButton(OneSignalWebButton $button)
: 允许您向通知添加操作按钮(仅限 Chrome 48+(Web 推送))。button(OneSignalButton $button)
: 允许您向通知添加按钮(支持 iOS 8.0 和 Android 4.1+ 设备。图标仅适用于 Android)。setData($key, $value)
: 允许您为消息有效负载设置附加数据。有关更多信息,请参阅 OneSignal 文档。setParameter($key, $value)
: 允许您为消息有效负载设置附加参数,这些参数在 REST API 中可用。有关更多信息,请参阅 OneSignal 文档。setImageAttachments($imageUrl)
: 允许您设置一个图像作为所有可能的附件 OneSignal 附件文档。
按钮使用
OneSignalMessage::create() ->button( OneSignalButton::create('id') ->text('button text') ->icon('button icon') );
WebButton 使用
OneSignalMessage::create() ->webButton( OneSignalWebButton::create('id') ->text('button text') ->icon('button icon') ->url('button url') );
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
测试
$ composer test
安全性
如果您发现任何安全问题,请通过电子邮件 m.pociot@gmail.com 联系,而不是使用问题跟踪器。
贡献
有关详细信息,请参阅 CONTRIBUTING。
致谢
许可
麻省理工学院许可证(MIT)。更多信息请参阅许可文件。