推送通知
概述
NativePHP for Mobile 使用 Firebase Cloud Messaging (FCM) 向 iOS 和 Android 设备上的用户发送推送通知。
要向用户发送推送通知,你的应用必须请求一个令牌。然后该令牌必须安全存储(理想情况下通过安全 API 存储在服务器应用程序中)并与该用户/设备关联。
请求推送通知将触发一个警报,让用户批准或拒绝你的请求。如果他们批准,你的应用将收到令牌。
当你想向该用户发送通知时,你将此令牌连同请求一起传递给 FCM 服务,Firebase 负责将消息发送到正确的设备。
提示
FCM 在幕后自动通过 Apple 的推送通知服务 (APNS) 路由通知 - 你不需要单独配置 APNS。你只需要配置 Firebase 以访问你的 APNS 账号。
Firebase
- 创建一个 Firebase 账号
- 创建一个项目
- 下载
google-services.json文件(用于 Android)和GoogleService-Info.plist文件(用于 iOS) - 这些文件包含你的应用配置,Firebase SDK 使用它们为每个设备检索令牌
将这些文件放在应用程序的根目录中,NativePHP 将自动为每个平台适当地设置它们。
你可以忽略 Firebase 的进一步设置说明,因为 NativePHP 已经处理好了这些。
服务账号
要从服务器端应用程序发送推送通知,你还需要一个 Firebase 服务账号:
- 进入 Firebase Console → Project Settings → Service Accounts
- 点击"Generate New Private Key"下载服务账号 JSON 文件
- 将此文件保存为
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);
}
}发送推送通知
一旦你有了令牌,你可以从服务器端应用程序使用它直接向用户设备触发推送通知。
提示
服务器端实现超出了本文档的范围。