laravel-notification-channels / onesignal

OneSignal notifications channel for Laravel
MIT License
283 stars 119 forks source link

Issues sending to segments #151

Open wout101media opened 1 year ago

wout101media commented 1 year ago

Hi,

Maybe i'm just making a mistake and overlooking something but at the moment I'm trying to send notifications to all my OneSignal subscribers. I don't have their OneSIgnal player id's stored in my database because I'm creating a news application where people can subscribe but don't need an user account for it. So the default laravel functionality in my controller Notification::send(User::all(), new OneSignalNotification($news->title,'fijeoapwq', \route('admin.news.show',$news->id)));

Will not work for me. But testing with this and in User class hard coding public function routeNotificationForOneSignal(){ return 'ONESIGNAL_PLAYER_ID'; } Actually works for me but for the love of god i can't figure how to get it working sending the notification to my Active Users segment. I have tried things like this in my OneSignalNotification class:

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Notification;
use NotificationChannels\OneSignal\OneSignalChannel;
use NotificationChannels\OneSignal\OneSignalMessage;
class OneSignalNotification extends Notification
{
    use Queueable;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct(public string $subject, public string $body, public string $url)
    {
        //
    }

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

    public function toOneSignal($notifiable)
    {
        return OneSignalMessage::create()
                ->setSubject($this->subject)
                ->setBody($this->body)
                ->setUrl($this->url)
            ->setParameter('included_segments','Active Users');
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return [
            //
        ];
    }
}

Is something broken or could someone help my figuring this out?