承接 laravel-notification-channels/apn 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

laravel-notification-channels/apn

最新稳定版本:v6.0.2

Composer 安装命令:

composer require laravel-notification-channels/apn

包简介

Apple APN Push Notification Channel

README 文档

README

Latest Version on Packagist Software License Build Status StyleCI Quality Score Code Coverage Total Downloads

This package makes it easy to send notifications using Apple Push (APN) with Laravel.

Contents

Installation

Install this package with Composer:

composer require laravel-notification-channels/apn

Setting up the APN service

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.

JWT Token Authentication

'connections' => [
    'apn' => [
        'key_id' => env('APN_KEY_ID'),
        'team_id' => env('APN_TEAM_ID'),
        'app_bundle_id' => env('APN_BUNDLE_ID'),
        // Enable either `private_key_path` or `private_key_content` depending on your environment
        // 'private_key_path' => env('APN_PRIVATE_KEY'),
        'private_key_content' => env('APN_PRIVATE_KEY'),
        'private_key_secret' => env('APN_PRIVATE_SECRET'),
        'production' => env('APN_PRODUCTION', true),
    ],
],

See the Establishing a token-based connection to APNs which will guide you how to obtain the values of the necessary parameters.

Using Certificate (.pem) Authentication

'connections' => [
    'apn' => [
        'app_bundle_id' => env('APN_BUNDLE_ID'),
        'certificate_path' => env('APN_CERTIFICATE_PATH'),
        'certificate_secret' => env('APN_CERTIFICATE_SECRET'),
        'production' => env('APN_PRODUCTION', true),
    ],
],

If you are connecting with certificate based APNs, key_id and team_id are not needed. You can refer to Send a Push Notification Using a Certificate

See the Establishing a certificate-based connection to APNs which will guide you how to obtain the values of the necessary parameters.

See the pushok docs for more information about what arguments can be supplied to the client.

Usage

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;
}

Per-message configuration

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)

Live Activity notifications

You can send Live Activity notifications using the same ApnChannel but instead you will return an ApnLiveActivityMessage from your notification.

use NotificationChannels\Apn\ApnChannel;
use NotificationChannels\Apn\ApnLiveActivityMessage;
use Illuminate\Notifications\Notification;

class AccountApproved extends Notification
{
    public function via($notifiable)
    {
        return [ApnChannel::class];
    }

    public function toApn($notifiable)
    {
        return ApnLiveActivityMessage::create()
            ->attributes(['foo' => 'bar']);
    }
}

VoIP push notifications

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;
}

Changelog

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Security

If you discover any security related issues, please email info@fruitcake.nl instead of using the issue tracker.

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.

统计信息

  • 总下载量: 1.79M
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 201
  • 点击次数: 1
  • 依赖项目数: 10
  • 推荐数: 0

GitHub 信息

  • Stars: 201
  • Watchers: 6
  • Forks: 58
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-09-24