1. Go to this page and download the library: Download multek/laravel-onesignal library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
multek / laravel-onesignal example snippets
use Illuminate\Foundation\Auth\User as Authenticatable;
use Multek\OneSignal\Concerns\HasOneSignal;
class User extends Authenticatable
{
use HasOneSignal;
/**
* Tags are custom segmentation data, separate from native properties.
* Plan limits: Free 2 tags/user, Growth 10, Professional 100 — keep this list lean.
*/
public function getOneSignalTags(): array
{
return [
'plan' => $this->subscription_plan,
'role' => $this->role?->name,
];
}
public function getOneSignalLanguage(): ?string
{
return $this->locale; // ISO 639-1, e.g. 'pt', 'en'
}
}
$user->syncToOneSignal(); // synchronous: single upsert (tags + properties + subscriptions)
$user->syncToOneSignalAsync(); // dispatches SyncUserToOneSignal on the configured queue
$user->toOneSignalPayload(); // exactly what a sync would send
$user->oneSignalPayloadChanged(); // would a sync send something different?
$user->sendPush('Your order shipped!', ['order_id' => 456]);
$user->trackOneSignalEvent('purchase', ['amount' => 99.90]);
$user->deleteFromOneSignal(); // synchronous
$user->deleteFromOneSignalAsync(); // dispatches DeleteUserFromOneSignal on the configured queue
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
use Multek\OneSignal\Concerns\HasOneSignal;
use Multek\OneSignal\Observers\OneSignalObserver;
#[ObservedBy(OneSignalObserver::class)]
class User extends Authenticatable
{
use HasOneSignal;
}
public function updated(Role $role): void
{
if ($role->wasChanged('name')) {
$role->users()->chunkById(500, fn ($users) => $users->each->syncToOneSignalAsync());
}
}
OneSignal::notification()
->toUser('user_123')
->heading('Order Shipped')
->body('Your order #456 has been shipped.')
->data(['order_id' => 456])
->image('https://example.com/banner.png')
->url('https://example.com/orders/456')
->send();
use Multek\OneSignal\Messages\OneSignalMessage;
class OrderShipped extends Notification
{
public function via($notifiable): array
{
return ['onesignal'];
}
public function toOneSignal($notifiable): OneSignalMessage
{
return OneSignalMessage::create('Your order has been shipped.')
->heading('Order Shipped')
->data(['order_id' => 456]);
}
}
OneSignal::trackEvent('user_123', 'purchase', ['amount' => 99.90]);
OneSignal::trackEventForUsers(['user_1', 'user_2'], 'promo_viewed', ['campaign' => 'summer']);
// or from a model using HasOneSignal
$user->trackOneSignalEvent('purchase', ['amount' => 99.90]);
bash
php artisan onesignal:backfill --dry-run # count what would be synced, dispatch nothing
php artisan onesignal:backfill # dispatch a sync job per record
php artisan onesignal:backfill --chunk=500 # override the default chunk size (250)
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.