Context Hub 精选文档解读:Azure Notification Hubs JavaScript SDK(@azure/notification-hubs 2.0.2)接入实战
【免费下载链接】context-hub项目地址https://gitcode.com/gh_mirrors/co/context-hub点击查看免费下载本指南以 content/azure/docs/notification-hubs/javascript/DOC.md 为核心系统讲解如何用azure/notification-hubs2.0.2 完成 Azure 通知中心的>npm install azure/notification-hubs2.0.2该包使用 Notification Hubs 的连接字符串connection string进行认证而不是 Microsoft Entra 凭据。因此本文展示的工作流不需要额外引入azure/identity。如果你看到某些旧示例同时引入了azure/identity和azure/notification-hubs请确认它们是否真的用于其他认证场景本 SDK 的数据面调用以连接字符串为准。前置条件与初始化配置在代码能够发送通知或注册设备之前你必须在 Azure 侧先准备好以下资源一个 Azure Notification Hubs 命名空间namespace与通知中心hub——这是资源级前提需在 Azure 订阅中创建在 hub 上配置好你将使用的推送平台凭据例如 APNS 或 FCM——SDK 无法替你在 hub 侧补齐平台配置这是发送成功的硬性前置一个权限与代码工作内容匹配的 hub 连接字符串——连接字符串中的 SharedAccessKeyName 对应的策略policy决定你能执行哪些操作。推荐通过环境变量注入这些敏感配置避免硬编码export AZURE_NOTIFICATION_HUB_CONNECTION_STRINGEndpointsb://namespace.servicebus.windows.net/;SharedAccessKeyNamepolicy;SharedAccessKeykey export AZURE_NOTIFICATION_HUB_NAMEmy-notification-hub # Example device tokens for app-side registration workflows export APNS_DEVICE_TOKENios-device-token export FCM_DEVICE_TOKENandroid-device-token三个关键概念务必区分清楚连接字符串connection string认证 SDK 调用本身告诉 SDK 如何向 Notification Hubs 服务认证hub 名称hub name告诉 SDK 要操作哪个通知中心设备令牌 / 推送通道device token / push channel在 APNS、FCM、WNS 等推送平台内部标识目标设备。客户端初始化createClientContext创建一个共享的客户端上下文并在相关操作中复用而不是每次调用都重新构造import { createClientContext } from azure/notification-hubs; const connectionString process.env.AZURE_NOTIFICATION_HUB_CONNECTION_STRING; const hubName process.env.AZURE_NOTIFICATION_HUB_NAME; if (!connectionString || !hubName) { throw new Error( AZURE_NOTIFICATION_HUB_CONNECTION_STRING and AZURE_NOTIFICATION_HUB_NAME are required, ); } export const context createClientContext(connectionString, hubName);createClientContext(connectionString, hubName)接收连接字符串与 hub 名称两个参数返回一个可复用的上下文对象。安装管理、注册和发送操作都应共享同一个 context这既减少了重复初始化开销也避免连接字符串在代码中散落多处。核心工作流一管理安装Installation对于新代码优先使用 Installation安装模型作为设备注册方式。一个 Installation 将以下信息绑定在一起你应用的安装标识符installation identifier平台推送通道push channel之后用于定向分发的标签tags。这种一体式记录便于在设备令牌变化时原地更新upsert而无需在应用逻辑中维护令牌与标签的映射。创建或更新安装createOrUpdateInstallation无论设备首次注册还是其推送令牌发生轮换都应调用createOrUpdateInstallation(...)import { createClientContext, createOrUpdateInstallation, } from azure/notification-hubs; const context createClientContext( process.env.AZURE_NOTIFICATION_HUB_CONNECTION_STRING, process.env.AZURE_NOTIFICATION_HUB_NAME, ); const installation { installationId: user-42-ios, platform: apns, pushChannel: process.env.APNS_DEVICE_TOKEN, tags: [user:42, tenant:acme, ios], }; await createOrUpdateInstallation(context, installation);该对象中关键字段的语义如下字段作用installationId应用安装的稳定标识符建议使用与业务绑定的稳定 ID如user-42-ios用于后续读取、更新与删除platform该设备所属的推送平台如apns、fcm等pushChannel当前从推送平台获取的设备令牌或通道标识如 APNS device tokentags可选的定向标签后续可在tagExpression中引用createOrUpdateInstallation是幂等的 upsert 语义同一installationId重复调用即更新这正是设备令牌变化时原地更新的基础。读取或删除安装getInstallation / deleteInstallationimport { createClientContext, deleteInstallation, getInstallation, } from azure/notification-hubs; const context createClientContext( process.env.AZURE_NOTIFICATION_HUB_CONNECTION_STRING, process.env.AZURE_NOTIFICATION_HUB_NAME, ); const installationId user-42-ios; const installation await getInstallation(context, installationId); console.log(installation.installationId, installation.tags); await deleteInstallation(context, installationId);在以下场景应删除安装用户永久注销、用户关闭通知权限、或你确定该应用安装不应再接收推送时。删除后该设备将不再出现在任何发送目标中。核心工作流二发送通知sendNotificationsendNotification(...)通过 Notification Hubs 发送平台载荷如果不提供任何定向选项通知将以**广播broadcast**方式发送给 hub 中所有匹配平台的注册设备如果提供tagExpression通知将变为**定向targeted**发送仅投递给满足标签表达式的设备。注意一个关键事实body内的载荷必须与你发送的目标推送平台匹配。Notification Hubs 只负责路由载荷但APNS 仍然期望 APNS JSON 格式FCM 仍然期望 FCM JSON 格式SDK 不会替你转换平台载荷。向标签表达式发送 APNS 通知import { createAppleNotification, createClientContext, sendNotification, } from azure/notification-hubs; const context createClientContext( process.env.AZURE_NOTIFICATION_HUB_CONNECTION_STRING, process.env.AZURE_NOTIFICATION_HUB_NAME, ); const notification createAppleNotification({ body: JSON.stringify({ aps: { alert: { title: Order shipped, body: Tap to track package 12345, }, sound: default, }, orderId: 12345, }), }); await sendNotification(context, notification, { tagExpression: user:42, });示例中createAppleNotification({ body })是 APNS 平台的载荷构造器body内是完整的 APNS JSONaps键及其alert、sound子字段同时可携带自定义业务字段如orderIdsendNotification(context, notification, { tagExpression: user:42 })将通知仅发送给打了user:42标签的设备。发送 FCM v1 通知import { createClientContext, createFcmV1Notification, sendNotification, } from azure/notification-hubs; const context createClientContext( process.env.AZURE_NOTIFICATION_HUB_CONNECTION_STRING, process.env.AZURE_NOTIFICATION_HUB_NAME, ); const notification createFcmV1Notification({ body: JSON.stringify({ message: { notification: { title: Order shipped, body: Tap to track package 12345, }, data: { orderId: 12345, }, }, }), }); await sendNotification(context, notification, { tagExpression: tenant:acme android, });FCM v1 使用的是message.notificationmessage.data结构区别于旧版 FCM 的notification顶层结构createFcmV1Notification正是面向该结构的构造器。示例中的tagExpression: tenant:acme android演示了复合标签表达式同时满足租户标签tenant:acme与平台标签android的设备才会收到推送。标签Tags与定向分发标签是定向投递的核心手段——它让你在应用逻辑中无需维护原始推送令牌即可定位设备子集。典型标签模式包括按用户user:42按租户tenant:acme按平台ios、android按功能或偏好marketing-opt-in标签配合tagExpression支持布尔组合如tenant:acme android。使用标签时保持标签稳定且语义明确当设备令牌轮换时应在原安装上原地更新而不是用新的installationId创建新安装——除非应用安装本身发生了变化例如用户卸载重装产生的新安装实例。Registrations注册与 Installations安装如何选择Notification Hubs 同时支持Legacy registrations传统注册模型较旧的一对一注册记录Installation安装模型较新的推荐模型将设备身份、标签与模板元数据绑定到单条可 upsert 的记录。对于新的 JavaScript 集成优先使用 Installation除非你正在维护已有的基于 registration 的旧流程。这一选择的核心收益正如前文所述当推送通道变化时设备身份、标签和模板元数据都绑定在同一条 installation 记录上一次createOrUpdateInstallation即可完成原地更新避免令牌变了、标签丢了的不一致问题。实战注意点Practical Notes将 hub 连接字符串保存在服务端密钥存储或环境变量中绝不能放进浏览器代码或移动端应用包内在发送之前务必先在 hub 上配置好 APNS、FCM、WNS 等平台凭据——SDK 无法弥补 hub 侧平台配置缺失的问题在相关操作间复用同一个createClientContext(...)的结果每当底层设备令牌变化时更新对应的 installation尽可能使用范围受限的 SAS 策略如仅Listen/Send权限而不是宽泛的管理凭据。这一点与管理面文档 content/azure/docs/mgmt-notificationhubs/python/DOC.md 中的建议一致面向设备或应用侧的代码权限越窄越好。常见陷阱Common Pitfalls把这个包当作 Azure Resource Manager SDK 去预置命名空间或 hub——这是数据面/管理面职责混淆的典型错误把 APNS 载荷发给 Android 设备、或把 FCM 载荷发给 Apple 设备——平台载荷格式必须匹配目标平台在调用sendNotification(...)之前忘记在通知中心配置平台凭据在公开的前端代码中暴露 Notification Hubs 连接字符串每次设备令牌变化都创建新的 installation ID而不是更新现有安装。2.0.2 版本注意事项本指南针对azure/notification-hubs2.0.2新应用代码应围绕createClientContext(...)、安装管理和平台专属通知构造器如createAppleNotification、createFcmV1Notification展开如果你正在维护基于旧 registration 的示例在把它们搬进新代码之前务必仔细映射到当前顶层 APItop-level operations——旧示例中的函数签名与行为可能已发生变化。如何在本仓库中获取与检索该文档本仓库是 Context Hub——为编码 Agent 提供精选、带版本号、按语言区分的文档集合。本文对应的原始文档位于 content/azure/docs/notification-hubs/javascript/DOC.md其 frontmatter 声明了name: notification-hubs、languages: javascript、versions: 2.0.2、source: maintainer标签为azure,notification-hubs,push-notifications,javascript,apns,fcm,installations。按照 docs/content-guide.md 描述的目录规范author/docs/entry-name/language/DOC.md该文档对应内容 ID 为azure/notification-hubs的 JavaScript 语言变体。Agent 或开发者可使用chubCLI 拉取它chub get azure/notification-hubs --lang js也可用--version 2.0.2锁定文档对应的 SDK 版本。完整的 CLI 用法--lang、--version、--full、--file等参见 docs/cli-reference.md。管理面预置命名空间、hub、凭据的内容则由 content/azure/docs/mgmt-notificationhubs/python/DOC.md 覆盖。官方资料来源原始文档在Official Sources中列出了以下官方参考均指向 Azure 官方文档本文不展开外部链接Microsoft Learn 的azure/notification-hubsAPI 参考根页面azure-node-latest 视图Microsoft Learn 的azure/notification-hubs包概览页面Azure Notification Hubs 安装管理概念文档推送注册管理Azure Notification Hubs 模板概览文档跨平台推送消息npm 上的azure/notification-hubs包页面建议在实现复杂场景如模板推送、跨平台消息抽象时结合这些官方资料进一步查阅。赞分享【免费下载链接】context-hub项目地址https://gitcode.com/gh_mirrors/co/context-hub点击查看免费下载相关推荐Context Hub 精选文档Azure Speech SDK for Pythonazure-cognitiveservices-speech完整实战指南Context Hub 精选文档Azure Speech SDK for Pythonazure cognitiveservices speech完整实战POLARIS 是什么开源后训练配方如何让4B小模型在AIME上超越Claude-4-OpusPOLARIS 是什么开源后训练配方如何让4B小模型在AIME上超越Claude 4 Opus 2025年开源AI圈迎来一个令人震撼的结果一个仅有 40亿Context Hub 精选Azure Machine Learning Python SDKazure-ai-ml 1.31.0完整实战指南Context Hub 精选Azure Machine Learning Python SDKazure ai ml 1.31.0完整实战指南 导读 本文上一篇终极指南如何一键完成Chrome全页截图免费工具详解下一篇nunif iw3 立体视差生成加速实验POC从 apply_stereo_divergence_polylines 到 grid_sample 与蒸馏模型创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考