Android 如何创建或获取向C2DM发送通知的密码?

Android 如何创建或获取向C2DM发送通知的密码?,android,.net,push,android-c2dm,Android,.net,Push,Android C2dm,我刚注册,收到以下电子邮件: 感谢您对Android云到设备消息(C2DM)的兴趣。 我们已经接受了你进入试验组的申请。您请求作为应用程序发件人帐户的Google帐户: 一些fake@email.com 已添加到我们的允许发件人列表中,您应该能够在第二天左右开始使用它向Android 2.2设备发送消息。如果您想在任何时候更改用于发送邮件的角色帐户,请重新填写注册表。 默认情况下,所有新发件人帐户都被授予初始生产级别配额,如中所述: 如果您需要更高的配额,请按照该页面上的说明提交配额请求。 请注

我刚注册,收到以下电子邮件:

感谢您对Android云到设备消息(C2DM)的兴趣。 我们已经接受了你进入试验组的申请。您请求作为应用程序发件人帐户的Google帐户: 一些fake@email.com 已添加到我们的允许发件人列表中,您应该能够在第二天左右开始使用它向Android 2.2设备发送消息。如果您想在任何时候更改用于发送邮件的角色帐户,请重新填写注册表。 默认情况下,所有新发件人帐户都被授予初始生产级别配额,如中所述: 如果您需要更高的配额,请按照该页面上的说明提交配额请求。 请注意,由于Android云到设备消息传递目前是实验室的API,我们保留随时从根本上更改服务和相关配额的权利。 有关Android云到设备消息传递的更多信息,请阅读我们的文档和示例代码,网址为: 如果您有任何问题或反馈,请访问谷歌集团: 请不要回复此电子邮件,因为发件人地址不受监控。 谢谢 安卓云到设备消息团队

现在我已经准备好开始向C2DM发送一些通知。我有一个基于.net的服务器端实现,使用:

公共类C2DMNotificationService:INotificationService
{
公共无效发送通知(IAndroidPushNotification通知、C2DMChannel通道、IAndroidPhoneEndpoint端点)
{
var pusher=新pusher();
if(string.IsNullOrEmpty(notification.AuthToken))
{
//注意:此authtoken会定期刷新,因此我们需要考虑从google获取新authtoken的频率。
var source=string.Format(“{0}-{1}-{2}”,channel.CompanyName,channel.ApplicationName,channel.Version);
var loginResp=pusher.ClientLogin(channel.AccountEmailAddress,channel.AccountPassword,source);
if(loginResp.StatusCode!=ClientLoginStatusCode.Ok)
抛出新异常(“登录状态错误:“+loginResp.StatusCode”);
notification.AuthToken=loginResp.AuthToken;
}
var sendmagesresp=pusher.sendmages(endpoint.RegistrationId、notification.CollapseKey、notification.Values、notification.AuthToken、notification.DelayWhileIdle);
//TODO:检查响应状态。。
}
}

如您所见,pusher.ClientLogin方法接受密码,但我没有密码。我有一个发送者帐户,就是我用来注册C2DM的帐户,但我没有密码密码在哪里?或者如何获取密码?

您必须使用“谷歌控制”的电子邮件,如gmail帐户。这就是C2DM的工作原理,发送方和接收方的所有身份验证都基于google帐户。我刚刚再次注册了C2DM,这次使用的是gmail帐户,然后使用我的gmail密码发送推送通知,果然奏效了——我得到了一个身份验证令牌。

正如Paul所说,你需要使用谷歌控制的有效电子邮件帐户注册C2DM服务。它不必是gmail帐户,但需要使用谷歌电子邮件服务器(即使用you@yourdomain.com)如果它是通过谷歌注册的电子邮件服务

一旦您使用该帐户注册C2DM服务

public class C2DMNotificationService : INotificationService<IAndroidPushNotification, C2DMChannel, IAndroidPhoneEndpoint>
{
    public void SendNotification(IAndroidPushNotification notification, C2DMChannel channel, IAndroidPhoneEndpoint endpoint)
    {
        var pusher = new Pusher();
        if (string.IsNullOrEmpty(notification.AuthToken))
        {
            // Note: this authtoken is refreshed periodically, so we need to think about how often we grab a new authtoken from google.
            var source = string.Format("{0}-{1}-{2}", channel.CompanyName, channel.ApplicationName, channel.Version);
            var loginResp = pusher.ClientLogin(channel.AccountEmailAddress, channel.AccountPassword, source);
            if (loginResp.StatusCode != ClientLoginStatusCode.Ok)
                throw new Exception("Got a bad login status: " + loginResp.StatusCode);
            notification.AuthToken = loginResp.AuthToken;
        }
        var sendMessageResp = pusher.SendMessage(endpoint.RegistrationId, notification.CollapseKey, notification.Values, notification.AuthToken, notification.DelayWhileIdle);
        // TODO: check response status..
    }
}