android - C2DM - 角色发件人帐户

标签 android settings account android-c2dm sender-id

一个简单的问题,一个更难的问题:

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/

相关文章:

android 模拟器 1.5、1.6、2.1 无法解析具有 <?xml 版本 ="1.0"编码 ="Shift-JIS"?> 的 XML 文件

java - 在 Java httpclient 中设置用户代理并允许重定向到 true

火力地堡 : Prevent same account on multiple devices

php - 从帐户自动提取所有YouTube视频

ios - iPhone 应用程序中的 Google 帐户自动登录

Android ScaleAnimation和TranslateAnimation,如何避免ScaleAnimation移动

android - Kotlin 是否有办法将接口(interface)的实现委托(delegate)给另一个类?

java - 在 Mac OS X 上为 Java 应用程序存储首选项、日志文件、缓存的位置

php 应用程序全局设置

java - 如何向 Android 输入法编辑器应用程序添加简单的首选项屏幕