调用SendTemplateNotificationAsync向Azure Notification Hub发消息失败咨询
Azure通知中心API推送失败排查方案
校验设备模板匹配规则
你当前使用SendTemplateNotificationAsync模板推送接口,仅对注册时绑定了对应模板的设备生效,Azure门户的测试推送走原生平台推送路径,无需匹配模板,所以两者表现不同。请确认安卓设备注册到通知中心时,模板中的占位符key和你代码中传递的title、message完全一致,包括大小写不能有偏差。排查标签过滤逻辑
如果设备注册时绑定了自定义标签,无标签参数的模板推送默认只会发给没有绑定任何标签的设备,你可以修改推送代码添加对应标签测试:// 传入设备对应的注册标签推送 var outcome = await PublicHub.SendTemplateNotificationAsync(templateParameters, "你的设备注册标签");如果确认要全量推送,需要检查设备注册逻辑是否强制绑定了标签,导致无标签的推送无法匹配到任何设备。
打印推送结果详情排查错误
你当前代码没有读取返回的推送结果明细,添加日志输出可以直接定位问题:var outcome = await PublicHub.SendTemplateNotificationAsync(templateParameters); Console.WriteLine($"跟踪ID: {outcome.TrackingId}"); Console.WriteLine($"成功推送数: {outcome.Success}"); Console.WriteLine($"推送失败数: {outcome.Failure}"); foreach (var item in outcome.Results) { Console.WriteLine($"平台: {item.ApplicationPlatform}, 错误信息: {item.Error}, 注册ID: {item.RegistrationId}"); }结果中的错误信息会直接提示是模板不匹配、无对应注册设备还是权限类问题。
替换为原生推送验证问题范围
绕过模板推送逻辑,直接调用FCM原生推送接口测试,如果推送成功即可确定问题出在模板匹配环节:// 安卓原生推送示例 var fcmPayload = "{\"notification\":{\"title\":\"测试标题\",\"body\":\"测试内容\"}}"; var outcome = await PublicHub.SendFcmNativeNotificationAsync(fcmPayload);核对访问策略归属
确认你使用的FullAccess连接字符串属于当前测试的通知中心实例,避免混淆不同资源组、不同环境的通知中心资源。
内容的提问来源于stack exchange,提问作者WarHorse
相关产品推荐
相关产品推荐

