在Android中混淆推送通知

时间:2012-06-12 03:33:00

标签: android push-notification

我按照此推送通知tutorial

当我完成教程时,我发现有两个类没有使用AuthenticationUtilMessageUtil

此外,Google Login,此链接似乎不可行。其次,这是Android设备或帐户的令牌ID?我认为推送通知是推送消息到Android设备的令牌ID。

另一方面,我发现bundle.putExtra(key, value),所有键都没有使用它。例如,将"app"放在C2DMRegistrationReceiver()但未获得密钥。

在这个sendRegistrationIdToServer()中,似乎永远不会被召唤出来。

我对这个关于推送通知的教程感到困惑。

谁可以指导我或给我一些关于推送通知的可行教程或示例?

我希望亲们指出我的错误。

这是我的注册ID

public static final String[] REGISTRATION_ID = {
        "APA91bFV6MwoAH0UNop69PZ2liKpSBUHSHenIuPzh44_6GdGKzVCLvoH_NM31eMZMVLZi-SAIFwP4iZaE72dSWkIh3GaD0RQYpPm9zO0ARWmnoxFyyyreL_KpQ9Qd_p0broclT12RhA4Ymk0cBT00CmpsbSHIwyxig",
        "APA91bEwmxgvs7zNbKC4p0n4DoTEM73DTihnQgBOP8Gxhf2sVW-fgltugDgS1Fh2S4KvN1wQHbMNJEIzieJ9F1nNPqs3NWeKGbB7IBYpKJq4xmN4Z7uzkjZQQUKGD8jW--AwfQY5McINBto9GAL_87_u5WkIq-kx3g",
        "APA91bH63Zgxn1X_MZ56UzrlRpffvmiLAIsqxvBUTMUHP2O_MT_VU9Ork_edXKHlml-PZSkjKEqdk8EKv5HvxbPdK1Vva3WtmqsPZfhXzEbtNIrwrqIvvRf7hL835rDc4t2E8EKUBj1dX2ta0OxY5pY3Xlhkyb1sBg",
        "APA91bGqT5Wo6eUaMdqT5r9TlGbKSX6GN2W6r-RjrRXz5T5v3j87flcQRyfSajmMNGXuPVe-fwZydRmvyYu63tWnYohDmpJyKkXOxs8Vx6P_FplFQ__ufR_hekwqGOspeUc6bfc8fhbMPGN3Ft9l-bfrghJwwk79jw"};

Messageutil

public static int sendMessage(String auth_token, String registrationId,
        String message, String title) throws IOException {

    StringBuilder postDataBuilder = new StringBuilder();
    postDataBuilder.append(PARAM_REGISTRATION_ID).append("=")
            .append(registrationId);
    postDataBuilder.append("&").append(PARAM_COLLAPSE_KEY).append("=")
            .append("0");
    postDataBuilder.append("&").append("data.payload").append("=")
            .append(URLEncoder.encode(message, UTF8));
    postDataBuilder.append("&").append("data.title").append("=")
            .append(URLEncoder.encode(title, UTF8));

    byte[] postData = postDataBuilder.toString().getBytes(UTF8);

    // Hit the dm URL.

    URL url = new URL("https://android.clients.google.com/c2dm/send");
    HttpsURLConnection
            .setDefaultHostnameVerifier(new CustomizedHostnameVerifier());
    HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
    conn.setDoOutput(true);
    conn.setUseCaches(false);
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type",
            "application/x-www-form-urlencoded;charset=UTF-8");
    conn.setRequestProperty("Content-Length",
            Integer.toString(postData.length));
    conn.setRequestProperty("Authorization", "GoogleLogin auth="
            + auth_token);

    OutputStream out = conn.getOutputStream();
    out.write(postData);
    out.close();

    int responseCode = conn.getResponseCode();
    return responseCode;
}

private static class CustomizedHostnameVerifier implements HostnameVerifier {
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
}

messageSender,和

public static void main(String[] args) throws IOException {
    String token = AuthenticationUtil.getToken(SecureStorage.USER,
            SecureStorage.PASSWORD);

    for (int i = 0; i < ServerConfiguration.REGISTRATION_ID.length; i++) {
        MessageUtil.sendMessage(token,
                ServerConfiguration.REGISTRATION_ID[i], "12358",
                "印尼羽賽:馬2單1雙止步入選賽");
        System.out.println(ServerConfiguration.REGISTRATION_ID[i]
                .toString());
    }
    System.out.println(token);

}

3 个答案:

答案 0 :(得分:1)

您应该按照this教程进行android c2dm实现。

对于服务器,您可以使用任何东西,在互联网上提供一些代码示例。对于服务器,我使用名为“C2DM Sharp”的.NET库

这个过程很简单,就像......

  • 首先在 - https://developers.google.com/android/c2dm/signup
  • 上注册c2dm的google电子邮件
  • 在Android 2.2或更高版本上运行Android应用程序并发送您可以在“C2DMReceiver”中获得的registrationID或通过在LOG中写入来获取该ID
  • 使用服务器代码进行测试,将您的registrationID粘贴到服务器代码中,然后就可以开始了。

C2DM的基本流程是...... Register Phone for C2DM - &gt; Get registrationID - &gt;将registrationID发送到服务器 - &gt;服务器使用google id获取身份验证令牌 - &gt; server use registrationID and auth token to send message.

答案 1 :(得分:1)

适用于Android的Google Cloud Messaging

重要提示:截至2012年6月26日,C2DM(Android Cloud to Device Messaging Framework)已正式弃用。这表示C2DM已停止接受新用户和配额请求。 C2DM不会添加任何新功能。但是,使用C2DM的应用程序将继续运行。鼓励现有C2DM开发人员迁移到新版本的C2DM,称为Google Cloud Messaging for Android(GCM)。有关更多信息,请参阅C2DM-to-GCM迁移文档。开发人员必须使用GCM进行新的开发。

请检查以下链接:

http://developer.android.com/guide/google/gcm/index.html

答案 2 :(得分:0)

请在此处查看我的问题:

C2DM server. Should we use OAuth now?

有一些信息和谷歌小组的链接与答案。

简而言之..

似乎OAuth2会起作用,但我没有找到任何可行的样本来实现

客户端登录有效,这是我困惑的地方。你需要:

  1. 设置Google帐户。我选择了像mynamec2dm@gmail.com这样的东西。
  2. 使用此电子邮件注册C2DM。这个很重要。
  3. 在服务器端使用电子邮件/密码,您设置为获取身份验证令牌。
  4. 使用此令牌从服务器发送消息。
  5. 其他一切就像在所有教程中一样。