gpt4 book ai didi

php - Laravel - 如何使用一个信号通知

转载 作者:行者123 更新时间:2023-12-04 21:21:53 29 4
gpt4 key购买 nike

我有一个用 laravel 开发的后台,允许插入数据,然后 android 和 ios 应用程序获取。

现在我需要实现 onsignal 通知,例如当新产品插入后台时,应用用户会收到通知。

我设置了我的 onesignal 通知并在我的 laravel 项目中安装了这个包:https://github.com/laravel-notification-channels/onesignal。我也设置了 OneSignal App IDREST API Key

之后,我创建了一个新 Controller 并将示例代码放在包链接中。 Controller :

   use Illuminate\Http\Request;
use NotificationChannels\OneSignal\OneSignalChannel;
use NotificationChannels\OneSignal\OneSignalMessage;
use NotificationChannels\OneSignal\OneSignalWebButton;
use Illuminate\Notifications\Notification;

class NotificationsController extends Controller
{
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('http://laravel.com')
);
}
}

但现在我不知道如何使用它。例如,如何在添加新产品时发送通知?我需要设置路线吗?

如果不能很好地解释我的问题,请告诉我。

谢谢

最佳答案

您好,您必须创建一个自定义 channel OneSignal 通知,因此您不必在 Controller 上执行此操作。

1.- 首先,您需要为要通知的每个“事件”创建一个 OneSignal 通知

例如添加产品时

php artisan make:notification ProductAdded

这将在 App\Notifications\ProductAdded

内生成一个通知文件

2.- 在新文件 ProductAdded 上,您需要将通知的逻辑添加到 OneSignal

<?php

// App\Notifications\ProductAdded.php

class OneSignal extends Notification
{
use Queueable;
private $data; //this is the "model" data that will be passed through the notify method

/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;
}

/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return [OneSignalChannel::class];
}

public function toOneSignal($notifiable)
{
//now you can build your message with the $this->data information
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('http://laravel.com')
);
}

}

3.- 在你的模型中使用 Notifiable trait

<?php

class YourModel extends Model
{
use Notifiable;

public function sendNotification()
{
$this->notify(new ProductAdded($this)); //Pass the model data to the OneSignal Notificator
}

public function routeNotificationForOneSignal()
{
/*
* you have to return the one signal player id tat will
* receive the message of if you want you can return
* an array of players id
*/

return $this->data->user_one_signal_id;
}

}
  1. 此外,您可以在任何地方使用 Notification 外观

$users 是玩家 ID 的集合$data 是构建通知的数据

Notification::send($users, new ProductAdded($dataToNotify));

我希望这会有所帮助:)

您还可以在 Laravel Docs 上阅读更多此类内容

https://laravel.com/docs/5.4/notifications

警察局。

如果您对通知系统感到不知所措,也可以使用此软件包https://github.com/berkayk/laravel-onesignal它是一个简单的包装器,您可以轻松使用它,并且有很多有用的方便方法。

关于php - Laravel - 如何使用一个信号通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45942865/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com