使用 Urban Airship 跟踪活动用户的推送通知

Posted

技术标签:

【中文标题】使用 Urban Airship 跟踪活动用户的推送通知【英文标题】:Keeping track of active users for push notifications with Urban Airship 【发布时间】:2013-11-10 04:22:47 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

Urban Airship 分享以下two options:

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

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

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

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

另外,请记住 Apple 关于 delivery of Push Notifications 的声明:

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

【讨论】:

所以基本上没有真正的方法可以很好地完成这项工作。太糟糕了。 @Dennisch 是的,我相信因为不能保证通知的传递。

以上是关于使用 Urban Airship 跟踪活动用户的推送通知的主要内容,如果未能解决你的问题,请参考以下文章

Urban Airship 收不到富推

如何使用 Urban AirShip (Swift) 获取 appDelegate

Urban Airship 在呼叫起飞时坠毁

iOS 中的 Urban Airship SDK 集成和推送通知

Urban Airship:默认状态栏通知的自定义图标

使用 Phonegap for Ios 实现 Urban Airship 在注册时卡住了