2013-06-13 3 views
0

이 질문은 어리석은 일이지만 어쨌든 시도 할 것입니다 ... 나는 grails 프레임 워크에서 실행되는 일부 webservices가 있습니다. 현재 내 클라이언트 (안드로이드, iOS 및 Windows 전화 장치)는 일반적인 http get/post 요청을 통해 해당 서비스와 통신합니다. 새로운 서비스를 추가하여 JSON 형식의 클라이언트에 일부 알림을 전달해야합니다 (연결 유지는 옵션이 아니며 정기적 인 폴링도 아닙니다). 까다로운 부분은 서비스가 가능한 한 독립적으로 유지되기를 바랍니다. 클라이언트 플랫폼 (따라서 Google Cloud Messaging 및 Apple Push Notification Service와 같은 도구를 사용할 수 없음) ... 어떻게해야하는지에 대한 제안이 있습니까? 그리고 이것을 달성 할 수 있습니까?푸시 알림을 구현하는 방법은 무엇입니까?

답변

0

android, iOS and windows phone에서 http get/post 개의 요청을 말씀 하셨을 때, 저는 귀하가 해당 브라우저에 대해 이야기하고 있다고 가정합니다. 그런 경우 인 WebSocket을 사용하여 동일한 결과를 얻을 수 있습니다.

Atmosphere이 경우에 보증 할 내용입니다.

+0

, 내 요청을 화재로 일부 아파치 라이브러리를 사용하고 ... 그러나 분위기 프로젝트는 거의 내가 무슨이다 찾고, 고마워! – edhoedt

3

Grails의 일부 플러그인이 안정적이지 않다고 생각합니다. Android의 경우 scribe 프레임 워크를 사용하여 http post를 수행 할 수 있습니다. 예 :

iOS 용
def pushToAndroidDevice(String deviceToken, Map data) { 
    OAuthRequest request = new OAuthRequest(Verb.POST, 'https://android.googleapis.com/gcm/send') 
    request.addHeader("Authorization", "key=" + apiKey) 
    request.addHeader("Content-Type", "application/json") 

    def jsonBody = [:] 
    def deviceTokens = [] << deviceToken 
    jsonBody.registration_ids = deviceTokens 
    jsonBody.data = data 

    request.addPayload((jsonBody as JSON).toString()) 

    Response response = request.send() 
    return JSON.parse(response.body).toString() 
} 

, 당신이 사용할 수있는 라이브러리 javaPNS : 사실 https://code.google.com/p/javapns/

import javapns.Push; 
.... 
def pushToIOSDevice(String deviceToken, Map data) { 
    String certificatePath = grailsConfig.apns.certificate //path of your certificate (*.p12) 
    String password = grailsConfig.apns.password //your apns password 

    PushNotificationPayload payload = PushNotificationPayload.complex(); 
    payload.addAlert(data.get("message")); 
    payload.addCustomDictionary("title", data.get("title")); 
    payload.addCustomDictionary("action", data.get("action")); 

    Push.payload(payload, certificatePath, password, false, deviceToken);   

} 
관련 문제