Azure Notification Hub在重新安装应用

时间:2017-02-12 20:58:48

标签: apple-push-notifications azure-notificationhub

我们在Azure Notification Hub中使用安装模型向iOS设备发送消息。 InstallationId是在移动应用程序安装到设备后首次运行时创建的。移动应用程序还从APNS请求PushToken。然后移动应用程序使用InstallationId和PushToken调用后端Web服务,后者调用NotificationHubClient.CreateOrUpdateInstallationAsync()方法在Notification Hub中注册安装。 注册后,解决方案运行良好。移动应用按预期接收推送通知。

如果我从移动设备中删除该应用并再次安装,则会出现问题。当然,在这种情况下,会生成新的InstallationId,并从APNS请求新的PushToken。 NotificationHubClient.CreateOrUpdateInstallationAsync()方法很好地注册了新安装。此外,我可以向移动应用程序发送推送消息,并按预期收到。但是在发送第一条消息并等待几分钟后,设备停止接收消息。设备不会收到任何以下推送消息。

问题不在APNS中,因为我可以通过APNS服务将推送消息直接发送到移动应用程序,移动应用程序会收到它们。但设备不会接收Azure通知中心发送的消息。

每次都不会发生此问题。有时删除和安装移动应用程序不会导致问题。

有人看到这个问题吗?怎么解决?任何解决方法?

更新 经过进一步分析后,我发现了以下结果:

  • 我们完全重新创建了通知中心,并按照推荐的方式上传了有效的沙盒证书,但问题仍然存在;

  • 问题发生时,Azure Monitor页面(在Classic Portal中)显示“无效通道错误”和“APNS过期通道错误”统计指标中的数字。

  • 我们监控了PushChannelExpired个安装字段,发现它的更改次数与预期不符。以下是示例:

    1. 状态1(重新安装应用程序之前) - 按预期进行。

InstallationId = 1, PushChannelExpired = False

  1. 状态2(删除并安装新应用程序后) - 按预期进行。
  2. InstallationId = 1, PushChannelExpired = False;

    InstallationId = 2, PushChannelExpired = False

    1. 状态3(发送第一条消息后一分钟内) - 第二次安装的频道标记为已过期,而第一次安装应标记为已过期,第二次安装应该有效。
    2. InstallationId = 1, PushChannelExpired = False;

      InstallationId = 2, PushChannelExpired = True

      1. 状态4(发送第二条消息后一分钟内) - 两个安装都标记为已过期。
      2. InstallationId = 1, PushChannelExpired = True;

        InstallationId = 2, PushChannelExpired = True

        因此,似乎问题可能与PushChannelExpired参数有关,可以传递给NotificationHubClient.CreateOrUpdateInstallationAsync()方法。现在我们总是将null传递给这个参数。

        我只找到了这个参数的一个简短描述here:“如果更改了pushChannel,则将expiredPushChannel设置为true。”

        您是否认为可以修复配置PushChannelExpired参数的问题?如果是,该参数的行为是什么?

0 个答案:

没有答案