更新记录

1.0.0(2026-03-26) 下载此版本

初版,支持 FCM 初始化、Token 获取、消息缓存拉取、Android13 通知权限申请


平台兼容性

Lak-FCM 使用说明

Lak-FCM 是一个 uni-app Android 原生插件,用于接入 Firebase Cloud Messaging(FCM),不依赖 uni-push。

1. 支持平台

  • uni-app(app-vue / app-nvue)
  • Android 5.0+(API 21+)
  • iOS:暂不支持(需单独实现 APNs + FCM iOS)

2. 前置准备

  1. 在 Firebase 控制台创建 Android 应用(包名需与打包包名一致)
  2. 获取 google-services.json
  3. 在云打包/插件配置中按平台要求提供该文件
  4. Android 13+ 需要通知权限(POST_NOTIFICATIONS

3. 安装插件

  1. 插件市场安装 Lak-FCM
  2. 项目中通过 uni.requireNativePlugin('Lak-FCM') 调用
  3. 推荐直接使用项目封装:@/common/fcm.js

4. API 列表

init({ autoRequestPermission })

初始化 FCM。

  • 入参:
    • autoRequestPermission(boolean,默认 true):是否自动请求 Android 13+ 通知权限
  • 返回:
    • { code, message, token }

getToken()

获取 FCM Token(优先返回本地缓存)。

  • 返回:
    • { code, message, token, fromCache }

deleteToken()

删除当前 FCM Token。

  • 返回:
    • { code, message }

pullMessages({ clear })

拉取插件缓存的消息(来源:onMessageReceived)。

  • 入参:
    • clear(boolean,默认 true):拉取后是否清空缓存
  • 返回:
    • { code, message, messages, clear }

requestNotificationPermission()

手动请求 Android 13+ 通知权限。

  • 返回:
    • { code, message, granted }

5. JS 调用示例

import {
  fcmInit,
  fcmGetToken,
  fcmPullMessages,
  fcmRequestNotificationPermission
} from '@/common/fcm.js'

async function startFCM() {
  await fcmRequestNotificationPermission()

  const initRes = await fcmInit(true)
  console.log('initRes', initRes)

  const tokenRes = await fcmGetToken()
  console.log('token', tokenRes.token)
  // TODO: 上报 token 到业务后端

  const msgRes = await fcmPullMessages(true)
  console.log('messages', msgRes.messages || [])
}

6. 在线/离线消息建议

  • onLaunch:初始化并拉取一次离线消息
  • onShow:立即拉一次 + 启动轮询拉取(如 3 秒一次)
  • onHide:停止轮询

建议将消息统一抛到业务层:

uni.$emit('fcm-message', item)

页面监听:

uni.$on('fcm-message', (msg) => {
  // 业务处理
})

7. 常见问题

7.1 拿不到 Token

  • 检查 google-services.json 是否匹配包名
  • 检查设备网络与 Google 服务可用性
  • 确认 Firebase 项目配置完整

7.2 收不到消息

  • 确认服务端推送目标 token 正确
  • 前后台消息类型(notification/data)行为不同
  • Android 13+ 是否授予通知权限

7.3 code = -1 插件不可用

  • 检查插件 ID 是否与调用一致:Lak-FCM
  • 检查插件是否成功安装到项目
  • 重新云打包并安装最新包

8. 隐私与合规

  • 插件会读取并返回 FCM Token
  • 插件会缓存收到的消息内容供 JS 层拉取
  • 生产环境请勿打印完整 Token / 敏感消息正文

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.POST_NOTIFICATIONS(Android 13+,用于展示通知) android.permission.WAKE_LOCK(用于消息处理期间保持唤醒,避免被系统立即休眠中断) android.permission.INTERNET(FCM 网络通信必需,通常应用已默认具备)

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

采集的数据 FCM Token(设备推送标识) FCM 下发的消息内容(如 title、body、data 字段)仅用于应用内消息分发处理 数据去向 插件本身不内置任何第三方业务服务器地址,不主动将数据上传到插件作者服务器 插件仅与 Firebase Cloud Messaging 服务通信(Google 官方服务)以完成推送能力 若业务方在应用层将 Token/消息上报到自有后端,属于业务方行为,不属于插件内置上报 数据用途 用于实现消息推送(设备标识、消息接收、前后台消息处理) 用于应用端展示通知或业务消息分发 本地存储说明 插件会在本地缓存最近消息与 Token(仅用于应用读取和消息处理) 不用于广告、画像或与推送无关的数据用途

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

不包含广告。 本插件不集成任何广告 SDK,不展示广告内容,不进行广告投放或广告行为统计。

许可协议

MIT协议

暂无用户评论。