risingsun/laravel-notification-channel-apn

Apple APN 推送通知通道

v3.3.3 2021-05-11 06:27 UTC

README

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

此包使您能够使用 Laravel 通过 Apple 推送 (APN) 发送通知变得简单。

内容

安装

使用 Composer 安装此包

composer require laravel-notification-channels/apn

设置 APN 服务

在开始使用 APN 服务之前,请先在您的应用中启用推送通知。然后,在证书、标识符和配置文件下创建一个 APNS 密钥以生成密钥 ID 和 .p8 文件。

收集您的密钥 ID,以及您的团队 ID(在 Apple 开发者页面右上角显示)和应用程序包 ID,并在 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),
    ],
],

有关客户端可以提供哪些参数的更多信息,请参阅 pushok 文档 - 例如,您还可以使用 private_key_pathprivate_key_secret

用法

现在,您可以通过创建一个 ApnMessage 来向 APN 发送消息

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!");
    }
}

有关创建消息时可用方法的更多信息,请参阅 ApnMessage 源代码

在您的 notifiable 模型中,确保包含一个 routeNotificationForApn() 方法,该方法返回一个或多个令牌。

public function routeNotificationForApn()
{
    return $this->apn_token;
}

按消息配置

如果您需要为消息提供自定义配置,则可以提供一个 Pushok 客户端实例,它将替换默认客户端。

$customClient = new Pushok\Client(Pushok\AuthProvider\Token::create($options));

return ApnMessage::create()
    ->title('Account approved')
    ->body("Your {$notifiable->service} account was approved!")
    ->via($customClient)

VoIP 推送通知

发送 VoIP 推送通知与之前类似。您只需要使用 ApnVoipChannel 通道和 ApnVoipMessage(它与常规 ApnMessage 具有相同的 API)。

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

在您的 notifiable 模型中,确保包含一个 routeNotificationForApnVoip() 方法,该方法返回一个或多个令牌。

public function routeNotificationForApnVoip()
{
    return $this->apn_voip_token;
}

变更日志

有关最近更改的更多信息,请参阅 变更日志

测试

$ composer test

安全

如果您发现任何安全相关的问题,请通过电子邮件 info@fruitcake.nl 而不是使用问题跟踪器来报告。

贡献

有关详细信息,请参阅 贡献

鸣谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件