1

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

1)发件人ID(Gmail帐户)可以与我们需要在手机设置->帐户下添加的不同吗?

2)我必须自动添加一个帐户(编码..),我正在尝试解决它,但是是否可以在设置->帐户下隐藏我要添加的帐户的邮件?我不希望人们知道电子邮件地址。

谢谢。

4

2 回答 2

1

电话上的 GMail 帐户在内部用于识别 C2DM 消息的收件人。首先客户端注册自己,然后(当发送 C2DM 消息时)所有注册的客户端都会收到 C2DM 消息。多个客户端可以将它们自己注册为 C2DM 消息的接收方。

从 Google C2DM 站点(请参阅注册):

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);

参数 app 标识注册过程使用的包名称以及发件人 ID(在 var emailOfSender 上方的代码中)。您会看到代码中没有使用设备上的 GMail 帐户,但将在内部用于识别 C2DM 服务器上的移动设备(Android 实现直接提供客户端 GMail 帐户或链接到 GMail 帐户的 ID )。

谷歌表示:它要求运行 Android 2.2 或更高版本的设备也安装了 Market 应用程序。这是因为 Market 应用程序维护与 C2DM 服务器的连接。所有设备的注册 ID 都不同。在从服务器发送 C2DM 消息之前,客户端必须告诉服务器注册 ID。

当您想要创建一个发送 C2DM 消息的应用程序(在服务器端)时,您还需要一个 GMail 帐户(我们在设备上使用的 SenderID)。通常使用“每个应用程序一个 GMail 帐户”模式。当您注册 C2DM 时,您必须在注册表单中输入 SenderID 和接收 Android 应用程序的命名空间 - 与在客户端注册设备时使用的信息完全相同。

两个 GMail 帐户都不是公开的。关系是 n-1-m,这意味着 n 个客户端和 m 个服务器在一个 C2DM 服务器上自行注册它们。只有 Google(C2DM 服务器)知道使用了哪些 GMail 帐户。

我有一个在我的手机上使用的真实 GMail 地址。我在调试我在模拟器上使用的 GMail 地址。然后,我编写的每个支持 C2DM 的应用程序都有 3 个 GMail 帐户。

于 2012-02-06T21:42:57.927 回答
0

抱歉,如果我的问题有点(甚至很多)愚蠢,但据我了解:

registrationIntent.putExtra("sender", emailOfSender);

而不是 emailOfSender,我应该为 C2DM 需要输入一些真实的电子邮件地址,但是对于安装在不同设备上的每个应用程序,这封电子邮件是否应该不同,我的意思是我应该从设备设置的某个地方获取这封电子邮件,还是我可以硬编码它?

我从http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html重复教程并注意到:

// Sender currently not used
intent.putExtra("sender", "nonsenses@gmail.com");

所以我就这样离开了,在开发服务器测试部分之后我放了:

public class SecureStorage {
    public static final String USER = "your_registeredUser";
    public static final String PASSWORD = "your_password";
}

这里是真正的凭据,当我尝试向应用程序发送消息时,我收到响应 200 但设备上没有消息,只要我将 nonsenses@gmail.com 更改为服务器端应用程序中使用的电子邮件帐户 - 我立即收到通知。

于 2012-06-19T20:52:42.203 回答