我正在尝试使用laravel-notifications-channel/onesignal,我在设置为接收通知的laravel应用中遇到了一些问题。 documentation on the github page并未真正涵盖用户如何对自己进行身份验证以接收通知。
即使阅读OneSignal docs以便将用户发送到OneSignal也不适合我。
如何在用户使用我们的网络应用时将其设置为通知他们接收通知,然后我可以使用laravel notifications向他们发送通知?
这是我的AssignedToTask通知文件:
<?php
namespace App\Notifications;
use App\Task;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use NotificationChannels\OneSignal\OneSignalChannel;
use NotificationChannels\OneSignal\OneSignalMessage;
use NotificationChannels\OneSignal\OneSignalWebButton;
class AssignedToTask extends Notification
{
use Queueable;
protected $task;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct(Task $task)
{
//
$this->task = $task;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail', 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')
);
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->subject('You have been assigned a new task')
->line('You have a new task: ' . $this->task->title)
->action('View Task', url('tasks/' . $this->task->id));
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}
在我的用户模型中:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zizaco\Entrust\Traits\EntrustUserTrait;
use HipsterJazzbo\Landlord\BelongsToTenants;
use Cmgmyr\Messenger\Traits\Messagable;
class User extends Authenticatable
{
use Notifiable;
use EntrustUserTrait;
use BelongsToTenants;
use Messagable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'company_id'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token', 'company_id'
];
....
public function routeNotificationForOneSignal()
{
return 'ONE_SIGNAL_PLAYER_ID';
}
public function routeNotificationForMail()
{
return $this->email_address;
}
}
如何在用户模型中设置和获取ONE_SIGNAL_PLAYER_ID,以便用户接受通知并发送通知?
答案 0 :(得分:3)
编辑 - 2
由于您不知道发生了什么,让我试着解释一下如何使用OneSignal
。
这是一个推送消息传递系统,就像任何其他推送通知系统一样。 (FCM(谷歌),PubNub)。
工作原理
OneSignal.Com
创建您的帐户,然后为您创建一个应用。一旦你创建了一个应用程序,它就会为你的消费者提供移动SDK。OneSignal
就会向该移动应用发送推送通知。编辑 - 1
我认为现在我理解您对OneSignalChannel
<强>流量强>
嗯,你从字面上理解了这个含义。这导致了问题
public function routeNotificationForOneSignal()
{
return 'ONE_SIGNAL_PLAYER_ID';
}
从错误消息中,此函数应返回唯一ID(UUID)。
将返回值更改为OneSignalChannel
那是我的全部朋友。