一个简单的问题,一个更难的问题:
1)发件人ID(Gmail账号)是否可以和手机设置-->账号下需要添加的不一样?
2) 我必须自动添加一个帐户(编码..),我正在尝试解决这个问题,但是是否可以在“设置”-->“帐户”下隐藏我要添加的帐户的邮件?我不想让人们知道电子邮件地址。
谢谢。
最佳答案
手机上的 GMail 帐户在内部用于识别 C2DM 消息的收件人。首先,客户端注册自己,然后(当发送 C2DM 消息时)所有注册的客户端都会收到 C2DM 消息。不止一个客户可以将他们自己注册为 C2DM 消息的接收者。
来自 Google C2DM 网站(参见 Registering):
Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
registrationIntent.putExtra("sender", emailOfSender);
startService(registrationIntent);
除了发件人 ID(在 var emailOfSender 上面的代码中)之外,参数 app 标识了注册过程使用的包名称。您会看到设备上的 GMail 帐户未在代码中使用,但将在内部用于识别 C2DM 服务器上的移动设备(Android 实现直接提供客户端 GMail 帐户或链接到 GMail 帐户的 ID ).
Google 表示:它需要运行 Android 2.2 或更高版本且安装了 Market 应用程序的设备。这是因为 Market 应用程序保持与 C2DM 服务器的连接。所有设备的注册 ID 都不同。在从您的服务器发送 C2DM 消息之前,客户端必须告诉服务器注册 ID。
当您想要创建用于发送 C2DM 消息的应用程序(在服务器端)时,您还需要一个 GMail 帐户(我们在设备上使用的 SenderID)。通常使用“每个应用程序一个 GMail 帐户”的模式。当您注册 C2DM 时,您必须在注册表格中输入发送者 ID 和接收 Android 应用程序的 namespace - 与客户端注册设备时使用的信息完全相同。
这两个 GMail 帐户都不是公开的。关系是 n-1-m,这意味着 n 个客户端和 m 个服务器在一台 C2DM 服务器上自行注册。只有 Google(C2DM 服务器)知道使用了哪些 GMail 帐户。
我在手机上使用了一个真实的 GMail 地址。我正在调试我在模拟器上使用的 GMail 地址。然后,我编写的每个支持 C2DM 的应用程序都有 3 个 GMail 帐户。
关于android - C2DM - 角色发件人帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162500/