Я пытаюсь использовать Laravel-уведомления-канал / onesignal и у меня возникают проблемы с пользователями в моем приложении laravel, настроенном на получение уведомлений. документация на странице github на самом деле не описывается, как пользователь сам идентифицирует себя, чтобы получить уведомление.
Даже читая за Документы OneSignal для отправки пользователей в OneSignal не работает для меня.
Как мне настроить, чтобы, когда пользователь использует наше веб-приложение, он получал уведомления о получении уведомлений, а затем я мог отправлять им уведомления, используя уведомления Laravel?
Вот мой файл уведомлений 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 в модели пользователя, чтобы пользователь принимал уведомления, а я мог отправлять им уведомления?
РЕДАКТИРОВАТЬ — 2
Поскольку вы не знаете, что происходит, позвольте мне объяснить, как вы можете работать с OneSignal
,
Это система push-сообщений, как и любая другая система push-уведомлений. (FCM (Google), PubNub).
Как это устроено
OneSignal.Com
Создайте свою учетную запись, а затем создайте приложение для вас. Как только вы создадите приложение, оно даст вам SDK для мобильных устройств, где находятся ваши потребители.OneSignal
отправит push-уведомление в это мобильное приложение.РЕДАКТИРОВАТЬ — 1
Я думаю, теперь я понимаю вашу путаницу с уведомлениями с OneSignalChannel
поток
Ну, вы поняли это значение буквально. Что вызывало проблему
public function routeNotificationForOneSignal()
{
return 'ONE_SIGNAL_PLAYER_ID';
}
Из сообщения об ошибке эта функция должна вернуть уникальный идентификатор (UUID).
Измените возвращаемое значение на фактический идентификатор игрока в OneSignalChannel
Это все, мой друг.
Других решений пока нет …