Skip to content

推送通知

概述

NativePHP for Mobile 使用 Firebase Cloud Messaging (FCM) 向 iOS 和 Android 设备上的用户发送推送通知。

要向用户发送推送通知,你的应用必须请求一个令牌。然后该令牌必须安全存储(理想情况下通过安全 API 存储在服务器应用程序中)并与该用户/设备关联。

请求推送通知将触发一个警报,让用户批准或拒绝你的请求。如果他们批准,你的应用将收到令牌。

当你想向该用户发送通知时,你将此令牌连同请求一起传递给 FCM 服务,Firebase 负责将消息发送到正确的设备。

提示

FCM 在幕后自动通过 Apple 的推送通知服务 (APNS) 路由通知 - 你不需要单独配置 APNS。你只需要配置 Firebase 以访问你的 APNS 账号。

Firebase

  1. 创建一个 Firebase 账号
  2. 创建一个项目
  3. 下载 google-services.json 文件(用于 Android)和 GoogleService-Info.plist 文件(用于 iOS)
  4. 这些文件包含你的应用配置,Firebase SDK 使用它们为每个设备检索令牌

将这些文件放在应用程序的根目录中,NativePHP 将自动为每个平台适当地设置它们。

你可以忽略 Firebase 的进一步设置说明,因为 NativePHP 已经处理好了这些。

服务账号

要从服务器端应用程序发送推送通知,你还需要一个 Firebase 服务账号:

  1. 进入 Firebase Console → Project Settings → Service Accounts
  2. 点击"Generate New Private Key"下载服务账号 JSON 文件
  3. 将此文件保存为 fcm-service-account.json,放在服务器应用程序的安全位置

获取推送令牌

在应用启动期间请求推送通知权限是常见做法,因为令牌可能在以下情况下更改:

  • 应用在新设备上恢复
  • 应用数据从备份恢复
  • 应用被更新
  • 其他内部 FCM 操作

要请求令牌,使用 PushNotifications::getToken() 方法:

php
use Native\Mobile\Facades\PushNotifications;

PushNotifications::getToken();

如果用户已批准你的应用使用推送通知并且对 FCM 的请求成功,将触发 TokenGenerated 事件。

监听此事件以接收令牌。以下是 Livewire 组件中的示例:

php
use App\Services\APIService;
use Native\Mobile\Attributes\OnNative;
use Native\Mobile\Facades\PushNotifications;
use Native\Mobile\Events\PushNotification\TokenGenerated;

class PushNotifications extends Component
{
    #[OnNative(TokenGenerated::class)]
    public function storePushToken(APIService $api, string $token)
    {
        $api->storePushToken($token);
    }
}

发送推送通知

一旦你有了令牌,你可以从服务器端应用程序使用它直接向用户设备触发推送通知。

提示

服务器端实现超出了本文档的范围。

基于 NativePHP 官方文档翻译