2012-06-12 30 views
1

我遵循此推送通知tutorialAndroid中的推送通知混淆

當我完成本教程時,我發現兩個類沒有使用,分別是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); 

} 
+0

您將有得到一個關於他們的討論小組(頁面上的鏈接)的教程響應更好的機會。如果您對代碼有特殊問題,請在此處發佈詳細信息。 –

回答

1

你應該按照this教程的android c2dm實現。

對於服務器,你可以使用任何東西,一些代碼示例在互聯網上可用。對於我使用的服務器。所謂的網絡庫「C2DM Sharp

的過程非常簡單,就像...

  • 先註冊上C2DM您的谷歌電子郵件 - https://developers.google.com/android/c2dm/signup
  • 運行Android應用程序在Android 2.2或更高版本,併發送您可以在「C2DMReceiver」中獲得的註冊ID,或通過在LOG
  • 中寫入以獲取該ID。使用服務器代碼,用於測試目的,將您的註冊ID粘貼到服務器代碼中,然後就可以開始了。

C2DM的基本流程是... Register Phone for C2DM - >Get registrationID - >發送registrationID服務器 - >服務器usees谷歌ID來獲得身份驗證令牌 - >server use registrationID and auth token to send message.

+0

如果是這樣的,例如,我使用[email protected]註冊作爲發件人,我的android設備在設備中記錄[email protected]所以它只發送消息到設備只?我需要發送到多個Android設備。 –

+0

否...兩個帳戶都沒有關係。您可以使用該帳戶將推送消息發送到任何設備。推送消息使用registrationID發送,在該設備中登錄哪個ID並不重要。 – Samdrain

+0

我試着用相同的編碼結束了第二個設備上兩個設備也沒有收到推送通知 –

0

請參閱我的問題在這裏:

C2DM server. Should we use OAuth now?

有一些信息和鏈接到谷歌組與答案。

總之..

好像OAuth2用戶將工作,但我沒有找到任何工作示例實現

客戶端登錄的作品,這是地方,我的困惑了。您需要:

  1. 設置Google帳戶。我選了一些類似[email protected]的東西。
  2. 使用此電子郵件註冊C2DM。這個很重要。
  3. 在服務器端使用您設置的電子郵件/密碼以獲取身份驗證令牌。
  4. 使用此令牌從服務器發送消息。

其他一切就像在所有的教程中。

1

谷歌雲端通訊Android的

重要提示:截至2012年6月26日,C2DM(Android雲到設備消息傳遞框架)已正式棄用。這意味着C2DM已停止接受新用戶和配額請求。沒有新的功能將被添加到C2DM。但是,使用C2DM的應用程序將繼續工作。我們鼓勵現有的C2DM開發人員遷移到稱爲Google Cloud Messaging for Android(GCM)的新版C2DM。有關更多信息,請參閱C2DM-GCM遷移文檔。開發人員必須使用GCM進行新的開發。

請查看以下鏈接:

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