Как подписать пользователя с помощью канала уведомлений laravel для OneSignal

Я пытаюсь использовать 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 в модели пользователя, чтобы пользователь принимал уведомления, а я мог отправлять им уведомления?

1

Решение

РЕДАКТИРОВАТЬ — 2
Поскольку вы не знаете, что происходит, позвольте мне объяснить, как вы можете работать с OneSignal,

Это система push-сообщений, как и любая другая система push-уведомлений. (FCM (Google), PubNub).

Как это устроено

  1. Первый переход OneSignal.Com Создайте свою учетную запись, а затем создайте приложение для вас. Как только вы создадите приложение, оно даст вам SDK для мобильных устройств, где находятся ваши потребители.
  2. Теперь каждый раз, когда ваши пользователи устанавливают и запускают ваше приложение, они уведомляют ваш веб-сервер своим собственным уникальным идентификатором и информацией о пользователе.
  3. Информация о пользователе, которую вы получили, является уникальным player_id, который вы будете хранить в своей базе данных для этого пользователя.
  4. Теперь, когда вы хотите отправить уведомление в любое мобильное приложение, просто вызовите метод API Post Notification с player_id и OneSignal отправит push-уведомление в это мобильное приложение.

РЕДАКТИРОВАТЬ — 1

Я думаю, теперь я понимаю вашу путаницу с уведомлениями с OneSignalChannel

поток

  1. У вас уже есть Players_ids, хранящиеся в базе данных вашего приложения против каждого пользователя.
  2. Теперь, когда вы хотите отправить уведомление игроку, вы просто берете этого пользователя player_id из db и отправляете уведомление OneSignal.

Ну, вы поняли это значение буквально. Что вызывало проблему

public function routeNotificationForOneSignal()
{
return 'ONE_SIGNAL_PLAYER_ID';
}

Из сообщения об ошибке эта функция должна вернуть уникальный идентификатор (UUID).

Измените возвращаемое значение на фактический идентификатор игрока в OneSignalChannel

Это все, мой друг.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]