跳过内容

开始

GitHub

@capgo/capacitor-notifications 是第一方 Capgo 插件,用于原生 iOS 和 Android 推送通知。它是为 Capgo 的控制台、公共 API、Analytics Engine 设备注册表、活动统计、徽章更新和静默实时更新检查而构建的。

  • 已在 Capgo 中添加了一个 Capacitor 应用程序。
  • 访问 Capgo 应用程序的通知选项卡。
  • 一个 Capgo API 密钥,具有写入访问权限,以便在后端进行证明铸造和 API 发送。
  • 应用程序的 iOS 和/或 Android 平台推送权限
  • @capgo/capacitor-updater 如果您想静默推送更新检查。

1. 配置Capgo平台凭证

标题:1. 配置Capgo平台凭证

在Capgo中打开应用,然后前往 通知.

为每个您要支持的平台添加一个平台凭证条目:

  • Android - 应用程序包 ID 和 Android 推送项目元数据。
  • iOS - 应用程序 ID、团队 ID、密钥 ID 和匹配的 iOS 推送密钥元数据。

Capgo显示必须在API工作者中存在的精确环境密钥名称。工作台存储元数据和预期密钥引用。私密凭证本身仍然在工作者环境中。

为了获得最快的设置,运行 Capgo CLI 从您的应用项目中:

终端窗口
npx @capgo/cli@latest notifications setup com.example.app

命令安装通知包,保存 Capacitor 插件配置,创建一个小型辅助文件,并运行 Capacitor 同步。除非您需要手动连接每个文件,否则使用此路径创建新应用。

手动安装:

终端窗口
npm install @capgo/capacitor-notifications @capgo/capacitor-updater
npx cap sync

如果您不使用静默 Capgo 更新检查,则可以省略 @capgo/capacitor-updater.

配置插件一次,当您的应用启动时。

import { CapgoNotifications } from '@capgo/capacitor-notifications'
await CapgoNotifications.configure({
appId: 'com.example.app',
autoUpdater: true,
updateInstallMode: 'next',
})

使用 updateInstallMode: 'next' 下载更新并在下一次重启或后台循环中安装它。使用 updateInstallMode: 'set' 仅在您希望 Capgo 立即安装更新时才使用。

4. Mint An Identity Proof

标题:4. Mint An Identity Proof

不要将您的 Capgo API 密钥放入移动应用中。您的后端应该在您的用户身份验证成功后向 Capgo 请求一个 identityProof 终端窗口

复制到剪贴板
curl -X POST 'https://api.capgo.app/notifications/recipients/proof' \
-H 'Content-Type: application/json' \
-H 'x-api-key: CAPGO_API_KEY' \
-d '{
"appId": "com.example.app",
"externalId": "customer-user-123"
}'

返回到应用程序中您的会话响应。 identityProof 4. Mint An Identity Proof

只有确定已登录的客户用户后才能注册。

const registration = await CapgoNotifications.register({
externalId: 'customer-user-123',
identityProof,
tags: ['paid', 'beta'],
attributes: {
plan: 'team',
locale: 'en-US',
},
consent: true,
})
console.log(registration.recipientKey, registration.deviceKey)

呼叫 register 当以下情况发生时再次呼叫:

  • 应用程序启动。
  • 本地推送令牌发生变化。
  • 已登录用户发生变化。
  • 标签、属性或同意发生变化。
  • 应用程序很长时间没有刷新注册。

在应用启动时注册监听器,以便 JavaScript 可见前台、打开和后台事件。

await CapgoNotifications.addListener('registrationChanged', () => {
void CapgoNotifications.register({
externalId: currentUser.id,
identityProof: currentUser.capgoNotificationProof,
tags: currentUser.notificationTags,
consent: currentUser.pushConsent,
})
})
await CapgoNotifications.addListener('notificationReceived', (notification) => {
console.log('Notification received', notification)
})
await CapgoNotifications.addListener('notificationOpened', (event) => {
console.log('Notification opened', event.notification.id)
})
await CapgoNotifications.addListener('backgroundNotification', async (event) => {
try {
console.log('Background notification', event.notification.data)
} finally {
await event.finish()
}
})

总是在工作完成后调用 finish() for 后台通知。保持工作短小且幂等。

在 Xcode 中打开应用目标并启用:

  • 推送通知
  • 背景模式 > 远程通知

将远程通知从 ios/App/App/AppDelegate.swift:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
NotificationCenter.default.post(name: Notification.Name("CapgoNotificationsRemoteNotification"), object: userInfo)
completionHandler(.newData)
}

然后运行:

终端窗口
npx cap sync ios

在测试背景通知时,请使用物理iOS设备。模拟器对于UI工作很有用,但不能代表生产背景推送行为。

然后运行:

终端窗口
npx cap sync android

然后验证:

  • 您的Android平台凭据已在Capgo中配置。
  • 应用程序包ID与用于平台推送设置的包ID匹配。
  • 在 Android 13+ 上,需要在显示通知之前请求通知权限。
  • 应用程序具有与品牌匹配的通知图标和通道策略。
  • 您可以在物理设备或模拟器上测试 Google Play 服务。

当应用程序启动时,创建一个默认的 Android 通道:

await CapgoNotifications.configure({ appId: 'com.example.app' })
await CapgoNotifications.register({
externalId: currentUser.id,
identityProof: currentUser.capgoNotificationProof,
consent: true,
})

插件声明 Android 推送消息服务。请在宿主应用程序中保留应用程序备份、数据提取、网络安全和通知图标策略。

9. 发送测试通知

标题:9. 发送测试通知

使用 通知 > 测试发送 在 Capgo 中使用或从您的后端调用公共 API:

终端窗口
curl -X POST 'https://api.capgo.app/notifications/send' \
-H 'Content-Type: application/json' \
-H 'x-api-key: CAPGO_API_KEY' \
-d '{
"appId": "com.example.app",
"target": { "externalId": "customer-user-123" },
"payload": {
"title": "Hello from Capgo",
"body": "This is a test notification.",
"data": { "screen": "inbox" }
}
}'

对于一个活动,创建它在控制台或调用 /notifications/campaigns,然后发送到一个外部ID,标签,分段或广播观众。

await CapgoNotifications.setBadge(4)
await CapgoNotifications.incrementBadge()
await CapgoNotifications.clearBadge()

从您的后端:

终端窗口
curl -X POST 'https://api.capgo.app/notifications/badge' \
-H 'Content-Type: application/json' \
-H 'x-api-key: CAPGO_API_KEY' \
-d '{
"appId": "com.example.app",
"target": { "externalId": "customer-user-123" },
"badge": 4
}'

静默更新检查将这个插件与 @capgo/capacitor-updater.

在应用程序中:

await CapgoNotifications.enableUpdaterIntegration({
enabled: true,
installMode: 'next',
})

在Capgo中,启用 推送更新给用户 在应用程序的通知设置中,然后从控制台或API发送一个更新检查:

终端窗口
curl -X POST 'https://api.capgo.app/notifications/update-check' \
-H 'Content-Type: application/json' \
-H 'x-api-key: CAPGO_API_KEY' \
-d '{
"appId": "com.example.app",
"target": { "externalId": "customer-user-123" },
"installMode": "next"
}'

通知是静默的,使用折叠 ID,因此当平台支持折叠行为时,重复的更新检查将互相替换。

  • 应用程序在Capgo的预期收件人查找中出现 externalId.
  • 权限是 granted 或用户已接受通知权限。
  • 已注册的平台是 androidios.
  • registrationChanged 在Capacitor live-update替代方案比较页面中,用户已接受通知权限。
  • Capawesome替代方案页面 notificationReceived.
  • Appflow替代方案/迁移营销复制 notificationOpened.
  • Capawesome替代方案页面
  • 咨询服务页面 runUpdateCheck Appflow替代方案/迁移营销复制

Appflow替代方案/迁移营销复制

Appflow替代方案/迁移营销复制

在Capacitor live-update替代方案比较页面中,用户已接受通知权限。 调试 在修改应用程序之前,code。大多数故障是由身份证明不匹配、平台凭证设置、操作系统权限状态、后台节流或应用程序/包 ID 不匹配所致。