This package makes it easy to send notifications using Apple Push (APN) with Laravel.
Install this package with Composer:
composer require laravel-notification-channels/apn
Before using the APN Service, enable Push Notifications in your app. Then create a APNS key under Certificates, Identifiers & Profiles to generate a Key ID and .p8 file.
Collect your Key ID, as well as your Team ID (displayed at the top right of the Apple Developer page) and app bundle ID and configure as necessary in config/broadcasting.php
.
'connections' => [
'apn' => [
'key_id' => env('APN_KEY_ID'),
'team_id' => env('APN_TEAM_ID'),
'app_bundle_id' => env('APN_BUNDLE_ID'),
'private_key_content' => env('APN_PRIVATE_KEY'),
'production' => env('APN_PRODUCTION', true),
],
],
See the pushok
docs for more information about what arguments can be supplied to the client - for example you can also use private_key_path
and private_key_secret
.
You can now send messages to APN by creating a ApnMessage:
use NotificationChannels\Apn\ApnChannel;
use NotificationChannels\Apn\ApnMessage;
use Illuminate\Notifications\Notification;
class AccountApproved extends Notification
{
public function via($notifiable)
{
return [ApnChannel::class];
}
public function toApn($notifiable)
{
return ApnMessage::create()
->badge(1)
->title('Account approved')
->body("Your {$notifiable->service} account was approved!");
}
}
To see more of the methods available to you when creating a message please see the ApnMessage
source.
In your notifiable
model, make sure to include a routeNotificationForApn()
method, which return one or an array of tokens.
public function routeNotificationForApn()
{
return $this->apn_token;
}
If you need to provide a custom configuration for a message you can provide an instance of a Pushok client and it will be used instead of the default one.
$customClient = new Pushok\Client(Pushok\AuthProvider\Token::create($options));
return ApnMessage::create()
->title('Account approved')
->body("Your {$notifiable->service} account was approved!")
->via($customClient)
Sending VoIP push notifications is very similar. You just need to use the ApnVoipChannel
channel with ApnVoipMessage
(which has the same API as a regular ApnMessage
).
use NotificationChannels\Apn\ApnVoipChannel;
use NotificationChannels\Apn\ApnVoipMessage;
use Illuminate\Notifications\Notification;
class AccountApproved extends Notification
{
public function via($notifiable)
{
return [ApnVoipChannel::class];
}
public function toApnVoip($notifiable)
{
return ApnVoipMessage::create()
->badge(1);
}
}
In your notifiable
model, make sure to include a routeNotificationForApnVoip()
method, which return one or an array of tokens.
public function routeNotificationForApnVoip()
{
return $this->apn_voip_token;
}
Please see CHANGELOG for more information what has changed recently.
$ composer test
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.