gpt4 book ai didi

javascript - $InstallationId 标记的通知中心推送问题

转载 作者:行者123 更新时间:2023-11-28 04:04:56 25 4
gpt4 key购买 nike

我正在使用 azure-mobile-apps-node 通过 GCM 注册和发送推送通知。我使用 Push.patchInstallation 注册通知客户端,如下所示:

var updateOperation = [{
'op': 'replace',
'Path': '/tags',
'Value': tags.join()
}];

push.patchInstallation(installationId, updateOperation, function (error, res) { /*...*/ };

它运行良好,查看通知中心注册,我明白

<GcmRegistrationDescription xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ETag>13</ETag>
<ExpirationTime>9999-12-31T23:59:59.9999999Z</ExpirationTime>
<RegistrationId>1234568266548022282-123456473823493176-1</RegistrationId>
<Tags>$InstallationId:{SOME_GUID},location_1,location_2,location_3,userId:myaccount@domain.com</Tags>
<GcmRegistrationId>SOME_ID</GcmRegistrationId>
</GcmRegistrationDescription>

但是,如果我尝试使用标签“location_N”推送通知,它永远不会起作用。还尝试过注册到特定 location_N 的多个设备,但没有一个设备获得推送更新。

我确定这是由于 azureMobile 应用 patchInstallation 作为第一个标签注入(inject)的 $InstallationId:{SOME_GUID} 造成的。

  • 如果我使用 REST API 并将注册标签修改为 location_N,并将推送发送到该标签,则效果很好。
  • 如果我将推送发送到标记$InstallationId:{SOME_GUID},推送将发送到该特定设备。
  • 如果我使用标签$InstallationId:{SOME_GUID} || location_N,只有具有安装 ID 的设备才会收到推送通知。

这只是使用安装方法时的限制,还是一个错误,或者我完全误解了什么?

编辑 2017 年 10 月 19 日:我修改了代码以使用注册模型,即

notificationHubService.gcm.createOrUpdateNativeRegistration(registrationId, installation.pushChannel, tags.join(), function(error, res) { /*...*/ }

它不会将 $InstallationId 注入(inject)标签,而是创建两个具有相同 GcmRegistrationId 的注册,但具有不同的标签,其中一个具有 $InstallationId

<RegistrationId>REGID1</RegistrationId>
<Tags>$InstallationId:{SOMEGUID},_UserId:sid:SOMESID</Tags>
<GcmRegistrationId>GCMREGID</GcmRegistrationId>

另一个只包含我在createOrUpdateNativeRegistration

中定义的标签
<RegistrationId>REGID2</RegistrationId>
<Tags>location_1,location_2,location_3</Tags>
<GcmRegistrationId>GCMREGID</GcmRegistrationId>

这样,我就可以使用 location_N 标签将推送消息发送到我的测试设备(也可以使用 $InstallationId 发送到特定设备),因此这两个注册都有效。我不知道为什么它会创建两个注册,因为我在任何时候都没有对 notificationHubService.createRegistrationId 进行任何调用,只是对 createOrUpdateNativeRegistration 进行了一次调用。

最佳答案

这是一个有效的场景。您应该能够使用 location_N 标签推送通知。您能否尝试在 Portal.azure.com 中进行“测试发送”来验证是否已选择设备进行推送通知?

关于javascript - $InstallationId 标记的通知中心推送问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46787973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com