C2DM:同一个应用程序可以注册多个发送者ID吗?

5
我有一个管理第三方服务器列表并可以轮询获取信息的应用程序。这些服务器应该是彼此独立的(可能不受我的控制)。
现在我想实现c2dm通知以避免不断的主动轮询。第三方服务器将能够发布他们的senderId并允许我的客户端在注册google后发送C2DMregistrationId
现在我的问题是:是否可以从同一应用程序包为多个c2dm发送者进行注册?如果可以,我如何区分每个进程的注册(特别是注销)过程,以便我可以更新正确的本地服务器配置条目?
我找到的唯一资源是this google groups thread,但已经有一段时间没有得到回答。我希望你能帮助。

注意: 这只涉及到注册。在发送消息时,第三方服务器可以注入他们的服务器名称,因此消息处理程序可以区分它们。但是与 Google 服务器的注册过程似乎没有给我传回用户定义信息到我的 BroadcastReceiver 的选项。


如果有人感兴趣,我现在会让用户(在高级选项中)选择一个“senderId”。这并不能真正解决问题,但至少用户不再受限于特定服务器的私有“senderId”。当然,现在客户端向第三方服务器的注册请求必须包括一个“senderId”。 - user634618
Google Play服务支持多个发送者。答案在这里:https://dev59.com/xWfWa4cB1Zd3GeqPcwfo#11910550 - Mia
2个回答

3
这可能与以下问题有关:http://groups.google.com/group/android-c2dm/browse_frm/thread/e2095d79c80de4c1/37325b1b1e5ec1e1?lnk=gst&q=multiple#37325b1b1e5ec1e1 由谷歌软件工程师Costin Manolache撰写:
应用程序不能注册2个不同的发送者ID - (android-id + app id)的记录是唯一的,第二次注册将替换第一次注册,第一个发送者将无法发送。
在任何情况下,这现在不是一个“被支持”的功能,但听起来很合理。请不要使用一个发送者帐户与多个客户共享 - 除了TOS之外,您可能会遇到其他问题。
我也遇到了同样的问题。 客户端拥有多个具有多个服务器的帐户,并且应该向其所有帐户注册以接收通知。

0

就我理解您的问题,描述是您想从列在应用程序中的不同服务器获取推送通知,并且您可以管理该服务器以进行注册和注销过程。

如果上述描述正确,则:

您可以在内部维护ServerId列表并生成C2DM注册ID。因为C2DM注册ID对于包是唯一的。当相同的包再次尝试注册时,它将被更新。因此,您可以将此注册ID提供给任意数量的服务器,它们可以使用此注册ID发送消息,这些消息肯定会到达您的应用程序。

对于注销目的,您始终可以从列表中删除服务器ID。关于C2DM注册ID,您无需做太多工作,因为它只有一个。如果您从C2DM注销,则应用程序将无法从任何服务器接收任何消息。


1
情况是:有几个不相关的服务器,每个服务器都可以发送推送通知,Android客户端应该能够独立地在每个服务器上注册以订阅其通知。 - user634618

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接