将RegistrationId发送到后端

时间:2014-09-22 18:51:19

标签: java android google-cloud-messaging

我在Android开发网站上关注客户端GCM代码;我偶然发现了这个:

private void  sendRegistrationIdToBackend() {
    // Your implementation here.
}

现在这个问题不是那里实现的,我知道如何做httpost并将param发送到服务器。

我的问题是 WHERE 我是否会在我的数据库中发送此内容?

我在已注册用户的应用中实现GCM,因此我有一个users MySQL表。现在这里是我的问题:从我所看到的,RegistrationId与用户有独特的关系吗? 如果是这样,我可以将用户的RegistrationId放入用户表中的新列吗?我看到的唯一问题:如果用户在多个设备上使用该应用,该怎么办。所以这让我觉得我的逻辑错了。如果是错的......

..我应该只是做我在演示中看到的内容并将注册ID放在他们自己的表中 - 如果是这样,应该将用户ID放在同一行中 / strong>以便可以识别特定用户(不仅仅是设备)的注册ID?

3 个答案:

答案 0 :(得分:2)

用户和注册ID之间的关系是多对多的:

  • 如您所知,如果用户有多个设备,该用户将与多个注册ID相关联。
  • 如果在单个设备上一个用户注销而另一个用户登录,则两者都将与相同的注册ID相关联。但是,在这种情况下,您可以在将注册ID与新用户关联之前取消注册ID与旧用户的关联。这将简化用户和注册ID之间的关系,以简化为一对多。

鉴于这两点,拥有一个包含每个注册ID的表,用户ID将起作用。当用户注销时,不要忘记从该表中删除条目,因为当用户在特定设备中注销时,给予该应用实例的注册ID不再与该用户相关联。 / p>

答案 1 :(得分:1)

这取决于您的应用想要做什么:

  • 如果用户只使用一个设备,您可以将其放在用户表中。
  • 如果用户可以拥有许多设备,并且应该向所有设备发送相同的通知,则可以为每个用户(一对多表)提供一个注册ID列表。
  • 如果每个设备都有不同的通知,您应该为设备添加一个表,并在那里添加注册ID。

答案 2 :(得分:1)

您还可以使用通知密钥对与单个用户相关的注册ID进行分组。 http://developer.android.com/google/gcm/notifications.html

这样你每个用户只有一个条目,你只需要为每个用户发送一条消息,GCM负责其余的事情。