推送通知未注册请求的标签

Posted

技术标签:

【中文标题】推送通知未注册请求的标签【英文标题】:Push Notification not registering with requested tag 【发布时间】:2017-07-06 07:39:19 【问题描述】:

我正在关注 Azure 移动服务电子书以设置推送通知:

https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter5/android/#registering-for-push-notifications

但是在注册标签时遇到问题:

            var registrationId = GcmClient.GetRegistrationId(RootView);
            //var push = client.GetPush();
            //await push.RegisterAsync(registrationId);

            var installation = new DeviceInstallation
            
                InstallationId = client.InstallationId,
                Platform = "gcm",
                PushChannel = registrationId
            ;
            // Set up tags to request
            installation.Tags.Add("topic:Sports");
            // Set up templates to request
            PushTemplate genericTemplate = new PushTemplate
            
                Body = @"""data"":""message"":""$(message)"""
            ;
            installation.Templates.Add("genericTemplate", genericTemplate);

            // Register with NH
            var response = await client.InvokeApiAsync<DeviceInstallation, DeviceInstallation>(
                $"/push/installations/client.InstallationId",
                installation,
                HttpMethod.Put,
                new Dictionary<string, string>());

我已确保标记在 Azure 门户中列为“客户端请求”标记,但我的注册仍然显示在设备注册中没有标记:

任何想法我做错了什么?

【问题讨论】:

我没有发现你的代码有什么问题。我建议你在代码中添加一个断点来检查设备和主题注册代码是否被执行。另请检查添加到您的门户的标签是“主题:体育”而不是“体育”。 @Amor-MSFT 请参阅下面的答案。电子书已经过时,现在出错了。非常沮丧:( 【参考方案1】:

这本电子书似乎已经过时了,并且正在处理旧版本的移动服务而不是 Azure App Service 移动应用程序(说真的,当他们被命名时,任何人应该如何在谷歌上搜索不同的版本这么相似?!)

https://github.com/Azure-Samples/app-service-mobile-dotnet-backend-quickstart/blob/master/README.md#push-to-users

(重点是我的)

当移动应用使用 Azure 应用服务移动应用后端注册推送通知时,有两个默认标签可以添加到 Azure 通知中心的注册中:安装 ID,对于给定的应用是唯一的设备和用户 ID,仅在用户之前已通过身份验证时添加。 客户端提供的任何其他标签都会被忽略,这是设计使然。 (请注意,这与移动服务不同,在移动服务中,客户端可以提供任何标签,并且在后端的注册过程中有挂钩来验证传入注册的标签。)

由于客户端无法添加标签,同时推送通知注册过程中没有服务端挂钩,因此客户端需要为给定的注册添加新标签。

所以它不起作用的原因是因为电子书中的代码已经过时并且不适用于最新版本。

我必须创建一个 Api 控制器以允许使用上述链接中的代码注册标签。然后客户端应用程序必须在调用我的问题示例代码中的两个注释方法之后调用此端点。

【讨论】:

以上是关于推送通知未注册请求的标签的主要内容,如果未能解决你的问题,请参考以下文章

未请求推送通知权限

Cordova 推送通知 - 注册标签

FCM 推送通知问题:“错误”:“未注册”

推送示例android gcm,已注册设备但未收到推送通知

Firebase 推送通知 iOS:未注册。为啥?

解析注册推送通知 - 如果用户未登录则崩溃