1

このプッシュ通知チュートリアルに従いました。

AuthenticationUtilチュートリアルを終えると、2 つのクラスが whichとを使用していないことがわかりましたMessageUtil

さらに、Google ログイン、このリンクは機能しないようです。次に、これは 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 用 Google クラウド メッセージング

重要: C2DM (Android Cloud to Device Messaging Framework) は、2012 年 6 月 26 日に正式に廃止されました。これは、C2DM が新しいユーザーとクォータ リクエストの受け入れを停止したことを意味します。C2DM に新しい機能は追加されません。ただし、C2DM を使用するアプリは引き続き動作します。既存の C2DM 開発者は、Google Cloud Messaging for Android (GCM) と呼ばれる C2DM の新しいバージョンに移行することをお勧めします。詳細については、C2DM から GCM への移行に関するドキュメントを参照してください。開発者は、新しい開発に GCM を使用する必要があります。

次のリンクをご確認ください。

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

于 2012-07-04T08:57:58.677 に答える
1

Android c2dm の実装については、このチュートリアルに従う必要があります。

サーバーの場合は、インターネットで入手できるコードサンプルを使用できます。サーバーには、「C2DM Sharp」という .NET ライブラリを使用しました。

プロセスは次のように非常に簡単です...

  • まず、c2dm の Google メールを登録します - https://developers.google.com/android/c2dm/signup
  • Android 2.2以上でAndroidアプリケーションを実行し、「C2DMReceiver」で取得できる登録IDを送信するか、LOGに書き込むことでそのIDを取得します
  • サーバー コードを使用します。テスト目的で、登録 ID をサーバー コードに貼り付ければ、準備完了です。

C2DM の基本的な流れは次のとおりです... 電話を C2DM に登録する - > registrationID を取得する-> registrationID をサーバーに送信する -> サーバーは Google ID を使用して認証トークンを取得します ->サーバーは registrationID と認証トークンを使用してメッセージを送信します。

于 2012-06-12T05:07:21.550 に答える
0

ここで私の質問を見てください:

C2DMサーバー。今すぐOAuthを使用する必要がありますか?

いくつかの情報と答えのあるグーグルグループへのリンクがあります。

要するに..

OAuth2は機能するようですが、実装するための実用的なサンプルが見つかりませんでした

クライアントログインは機能し、これは私の混乱があった場所です。必要がある:

  1. Googleアカウントを設定します。mynamec2dm@gmail.comのようなものを選びました。
  2. このメールを使用してC2DMに登録します。これは重要。
  3. サーバー側では、設定した電子メール/パスワードを使用して認証トークンを取得します。
  4. このトークンを使用して、サーバーからメッセージを送信します。

他のすべては、周りのすべてのチュートリアルと同じです。

于 2012-06-12T04:33:16.217 に答える