这是我第一次使用Azure通知中心,而且我在使用我的应用程序时遇到了一些问题。
我坚持使用的部分(目前)正在使用通知中心注册我的设备。我使用后端方法进行注册......也就是说,我创建了一个Installation对象,并使用CreateOrUpdateInstallationAsync方法通过我的Web API注册设备。我只是在这个阶段进行测试,所以我通过Postman用虚拟数据点击我的API端点。
当我单步执行代码时,执行CreateOrUpdateInstallationAsync时出现以下错误...
远程服务器返回错误:(404)Not Found。实体没有 exist.TrackingId:203cba37-007d-4dcb-AE25-ced33fa012aa_G1,时间戳:2018年2月4日 下午10:24:02
我已经通过调用GetAllRegistrationsAsync来测试我是否正确连接到Notification Hub。这将返回一个空列表(预期)并且没有错误...所以我的端点设置正确。我想知道我的虚拟数据是否有问题?对于安装ID,我刚刚创建了一个随机GUID(Guid.NewGuid)。设备ID和推送通知句柄是随机数字和字母。我正在为Android平台(NotificationPlatform.Gcm)测试这个。
之前有没有人见过这个错误,知道这意味着什么?我是否能够将随机数据用于测试目的(我只对在此阶段注册设备感兴趣)或者我是否需要合法数据(真实设备ID等)?
提前致谢。
答案 0 :(得分:1)
CreateOrUpdateInstallationAsync
方法实质上会调用REST API Create or Overwrite an Installation。当您使用安装从自定义后端注册通知中心时,核心代码如下所示:
NotificationHubClient hubclient = NotificationHubClient.CreateClientFromConnectionString(listenConnString, hubName);
await hubclient.CreateOrUpdateInstallationAsync(installation);
注意:您可以安装Microsoft.Azure.NotificationHubs软件包以进行后端操作。
为了更简单的方法,我刚刚创建了一个控制台应用程序并按如下方式测试此操作:
注意:我刚刚创建了一个新的Azure通知中心,但没有设置任何通知设置。我将GUID设置为InstallationId
,将随机字符串设置为PushChannel
,其余操作可以按预期工作。
我可以按如下方式检索之前添加的注册:
之前有没有人见过这个错误,知道这意味着什么?我是否能够将随机数据用于测试目的(我只对在此阶段注册设备感兴趣)或者我是否需要合法数据(真实设备ID等)?
该操作可能对我有用,我建议您调试应用程序并利用fiddler捕获网络跟踪以缩小此问题。此外,您可以关注Registration management以获取有关使用azure通知中心注册设备的更多详细信息。
答案 1 :(得分:0)
好的,事实证明,在使用NotificationHubClient.CreateClientFromConnectionString
实例化NotificationHub对象时,我使用了Hub Name的错误值。我使用的是名称空间,而不是集线器名称(在Azure门户的“概述”选项卡上可见)。