2013-07-16 107 views
1

我需要爲gcm的服務器端實現一個獨立的應用程序來將通知推送到設備。除了入門頁面上的參考資料外,是否還有其他參考資料可供參考。人們對xmpp進行了說明。我們需要使用這個還是我們可以直接使用gcm服務器端的方法。幫助還有其他簡單的方法來實現這個。我希望我能正確地提出我的問題。java的GCM服務器端實現

+0

您不必使用XMPP。查看示例代碼的答案[here](http://stackoverflow.com/questions/17456663/is-it-possible-to-add-php-scripts-in-a-java-server/17457207#17457207)。 – Eran

+0

謝謝艾蘭......會嘗試使用這個,並會在任何問題的情況下回來:) – user2525103

+0

那麼你可以使用一些產品,如Xtify或Parse Push。 –

回答

1

爲Java實現GCM服務器端最簡單的方法是使用restful POST。 URL: 「https://android.googleapis.com/gcm/send

示例代碼:使用劃線框架作爲消費者

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

    request.addPayload(data); 

    Response response = request.send(); 
} 
+0

OAuthRequest? – Vivek

+0

@Dat Nguyen OAuthRequest我們在哪裏可以得到這個類? –

+0

@abdul rahman k我正在使用Scribe庫來請求api,您可以使用HttpClient或OkHttp代替 –

0

有2種方法可以實現服務器GCM連接
1)XMPP
2)HTTP

不同之處在於,XMPP允許您從設備到服務器(雙向)獲取響應,HTTP是(單向)GCM,您只能向設備發送推送通知。

如果你需要完整的Java實現客戶端和HTTP服務器,這裏是鏈接 GCM Client and Server

+2

他要求在java中實現Server,並且您提供了使用php的鏈接。 – Vivek

3

這裏是很好的教程GCM服務器端實現的Java。 網址:java gcm server side implementation

示例代碼:JAVA GCM服務器端implementation` {

new Thread(){ 

     public void run(){ 

      try { 
       //Please add here your project API key: "Key for browser apps (with referers)". 
       //If you added "API key Key for server apps (with IP locking)" or "Key for Android apps (with certificates)" here 
       //then you may get error responses. 
       Sender sender = new Sender("AIzaSyB7Ej255tpTaemk_-Ljmn4GcklldT14Hp4"); 

       // use this to send message with payload data 
       Message message = new Message.Builder() 
       .collapseKey("message") 
       .timeToLive(3) 
       .delayWhileIdle(true) 
       .addData("message", "Welcome to Push Notifications") //you can get this message on client side app 
       .build(); 

       //Use this code to send notification message to a single device 
       Result result = sender.send(message, 
         "APA91bEbKqwTbvvRuc24vAYljcrhslOw-jXBqozgH8C2OB3H8R7U00NbIf1xp151ptweX9VkZXyHMik022cNrEETm7eM0Z2JnFksWEw1niJ2sQfU3BjQGiGMq8KsaQ7E0jpz8YKJNbzkTYotLfmertE3K7RsJ1_hAA", 
         1); 
       System.out.println("Message Result: "+result.toString()); //Print message result on console 

       //Use this code to send notification message to multiple devices 
       ArrayList<String> devicesList = new ArrayList<String>(); 
       //add your devices RegisterationID, one for each device    
       devicesList.add("APA91bEbKqwTbvvRuc24vAYljcrhslOw-jXBqozgH8C2OB3H8R7U00NbIf1xp151ptweX9VkZXyHMik022cNrEETm7eM0Z2JnFksWEw1niJ2sQfU3BjQGiGMq8KsaQ7E0jpz8YKJNbzkTYotLfmertE3K7RsJ1_hAA"); 
       devicesList.add("APA91bEVcqKmPnESzgnGpEstHHymcpOwv52THv6u6u2Rl-PaMI4mU3Wkb9bZtuHp4NLs4snBl7aXXVkNn-IPEInGO2jEBnBI_oKEdrEoTo9BpY0i6a0QHeq8LDZd_XRzGRSv_R0rjzzZ1b6jXY60QqAI4P3PL79hMg"); 

       //Use this code for multicast messages 
       MulticastResult multicastResult = sender.send(message, devicesList, 0); 
       System.out.println("Message Result: "+multicastResult.toString());//Print multicast message result on console 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }.start(); 
}` 
+0

有沒有辦法設置這些消息的優先級? –