我需要爲gcm的服務器端實現一個獨立的應用程序來將通知推送到設備。除了入門頁面上的參考資料外,是否還有其他參考資料可供參考。人們對xmpp進行了說明。我們需要使用這個還是我們可以直接使用gcm服務器端的方法。幫助還有其他簡單的方法來實現這個。我希望我能正確地提出我的問題。java的GCM服務器端實現
回答
爲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();
}
OAuthRequest? – Vivek
@Dat Nguyen OAuthRequest我們在哪裏可以得到這個類? –
@abdul rahman k我正在使用Scribe庫來請求api,您可以使用HttpClient或OkHttp代替 –
有2種方法可以實現服務器GCM連接
1)XMPP
2)HTTP
不同之處在於,XMPP允許您從設備到服務器(雙向)獲取響應,HTTP是(單向)GCM,您只能向設備發送推送通知。
如果你需要完整的Java實現客戶端和HTTP服務器,這裏是鏈接 GCM Client and Server
他要求在java中實現Server,並且您提供了使用php的鏈接。 – Vivek
這裏是很好的教程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();
}`
有沒有辦法設置這些消息的優先級? –
- 1. Android推送服務,實現gcm服務器端
- 2. CORS Java服務器端實現
- 3. Java客戶端/服務器實現
- 4. android客戶端 - java服務器實現
- 5. GCM蟒蛇服務器端實現:錯誤= MissingRegistration
- 6. GCM服務器的Java實現空指針異常
- 7. RTCweb服務器端實現
- 8. 實現NTP服務器端
- 9. 錯誤GCM Java服務器
- 10. GCM的服務器端問題
- 11. 實現Webhooks的服務器端
- 12. Java服務器端單元測試GCM的結果
- 13. 爲服務器端設置gcm
- 14. 服務器端GCM返回錯誤400
- 15. GCM和服務器端相關問題
- 16. 用於實現系統服務器端的Java RMI
- 17. java序列化|更改服務器端的域對象實現
- 18. HTTP驗證解碼的開源Java服務器端實現
- 19. 如何在支持CCS的C#中實現GCM服務器
- 20. 實現帶有數據庫,GCM和後臺線程的Java Web服務器
- 21. 用Grails實現服務器端事件
- 22. REQUEST發送後實現服務器端
- 23. 自動完成服務器端實現
- 24. 在服務器端實現webrtc
- 25. 實現服務器和客戶端
- 26. 如何實現服務器端SMTPSTARTTLS?
- 27. 如何實現worklight服務器端serverSessionTimeout?
- 28. Android SyncAdapter服務器端實現
- 29. SMB/CIFS服務器端實現
- 30. 總是從GCM(服務器端)在GCM無效註冊
您不必使用XMPP。查看示例代碼的答案[here](http://stackoverflow.com/questions/17456663/is-it-possible-to-add-php-scripts-in-a-java-server/17457207#17457207)。 – Eran
謝謝艾蘭......會嘗試使用這個,並會在任何問題的情況下回來:) – user2525103
那麼你可以使用一些產品,如Xtify或Parse Push。 –