alexeimun/onesignal

php的OneSignal通知驱动

dev-master 2018-08-09 17:14 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:49:21 UTC


README

Latest Version on Packagist Software License Build Status StyleCI SensioLabsInsight Quality Score Code Coverage Total Downloads

此包使得使用Laravel 5.3+发送OneSignal通知变得简单。

内容

安装

您可以通过composer安装此包

$ composer require laravel-notification-channels/onesignal

如果您在Laravel 5.4或更低版本中安装此包,则必须导入服务提供程序

// config/app.php
'providers' => [
    ...
    OneSignalNotifier\OneSignal\OneSignalServiceProvider::class,
],

设置你的OneSignal账户

将您的OneSignal App ID和REST API Key添加到您的 config/services.php

// config/services.php
...
'onesignal' => [
    'app_id' => env('ONESIGNAL_APP_ID'),
    'rest_api_key' => env('ONESIGNAL_REST_API_KEY')
],
...

用法

现在您可以在通知中的 via() 方法中使用该通道

use OneSignalNotifier\OneSignal\OneSignalChannel;
use OneSignalNotifier\OneSignal\OneSignalMessage;
use OneSignalNotifier\OneSignal\OneSignalWebButton;
use Illuminate\Notifications\Notification;

class AccountApproved extends Notification
{
    public function via($notifiable)
    {
        return [OneSignalChannel::class];
    }

    public function toOneSignal($notifiable)
    {
        return OneSignalMessage::create()
            ->subject("Your {$notifiable->service} account was approved!")
            ->body("Click here to see details.")
            ->url('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用户,请在您的Notifiable模型中添加 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']];
}

所有可用方法

  • subject(''):接受一个字符串值作为标题。
  • body(''):接受一个字符串值作为通知正文。
  • icon(''):接受一个图标URL。
  • url(''):接受一个通知点击事件的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')
    );

更新日志

有关最近更改的更多信息,请参阅更新日志

测试

$ composer test

安全

如果您发现任何与安全相关的问题,请通过m.pociot@gmail.com发送电子邮件,而不是使用问题跟踪器。

贡献

有关详细信息,请参阅贡献

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件