okn/laravel-onesignal

Laravel 的 OneSignal 封装器

dev-master 2021-05-13 08:11 UTC

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 密钥。

安装

  1. 使用 composer 安装包
composer require okn/laravel-onesignal
  1. 仅适用于 Laravel 版本 < 5.5
    config/app.php 中添加服务提供者和类别名以支持外观
'providers' => [
	// ...
	Okn\OneSignal\OneSignalServiceProvider::class
];

'aliases' => [
   	// ...
   	'OneSignal' => Okn\OneSignal\Facades\OneSignal::class
];
  1. 运行 artisan 命令安装服务
php artisan onesignal:install

此命令将创建一个默认的配置文件 config/onesignal.php

配置

应用程序 ID 和 API 密钥必须在 .env 文件中按以下方式定义

ONESIGNAL_APP_ID=
ONESIGNAL_REST_API_KEY=
ONESIGNAL_USER_AUTH_KEY=

用法

默认用法

  1. 创建通知
$notification = OneSignal::createNotification([
    'headings'=>'Title',
    'contents'=>'Notification message...',
    'url'=>'https://yourwebsite.com'
]);
  1. 发送通知
  • 到(一些)分段
$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() 方法相同的参数。

检索用户

  1. 所有用户
OneSignal::getUsers(300, 0);

第一个参数是 最大限制,第二个是 偏移量。两者都是可选的。

  1. 特定用户
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