5

我有一个管理第三方服务器列表并可以轮询它们以获取信息的应用程序。这些服务器应该彼此独立(并且可能不受我的控制)。

现在我想实现 c2dm 通知以避免持续的主动轮询。第三方服务器将能够发布它们senderId并允许我的客户在向registrationId谷歌注册后向他们发送 C2DM。

现在我的问题是:是否可以从同一个应用程序包中为多个 c2dm 发件人注册?如果是这样,我将如何区分注册(尤其是注销)过程,以便我可以更新正确的本地服务器配置条目?

我找到的唯一资源是这个 google groups thread,但有一段时间没有得到回答。我希望你能帮忙。

注意:这只是关于注册。发送消息时,第三方服务器可以注入自己的服务器名称,以便消息处理程序可以区分它们。但是使用谷歌服务器的注册过程似乎并没有让我选择将用户定义的信息传递回我的BroadcastReceiver

4

2 回答 2

3

这可能是相关的: http://groups.google.com/group/android-c2dm/browse_frm/thread/e2095d79c80de4c1/37325b1b1e5ec1e1?lnk=gst&q= multiple#37325b1b1e5ec1e1

由 Costin Manolache(Google 软件工程师)撰写:

一个应用程序不能注册 2 个不同的发件人 ID - (android-id + app id) 有一个记录,第二个注册将替换第一个,第一个发件人将无法发送。

无论如何 - 这不是现在“支持”的功能,但听起来很合理。

请不要使用与多个客户共享的一个发件人帐户 - 除了 TOS,您可能会遇到其他问题。

我有同样的问题。客户端有多个帐户和多个服务器,并且应在其拥有帐户的所有服务器上注册以接收通知。

于 2012-02-28T13:47:27.427 回答
0

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

如果上面的描述是正确的,那么:

您可以在内部维护 ServerId 的列表并生成 C2DM 注册 ID。因为 C2DM 注册 ID 对于包来说是唯一的。它将被更新相同的包尝试再次注册。因此,您可以将此注册 id 提供给 n 个服务器,他们可以使用此注册 id 发送消息,并且它将毫无疑问地到达您的应用程序。

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

于 2011-10-05T10:14:29.330 回答