Android c2dm电子邮件地址问题

时间:2011-07-18 01:14:19

标签: android android-c2dm

我正在使用C2DM开发android推送通知应用程序,我在我的应用程序中遇到了一些问题。 当我在i-e服务器和客户端应用程序上使用相同的电子邮件地址时,该应用程序正在运行,

任何人都可以告诉我会出现什么问题。

阿尔塔夫

1 个答案:

答案 0 :(得分:1)

您似乎错误地认为,应在注册意图中更改为使用C2DM服务识别应用程序而创建的角色电子邮件帐户。

您必须将该角色的电子邮件与服务器上的电子邮件相同,否则Google将无法将您的应用程序识别为此c2dm邮件的发件人/收件人。 样本注册意图:

    Intent registrationIntent = new Intent(
            C2DMessaging.REQUEST_REGISTRATION_INTENT);
    registrationIntent.setPackage(C2DMessaging.GSF_PACKAGE);
    registrationIntent.putExtra(
            C2DMessaging.EXTRA_APPLICATION_PENDING_INTENT,
            PendingIntent.getBroadcast(context, 0, new Intent(), 0));
    registrationIntent.putExtra(C2DMessaging.EXTRA_SENDER, senderId);
    context.startService(registrationIntent);

此处的变量senderId应该包含您在Google C2DM signup Page

上创建并注册C2DM的角色帐户

此同一封电子邮件用于从google服务器获取身份验证令牌,该令牌稍后用于发送C2DM邮件

获取身份验证密钥的示例服务器代码:

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
        nameValuePairs.add(new BasicNameValuePair("Email",
                senderId));
        nameValuePairs.add(new BasicNameValuePair("Passwd", "testpassword"));
        nameValuePairs.add(new BasicNameValuePair("accountType", "GOOGLE"));
        nameValuePairs.add(new BasicNameValuePair("source",
                "Fleet Tracker Pro"));
        nameValuePairs.add(new BasicNameValuePair("service", "ac2dm"));
        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = client.execute(post);
        BufferedReader rd = new BufferedReader(new InputStreamReader(
                response.getEntity().getContent()));

        String line = "";
        while ((line = rd.readLine()) != null) {
            if (line.startsWith("Auth=")) {
                String auth = line.substring(5);
                System.out.println("Auth token = " + auth);
                return auth;
            }
        }

注意变量senderId这应该还包含您在Google C2DM signup Page上创建并注册C2DM的角色帐户 任何其他电子邮件都可以更改为您喜欢的任何内容,但这些电子邮件必须保持相同

以下是Google代码中google C2DM page的定义:

  

发件人ID与应用程序关联的电子邮件帐户   开发商。发件人ID用于注册过程   识别允许发送消息的Android应用程序   装置。此ID通常基于角色,而不是a   个人帐户 - 例如,my-app @ gmail.com。

我希望我有一个美好的一天。

如果您包含代码段或有关您正在谈论的电子邮件的更多信息,那么

会很不错。