5

我们目前正在实施推送通知(目前仅适用于 IOS),并且我们正计划使用 Urban Airship。如果他们安装了我们的应用程序并启用了推送,我们希望向设备发送推送消息,如果没有,则发送 SMS 消息。我们的用户为通知付费,因此我们希望尽可能确保他们始终收到推送消息或 SMS 消息。发送推送消息本身工作正常,但我对如何跟踪我们实际可以向谁发送推送消息感到困惑。

据我所知,真正确定用户是否可以接收推送消息的唯一方法是,在发送推送消息之前,对城市飞艇 API 进行额外调用,以检查设备是否存在并且处于活动状态。我宁愿不为每条推送消息进行 2 次 api 调用,因此另一种方法是在本地跟踪城市飞艇中的所有注册设备,并每小时左右更新一次该列表。然而,这意味着“活动设备列表”并不总是完全准确,我们必须自己跟踪所有注册设备,这感觉就像重新实现城市飞艇的一部分。

还有其他(更好的)方法可以做到这一点吗?据我所知,当我向城市飞艇发送推送消息时,无论设备是否处于活动状态,或者它是否存在,api 总是返回它已成功发送。

我无法想象我是唯一一个有这个问题的人。有没有人有更好的方法来解决它,还是我坚持我自己想出的两个选项?

4

1 回答 1

5

Urban Airship 提供以下两种选择

在任何情况下,应用程序都应该正确地预期和处理非活动设备令牌。我们建议开发人员:

  1. 每次打开应用程序时都注册设备令牌,就像我们的示例应用程序一样
  2. 定期使用我们的反馈 API,将未激活的设备令牌存储在您自己的数据库中,并在设备令牌再次激活时发送注册。

如果您再次致电 Urban Airship 以检查设备是否存在且处于活动状态,即使如此,“活动设备列表”也可能并不总是完全准确,因为 Urban Airship 依赖于 Apple 反馈服务的定期更新:

Apple 告诉我们,该应用程序已通过反馈服务卸载,我们会定期检查。

另外,请记住 Apple 关于推送通知交付的声明

重要提示:通知的传递是“尽力而为”,不能保证。它不打算向您的应用程序传递数据,只是为了通知用户有新数据可用。

于 2013-11-04T11:24:48.630 回答