1

我遵循了这个推送通知教程

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

此外,谷歌登录,这个链接似乎无法使用。其次,这是 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"};

消息实用程序

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

消息发送者

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

}
4

3 回答 3

1

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

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

这个过程非常简单,就像...

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

C2DM 的基本流程是... 为 C2DM 注册电话->获取registrationID -> 将registrationID 发送到服务器 -> 服务器使用google id 获取auth token ->服务器使用registrationID 和auth token 发送消息。

于 2012-06-12T05:07:21.550 回答
1

适用于 Android 的 Google 云消息传递

重要提示:C2DM(Android 云到设备消息传递框架)已于 2012 年 6 月 26 日正式弃用。这意味着 C2DM 已停止接受新用户和配额请求。不会向 C2DM 添加任何新功能。但是,使用 C2DM 的应用程序将继续工作。鼓励现有 C2DM 开发人员迁移到新版本的 C2DM,称为 Android 版 Google Cloud Messaging (GCM)。有关更多信息,请参阅 C2DM 到 GCM 迁移文档。开发人员必须使用 GCM 进行新的开发。

请检查以下链接:

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

于 2012-07-04T08:57:58.677 回答
0

请在这里查看我的问题:

C2DM 服务器。我们现在应该使用 OAuth 吗?

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

简而言之..

似乎 OAuth2 可以工作,但我没有找到任何工作示例来实现

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

  1. 设置谷歌帐户。我选择了 mynamec2dm@gmail.com 之类的东西。
  2. 使用此电子邮件注册 C2DM。这个很重要。
  3. 在服务器端使用您设置的电子邮件/密码来获取身份验证令牌。
  4. 使用此令牌从服务器发送消息。

其他一切都与所有教程中的一样。

于 2012-06-12T04:33:16.217 回答