Laravel Экспо Пу sh Уведомление - Не получено Уведомление Android - PullRequest
1 голос
/ 24 февраля 2020

Я новичок в Laravel и не могу найти практического примера библиотеки https://github.com/Alymosul/laravel-exponent-push-notifications. Я хочу создать простое Welcome-Notification.

Мое уведомление выглядит следующим образом:

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use NotificationChannels\ExpoPushNotifications\ExpoChannel;
use NotificationChannels\ExpoPushNotifications\ExpoMessage;

class WelcomeNotification extends Notification
{
    use Queueable;

    public function __construct(){
    }

    public function via($notifiable)
    {
        return [ExpoChannel::class];
    }

    public function toExpoPush($notifiable)
    {
        return ExpoMessage::create()
            ->badge(1)
            ->title("Hello World!")
            ->enableSound()
            ->body("Hello World!");
    }

    public function toArray($notifiable)
    {
        return [
        ];
    }
}

Я уже подписал пользователя с помощью маршрута подписки (успешно создана запись в БД) .

Теперь я хочу отправить уведомление пользователю:

public function sendNotification(Request $request)
{
        $getUserByEmail = User::where('email', 'user@email.com')->first();
        $getUserByEmail->notify(new WelcomeNotification());
}

Я не получил уведомление. При использовании инструмента уведомлений expo он работает как положено.

Не могли бы вы объяснить мне, что я делаю не так?

1 Ответ

1 голос
/ 25 февраля 2020

Я понял это. Проблема в том, что библиотека laravel -exponent-pu sh -notification отправляет все уведомления без канала сообщений на канал 'Default'.

Так что это будет работать, если я создам канал сообщений 'По умолчанию' на устройстве .

В качестве альтернативы есть еще две опции:

Опция 1: Создать канал сообщений на устройстве.

import { Notifications } from 'expo';

    if (Platform.OS === 'android') {
        await Notifications.createChannelAndroidAsync('chat-messages', {
            name: 'Chat messages',
            sound: true,
        });
    }
Отправьте уведомление
$getUserByEmail = User::where('email', 'user@email.com')->first();
$getUserByEmail->notify(new WelcomeNotification());
Уведомление должно содержать канал сообщения, зарегистрированный на устройстве:
public function toExpoPush($notifiable){
        return ExpoMessage::create()
            ->badge(1)
            ->title("Hello World!")
            ->enableSound()
            ->body("Hello World!")
            ->setChannelId("chat-messages");
}

Опция 2: Изменить на Array () - метод в файле NotificationChannels\ExpoPushNotifications\ ExpoMessage.php что-то вроде этого:

    public function toArray()
    {

        $returnArray = [
            'title'     =>  $this->title,
            'body'      =>  $this->body,
            'sound'     =>  $this->sound,
            'badge'     =>  $this->badge,
            'ttl'       =>  $this->ttl,
            'channelId' => $this->channelId,
            'data'      => $this->jsonData,
        ];

        if (strtolower($this->channelId) == 'default' || $this->channelId == '') {
            unset($returnArray['channelId']);
        }

        return $returnArray;
    }

При отправке уведомлений в приложение expo без канала, expo автоматически создает канал и вы получите уведомление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...