okn / laravel-onesignal
Laravel 的 OneSignal 封装器
dev-master
2021-05-13 08:11 UTC
Requires
- php: >=5.5.0
- guzzlehttp/guzzle: ^6.2
- illuminate/support: 4.*|5.*|6.*
This package is auto-updated.
Last update: 2024-09-13 15:25:29 UTC
README
简介
该项目受到 Berkayk (https://github.com/berkayk/laravel-onesignal) 的大量启发,是另一个 Laravel 的 OneSignal 封装器。主要目的是让网页推送通知更加容易。在开始使用此服务之前,您需要完成 OneSignal 设置的所有步骤(https://onesignal.com),以获取您的应用程序 ID 和 API 密钥。
安装
- 使用 composer 安装包
composer require okn/laravel-onesignal
- 仅适用于 Laravel 版本 < 5.5
在config/app.php
中添加服务提供者和类别名以支持外观
'providers' => [ // ... Okn\OneSignal\OneSignalServiceProvider::class ]; 'aliases' => [ // ... 'OneSignal' => Okn\OneSignal\Facades\OneSignal::class ];
- 运行 artisan 命令安装服务
php artisan onesignal:install
此命令将创建一个默认的配置文件 config/onesignal.php
。
配置
应用程序 ID 和 API 密钥必须在 .env
文件中按以下方式定义
ONESIGNAL_APP_ID= ONESIGNAL_REST_API_KEY= ONESIGNAL_USER_AUTH_KEY=
用法
默认用法
- 创建通知
$notification = OneSignal::createNotification([ 'headings'=>'Title', 'contents'=>'Notification message...', 'url'=>'https://yourwebsite.com' ]);
- 发送通知
- 到(一些)分段
$notification->send(['segments'=>['SEGMENT-NAME']]);
- 到特定用户
$notification->send(['ids'=>['PLAYER-ID-1','PLAYER-ID-2','PLAYER-ID-3']]);
- 异步发送
$promise = $notification->async()->send([$params]);
这将返回一个 GuzzleHttp\Promise\Promise
(http://docs.guzzlephp.org/en/stable/quickstart.html#async-requests)
向通知添加按钮
$notification->withButtons([ [ 'id' => 'btnId1', 'text' => 'Webpush button test', 'icon' => 'https://yourwebsite.com/images/icon1.png', 'url' => 'https://yourwebsite.com/action1' ], [ 'id' => 'btnId2', 'text' => 'Webpush button test #2', 'icon' => 'https://yourwebsite.com/images/icon2.png', 'url' => 'https://yourwebsite.com/action2' ] ])->send([$params]);
发送一个默认模板测试通知
- 到名为 "Admin" 的现有分段
OneSignal::test();
此方法也接受与 send()
方法相同的参数。
检索用户
- 所有用户
OneSignal::getUsers(300, 0);
第一个参数是 最大限制,第二个是 偏移量。两者都是可选的。
- 特定用户
OneSignal::getUser('PLAYER-ID');
异常
cURL 错误 60:SSL 证书问题...
cURL 需要一个 SSL 证书才能通过 https 协议进行通信。
解决方案 1(推荐)
在本地计算机上安装 SSL 证书
假设您在 Windows 上使用 WAMP
- 从您的本地服务器下载一个 SSL 证书 https://curl.haxx.se/ca/cacert.pem
- 将其放在您喜欢的目录中(我的目录是
C:\Users\[MY-USERNAME]\cacert.pem
) - 编辑
php.ini
中的此变量以添加证书的路径
curl.cainfo = "C:\Users\[MY-USERNAME]\cacert.pem"
- 重启您的 web 服务器
现在它应该可以工作了,如果不行,您可能需要尝试下一个解决方案。
解决方案 2
禁用 SSL 验证(不推荐)
在 .env
文件中,您可以添加以下行
ONESIGNAL_SSL_VERIFY=false