shokme/laravel-onesignal

Laravel OneSignal 通知

v1.0.0 2022-08-19 17:15 UTC

This package is auto-updated.

Last update: 2024-09-07 13:38:43 UTC


README

shokme/laravel-onesignal 包提供了一个易于使用的门面,通过 OneSignal 向您的用户发送通知。它使用 PHP8.1 的最新功能。

以下是一个如何使用它的示例

$response = OneSignal::make()
    ->subject('Notification Title')
    ->contents(['en' => 'Notification Body', 'es' => 'Translated Notification Body'])
    ->url('en.myapp.service://')
    ->sendTo(SignalType::Users, [1, 2, 3]);

以下为所有可用方法的文档

安装

您可以通过 composer 安装此包

composer require shokme/laravel-onesignal

定义环境变量

ONESIGNAL_APP_ID=your-app-id
ONESIGNAL_REST_API_KEY=your-api-key

您可能想要发布配置文件以更新 http 超时和重试

php artisan vendor:publish --provider="Shokme\OneSignal\OneSignalServiceProvider" --tag="config"

文档

消息

您可以使用字符串或语言数组来设置消息(标题、副标题、内容)。如果您设置了一个 string,它将默认为 'en' 语言。

OneSignal::subject('Notification Title'); // ['en' => 'Notification Title']
OneSignal::subject(['en' => 'Notification Title', 'nl' => 'Translated Notification Title']);

URL

您可以将用户点击通知时打开的 URL 设置为。

OneSignal::url('https://example.com');

按钮

移动端

OneSignal::buttons(ButtonType::Mobile, [
    ['id' => 'action-1', 'text' => 'Action To Trigger'],
    ...
]);

网页端

OneSignal::buttons(ButtonType::Web, [
    ['id' => 'action-1', 'text' => 'Action To Trigger', 'url' => 'https://app.com'],
    ...
]);

附加参数

如果您必须使用此包不支持的一些参数,您可以使用此方法设置它们。

OneSignal::parameters(['template_id' => 'be4a8044-bbd6-11e4-a581-000c2940e62c'])

计划和延迟

您可以在 OneSignal 文档中找到更多信息。

计划

等于 send_after 参数。

OneSignal::schedule(Carbon::parse('17 april 2022')->timezone('GMT+3'));

延迟

等于 delayed_option 参数,如果设置了 timezone,您需要设置第二个参数($time)。

$lastActive = OneSignal::delay(Delay::LastActive);
$timezone = OneSignal::delay(Delay::Timezone, '9:00AM');

频道

使用单个频道时。

OneSignal::channel(Channel::Sms);

使用多个频道时。

OneSignal::channels([Channel::Sms, Channel::Push]);

筛选器

您可以在 可用筛选器 中查看。
如果您想知道如何 格式化筛选器

OneSignal::filters([
    ['field' => 'tag', 'key' => 'test', 'relation' => '=', 'value' => 'test'],
    ['field' => 'tag', 'key' => 'test2', 'relation' => '>=', 'value' => 'test2'],
])

或者您可以将筛选器链接起来,注意在某些情况下,您可能需要与 filters() 结合使用,因为目前某些字段不支持。

OneSignal::filter('tag', 'level', 10)
    ->filter('amount_spent', '>', 0)
    ->filter('session_count', 5);

//[
//    ['field' => 'tag', 'key' => 'test', 'relation' => '=', 'value' => 10],
//    ['field' => 'amount_spent', 'relation' => '>=', 'value' => '0'],
//    ['field' => 'session_count', 'relation' => '=', 'value' => '5'],
//]

发送通知

您可以发送多种类型的通知。默认情况下,通知使用 push 频道。

$response = OneSignal::sendTo(SignalType::All);
$response = OneSignal::sendTo(SignalType::Users, [1,2,3]);
$response = OneSignal::channel(Channel::Sms)->sendTo(SignalType::Players, ['player_id-1', 'player_id-2']);
$response = OneSignal::sendTo(SignalType::Segments, ['Active Users', 'Inactive Users']);
$response = OneSignal::filters([...])->sendTo(SignalType::Filters);

通知

检索所有

您可以使用以下方法检索所有通知

$response = OneSignal::getNotifications();
// Dashboard, Api or Automated
$response = OneSignal::getNotifications(Kind::Dashboard);

检索一个

您可以将第二个参数添加以指定您的 $outcomes。请参阅 OneSignal 的 结果 文档。

$response = OneSignal::getNotification('notification_id');

取消

$response = OneSignal::cancel('notification_id');

玩家

OneSignal 设备 文档

添加

所有设备类型可以在 Shokme\OneSignal\Enum\DeviceType.php 中找到。

$response = OneSignal::addPlayer(DeviceType::Android, 'push-token-from-google', 'Australia/Sydney', [
    'device_model' => 'Nexus 5X',
]);

编辑

$response = OneSignal::editPlayer('push-token-from-google', timezone: 'Europe/Brussels');

贡献

此包可能并不完整,因为它是为个人使用而制作的。如果您想贡献,请随时打开一个问题或拉取请求。