【问题标题】:Push notification, is it the device token all we need, or more?推送通知,是我们所需要的设备令牌,还是更多?
【发布时间】:2015-02-03 15:39:12
【问题描述】:

我正在阅读this previous thread,因为我在将设备令牌转换为可以在 POST 中发送的东西时遇到问题。该问题已解决,我的令牌已正确发送到服务器,我们将其存储在用户的帐户记录中。

这就是我需要做的,对吧?如果我们使用该令牌进行通知,它将发送给该​​用户,并且只发送给该用户?还是我在这里遗漏了一些非常重要的东西?

【问题讨论】:

    标签: ios apple-push-notifications


    【解决方案1】:

    当您说“用户”时,您的意思是您的应用可以让不同的用户登录和退出吗?

    要处理这个问题,您可以设置一个表来将user_id 映射到push_tokendevice_id。您还应该在此地图中添加 enabled 标志 - 这意味着用户当前已在该设备上登录。

    从概念上讲,虽然一个设备只有一个推送令牌,但它可能有很多用户,而一个用户可能有很多设备。

    当用户在设备上登录您的应用时,您发送user_idpush_tokendevice_id 并在您的表格中设置enabled=TRUE。如果此用户/设备组合从未存在,请添加到您的表格中。

    当用户在设备上退出您的应用时,您发送user_iddevice_id 并在您的表格中设置enabled=FALSE

    当发生会触发向用户推送user_id 的事件时,您可以查找与user_idenabled=TRUE 关联的push_tokens。然后你可以简单地推送到这些令牌。

    【讨论】:

    • 每台设备只有一个用户,他们一次只能在一台设备上。应用程序中的数据来自需要登录该服务的服务,它是一个 JSON 服务器。所以服务器上有帐户,虽然没有人真正“登录或退出”,但现在它只是一个无意义的用户 ID 及其设备令牌的列表。我想我的问题与 push_token 和 device_id 有关。这些不是一回事吗?
    • 如果用户必须登录服务,他们可以在两台设备上登录。这就是为什么你也需要device_iddevice_id 本质上是 UDID - 设备的唯一标识符。根据 Apple 文档,push_token 也不能保证保持不变。通常,在每次登录时更新它是好的。此外,如果用户注销服务而另一个用户登录同一设备,那么两者将具有相同的push_token。您不希望 user1 收到有关 user2 活动的推送。同样,您确实希望 user1 在他们登录的任何设备上收到推送通知。
    • 好的,但是服务器端什么都不知道,服务器要向苹果发送什么?这两个,或者它可以做到这一点。遗憾的是,我对 API 没有太多控制权。
    • 服务器只发送push_token和payload json
    【解决方案2】:

    @dmorrow 是对的。此外,您需要制作具有相同应用程序 id 的 .pem 证书才能使服务器推送通知起作用,请查看此ANSWER

    【讨论】:

    • 我已经有了 PEM,我们将它与 Localytics 一起使用...我认为它回答了我的问题,因为它可以向特定用户发送消息。
    猜你喜欢
    • 1970-01-01
    • 2017-03-03
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多