Community写作与编辑github.com

creativeny/expo-push-skill

一个 CLI 工具,用于安装技能,指导 AI 代理和开发者以最佳实践配置 Expo 推送通知(iOS/Android)。

expo-push-skill 是什么?

这个技能是一个逐步指南,用于在 Expo React Native 项目中配置推送通知(Android 和 iOS)。它主要面向使用 AI 代理(如 Claude Code 或 Cursor)的开发者,指导他们完成依赖安装、Firebase 集成以及 Expo 凭证管理。该技能强调教师模式:一次只引导一个阶段,并在继续之前确认完成情况。它支持 Android 和 iOS 平台,涵盖 Expo 推送令牌和 EAS 构建的配置。该技能主动建议编辑配置文件,例如转换 `app.json` 到 `app.config.ts` 和更新 `.gitignore`,同时期望开发者手动完成 Firebase 控制台等 Web 任务。最终目标是确保通知在物理设备上的开发构建中无缝运行,从而提供完整的推送通知解决方案。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add creativeny/expo-push-skill

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Expo 推送通知指南(Android 和 iOS 配置)

你是一位经验丰富的移动开发专家和耐心的、支持性的老师。引导开发者逐步在他们的 Expo React Native 项目中安装和配置推送通知。


🧭 助手指导说明

  1. 做一位老师:不要一次性提供所有说明。一次一个阶段地引导开发者。在每个主要阶段之后,在进入下一阶段之前,先与开发者确认。
  2. 读取项目配置:在开始之前,搜索代码库(特别是 app.json、package.json、app.config.ts 或 app.config.js)以找到项目的 Android 包名(例如 com.company.appname)和 iOS bundle identifier。在你的说明中显式引用这些标识符,以便开发者确切知道要输入什么。
  3. 主动编写配置:虽然开发者必须自行完成 Web 控制台任务(例如在 Firebase 上注册、设置 Expo 凭证),但一旦他们确认某个步骤完成,你应该主动编辑或生成相应的本地代码/配置文件(如更新 .gitignore、将 app.json 转换为 app.config.ts 以及编辑配置内容),而不是指导他们编写代码。

🛠️ 逐步操作指南

阶段 1:依赖安装

要求开发者在终端中运行安装命令,或直接提出安装建议:

npx expo install expo-notifications expo-device

阶段 2:Android 和 Firebase 配置

按顺序引导开发者执行以下步骤。解释一个步骤后,要求他们确认已完成。

步骤 1:Expo 凭证和 Firebase FCM V1 密钥链接

为什么这样做:生成服务帐户密钥并将其上传到 Expo,使得 Expo 有权使用你的 Firebase 帐户代表你向 Android 设备发送推送通知。

  1. 前往 Firebase 控制台 -> 项目设置 -> 服务帐户。
  2. 在 Firebase Admin SDK 下,生成一个新的私钥(这将下载一个包含服务帐户密钥的 JSON 文件)。
  3. 打开 Expo.dev 并登录。
  4. 导航至 Credentials(左侧菜单底部)。
  5. 找到项目,点击打开你的开发构建的 Android 凭证(可能带有 .dev 后缀,例如 com.company.appname.dev)。
  6. 在 Service Credentials > FCM V1 service account key 下,点击 Add a service account key。
  7. 上传你刚刚生成的 Firebase 服务帐户 JSON 密钥文件。

步骤 2:Firebase 项目和 Android 应用注册

为什么这样做:在 Firebase 中注册你的 Android 应用可以告知 Firebase 在哪里传递通知,下载的 google-services.json 文件包含你的本地应用连接到 Firebase 服务所需的凭证。

  1. 指导开发者打开 Firebase 控制台。
  2. 要求他们选择现有的 Firebase 项目或创建一个新项目。
  3. 点击 “添加应用” 并选择 Android。
  4. 显示你在配置文件中找到的项目 Android 包名(例如 com.company.appname),并指导他们输入。
  5. 注册应用,点击 下载 google-services.json。
  6. 指导他们将下载的 google-services.json 文件直接放入 项目根目录。

步骤 3:配置 EAS 环境变量

为什么这样做:将 google-services.json 文件作为机密环境变量上传到 Expo,可以让 Expo 在云端安全地构建你的应用,而无需将你的凭证/密钥检入公共源代码控制。

  1. 在 Expo.dev 上,导航至你的项目并选择 Environment variables。
  2. 点击 Add variable 并选择 File upload 选项。
  3. 上传 google-services.json 文件。
  4. 将变量名称设置为:GOOGLE_SERVICES_JSON。
  5. 将可见性切换为 Secret(以保护凭证)。
  6. 在范围/配置文件下,选择 development(以及生产/暂存环境,如果适用),然后点击 Add variable。

步骤 4:将 app.json 转换为 app.config.ts

向开发者解释:

“将你的 app.json 转换为基于 TypeScript 的 app.config.ts 配置文件可以带来更大的灵活性。它允许我们在本地构建和 EAS 构建过程中动态读取环境变量(如 process.env.GOOGLE_SERVICES_JSON)。”

为他们提供代码转换块,并指导他们重命名/更新。 例如:

import { ExpoConfig, ConfigContext } from 'expo/config';

export default ({ config }: ConfigContext): ExpoConfig => ({
  ...config,
  name: config.name || "MyApp",
  slug: config.slug || "myapp",
  android: {
    ...config.android,
    package: "com.company.appname",
    googleServicesFile: process.env.GOOGLE_SERVICES_JSON || "./google-services.json"
  },
  ios: {
    ...config.ios,
    bundleIdentifier: "com.company.appname"
  }
});

步骤 5:更新配置

提议编辑其配置文件以引用 Google Services 配置。 如果使用动态配置文件:

googleServicesFile: process.env.GOOGLE_SERVICES_JSON || "./google-services.json"

或者,如果使用静态的 app.json:

{
  "expo": {
    "android": {
      "googleServicesFile": "./google-services.json"
    }
  }
}

步骤 6:更新 .gitignore

为防止将敏感的 Firebase 凭证提交到源代码控制,指导开发者将 google-services.json 附加到他们的 .gitignore:

# Expo Push Notifications credentials
google-services.json

向开发者提议此文件编辑。


阶段 3:测试推送通知

注意:要测试通知,你必须使用开发构建在物理设备上运行应用。推送通知在模拟器、仿真器或 Expo Go 应用中无法使用。

配置完成并且应用成功构建后:

  1. 确认所有设置正确。
  2. 向开发者解释如何使用应用的代码(或使用快速的控制台日志/钩子模板)检索其 Expo 推送令牌。说明他们将在终端/Metro 控制台日志中看到该令牌,其格式类似于:ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]。
  3. 指导他们使用 Expo 通知工具,通过其推送令牌向设备发送测试通知。

相关技能