2012-06-12 5 views
1

나는이 푸시 알림 tutorial을 따랐습니다.Android에서 푸시 알림의 혼동

튜토리얼을 마치면 AuthenticationUtilMessageUtil 인 두 클래스를 사용하지 않는다는 것을 알게되었습니다.

더욱이 Google Login이 링크는 작동하지 않는 것처럼 보입니다. 둘째, Android 기기 또는 계정의 토큰 ID입니까? 나는 푸시 알림이 안드로이드 장치의 토큰 ID에 푸시 메시지라고 생각했습니다.

다른 한편으로는, 내가 그 bundle.putExtra(key, value), 모든 키를 사용하지 않았다는 것을 알게되었습니다. 예를 들어 "app"을 입력하고 C2DMRegistrationReceiver()에 키를 가져 오지 않았습니다.

sendRegistrationIdToServer()에서 결코 부름을받지 않는 것처럼 보입니다.

이 튜토리얼에서는 푸시 알림에 대해 혼동을 느낍니다.

푸시 알림에 대한 안내 나 실행 가능한 자습서 나 예제를 제공 할 수있는 사람은 누구입니까?

나는 프로가 내 잘못을 지적하고 싶습니다.

이것은 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 내 등록 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 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

android c2dm 구현을위한 this 자습서를 따라야합니다.

서버의 경우 인터넷에서 사용할 수있는 코드 샘플을 사용할 수 있습니다. 내가 사용한 서버.라는 NET 라이브러리는 "C2DM Sharp"

과정은 ... 같은 매우 간단

  • 처음에 C2DM을위한 Google 이메일 등록 - 안드로이드 2.2에 https://developers.google.com/android/c2dm/signup
  • 실행 안드로이드 응용 프로그램을 이상과를 보내 "C2DMReceiver"에서 얻을 수있는 등록 ID 또는 LOG에서 쓰기로 해당 ID를 얻을 수 있습니다
  • 서버 코드를 사용하여 테스트 용으로 registrationID를 서버 코드에 붙여 넣기 만하면됩니다. C2DM의 기본 흐름은

... Register Phone for C2DM ->Get registrationID -> 서버에 registrationID 보내기 -> 서버가 인증 토큰을 얻기 위해 구글 ID를 usees ->server use registrationID and auth token to send message.

+0

예를 들어, [email protected] 등록자를 발신자로 사용하고 내 안드로이드 장치가 [email protected]을 장치에 기록하면 장치에만 메시지가 전송됩니다. 나는 여러 안드로이드 장치에 보낼 필요가있다. –

+0

아니요 ... 두 계정이 서로 관련이 없습니다. 해당 계정을 사용하여 모든 장치에 푸시 메시지를 보낼 수 있습니다. 푸시 메시지는 registrationID를 사용하여 전송합니다. 어떤 ID가 해당 장치에 로그인되어 있는지는 중요하지 않습니다. – Samdrain

+0

두 번째 장치에서 같은 코드 끝을 사용하여 두 장치를 모두 시도했지만 밀어 넣기 알림을받지 못했습니다. –

0

여기 내 질문 참조하십시오

C2DM server. Should we use OAuth now?

답변이있는 Google 그룹에 대한 정보와 링크가 있습니다. OAuth2를가 작동처럼 짧은에서

..

보인다,하지만 난 어떤 작업 예제가

클라이언트 로그인 작품을 구현하는 찾지 못했습니다이 내 혼란이 있었다 곳입니다. 다음을 수행해야합니다.

  1. Google 계정 설정. [email protected]과 같은 것을 골랐습니다.
  2. 이 이메일을 사용하여 C2DM에 등록하십시오. 이건 중요하다.
  3. 서버 쪽에서 전자 메일/암호를 사용하여 인증 토큰을 받으십시오.
  4. 서버에서 메시지를 보내려면이 토큰을 사용하십시오.

다른 모든 튜토리얼은 마치 주위의 모든 튜토리얼과 같습니다.

1

Google 클라우드 메시징 안드로이드

중요 : C2DM (Android Cloud to Device Messaging Framework)은 공식적으로 2012 년 6 월 26 일부터 사용되지 않습니다. 즉, C2DM이 새로운 사용자 및 할당량 요청을 수락하지 않습니다. C2DM에는 새로운 기능이 추가되지 않습니다. 그러나 C2DM을 사용하는 앱은 계속해서 작동합니다. 기존 C2DM 개발자는 안드로이드 용 Google Cloud Messaging (GCM)이라는 새로운 버전의 C2DM으로 마이그레이션하는 것이 좋습니다. 자세한 내용은 C2DM-GCM 마이그레이션 문서를 참조하십시오. 개발자는 새로운 개발을 위해 GCM을 사용해야합니다.

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

관련 문제