App推送实现

165 阅读2分钟

通知类型

本地通知以及远程推送通知

本地通知是由应用本身在设备上触发的通知,不需要依赖外部服务器。它们通常用于应用内部的提醒、定时任务或用户交互。

远程通知:设备获取一个唯一的 Token,服务器使用这个 Token 向设备发送通知

配置设置

安卓配置:

安卓:配置 Firebase Cloud Messaging (FCM) 凭证

苹果:配置 Apple Push Notification Service (APNs) 凭证

配置参考下面的视频和文档一步步来

安卓使用的谷歌服务,要在有谷歌服务的手机上操作,使用远程:

teamviewer 密码:A1234678@9@

分析需求

  • 营销通知:在远程营销控制台编辑可以发送消息推送到特定用户上面,用户点击这个通知的逻辑应该怎么设计?

  • 生歌成功发送通知

expo远程服务推送消息测试链接:expo.dev/notificatio…

需求设计

表设计:设备表,一个用户对应多个设备

CREATE TABLE devices (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT NOT NULL,                    -- 用户ID
    device_token VARCHAR(255) NOT NULL,         -- 设备推送令牌
    device_type VARCHAR(50),                    -- 设备类型(可选:iOS/Android)
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_user_id (user_id),               -- 用户ID索引
    INDEX idx_device_token (device_token)      -- 设备令牌索引
);

保存用户-设备的接口,用户入参是设备的token,然后根据current_user: dict = Depends(get_current_user),拿到用的id,进行保存

在营销后台可以给所有用户发通知消息,需要给所有用户的所有设备id发送消息,所以这个是一个后端接口:发送全体消息接口

在营销后台可以给特定用户发送通知消息,即传入用户id,后端根据用户id查出对应的设备id,然后给所有的这些设备id发送消息,这是一个后端接口:给特定用户发送消息

其他

角标问题的处理

用户登录后,将设备id和用户id保存到对应的设备表中,一个设备对应一个用户 参考文档和视频: