2014-02-18 3 views
6

푸시 알림을 수신하기 위해 클라이언트 Android 및 Google 클라우드 메시징 (GCM)을 구성했지만 기기에서 알림을 보내도록 자바 서버를 구성 할 수 없습니다. 어떻게?푸시 알림 보내기 자바로 GCM

+1

, 같은 서버 측 작업을 수행하기 위해, 구글 앱 엔진을 사용하는 것과하십시오 GCM 메시지 보내기
코드의 몇 줄을 포함한다. – wattostudios

+0

예, 소켓을 사용하는 기기에 연결하는 서버가 있지만 다른 서버의 GCM 서버에 알림을 보낼 수 없습니다. – user3302527

+1

서버가 이미있는 경우 작동하지 않는 코드를 게시하면 해결해 드리겠습니다. 귀하의 질문은 너무 광범위합니다 - 우리는 당신이 먼저 시도한 것을 볼 필요가 있습니다. – wattostudios

답변

15

gcm-server.jar에는 GCM 메시징을위한 헬퍼 메소드가 포함되어 있습니다. 이 항아리를 얻으려면 Android SDK 관리자를 통해 "[비추천] Android 클라우드 용 Google Cloud 메시징"을 설치할 수 있습니다. 비추천 된 이름이 당신을 혼란스럽게하지 마십시오. 서버 부분이 아닌 클라이언트 부분 만 사용되지 않습니다.
설치 후 "ADT_SDKROOT\sdk\extras\google\gcm"에서 찾을 수 있습니다. 샘플 폴더에는 매우 이해하기 쉬운 데모 서버가 포함되어 있습니다. 당신은 인터넷 땅 어딘가에 서버를 구성해야

final String GCM_API_KEY = "yourKey"; 
    final int retries = 3; 
    final String notificationToken = "deviceNotificationToken"; 
    Sender sender = new Sender(GCM_API_KEY); 
    Message msg = new Message.Builder().build(); 

    try { 
       Result result = sender.send(msg, notificationToken, retries); 

       if (StringUtils.isEmpty(result.getErrorCodeName())) { 
        logger.debug("GCM Notification is sent successfully"); 
        return true; 
       } 

       logger.error("Error occurred while sending push notification :" + result.getErrorCodeName()); 
    } catch (InvalidRequestException e) { 
       logger.error("Invalid Request", e); 
    } catch (IOException e) { 
       logger.error("IO Exception", e); 
    } 
    return false; 
+0

그것은 효과가있다. 고맙습니다! – user3302527

+0

작동하는 경우 대답을 수락하는 것이 좋습니다. 그것은 다른 사람들에게 유용 할 것입니다 : – sinu

+0

그것은 제가보고있는 것입니다, 당신이 저의 시간을 절약 해 준 친구에게 감사드립니다. :) –

1

"" "test" ""Java 콘솔 앱을 만들려면 gcm jar 파일을 추가하십시오.

try{ 
    Sender sender = new Sender("<senderId>"); 
    ArrayList<String> devicesList = new ArrayList<String>(); 
    devicesList.add(<deviceId>); 
    String data = "<data>"; 
    Message message = new Message.Builder() 
         .collapseKey("1") 
         .timeToLive(3) 
         .delayWhileIdle(true) 
         .addData("message", 
           data) 
         .build(); 
    MulticastResult result = sender.send(message, devicesList, 1); 
       sender.send(message, devicesList, 1); 

       System.out.println(result.toString()); 
       if (result.getResults() != null) { 
        int canonicalRegId = result.getCanonicalIds(); 
        if (canonicalRegId != 0) { 
        } 
       } else { 
        int error = result.getFailure(); 
        System.out.println(error); 
       } 

}