當前位置:編程學習大全網 - 編程語言 - 安卓應用消息推送後臺服務怎麽寫?

安卓應用消息推送後臺服務怎麽寫?

關於如何編寫android應用消息推送後臺服務的問題,中國王雪通過互聯網整理了“如何編寫android應用消息推送後臺服務”相關的解決方案。用戶詳細提問包括:LZ現在準備做壹個申請信息推送功能,具體如下:

我們開發了壹個應用程序,這裏稱為App A,類似於appStore。App A裏有很多第三方應用,可以查看和下載第三方應用。現在的任務是如果這些第壹

第三方應用有了新版本,要及時在手機上推送消息,提示哪些第三方應用更新了。註意,這不是推。我們的A應用已更新。

我以前沒做過

我googled了壹下這個作品,發現有壹些開源廠商寫的免費推送服務,比如極光推送/和百度雲推送/cloud/push。粗略看了壹下,可能了解不夠,感覺他們只能推送單個應用相關的應用信息。

另外我還看到了壹些其他的,比如MQTT,ANDROID PN,沒有仔細研究過。作為壹個工作壹年的菜鳥,感覺很迷茫。如果妳有什麽建議,請告訴我。,具體解決方案如下:

溶液1:

如果啟動程序,請檢查第三方應用程序是否是最新版本。如果沒有,會提示妳拉。

解決方案2:

引用1樓QQ 237121087的回復:如果需要啟動程序,檢查第三方應用是否為最新版本,如果不是,會提示拉。

妳們

說到這裏,我突然又有了壹個想法。我想過升級哪些第三方應用更新了,但好像世界上沒見過這麽高科技的玩法。我覺得可以通過推壹個A應用來實現。

按簡化按鈕,提示有多少第三方應該有更新。點擊提示跳轉到A應用界面,用戶可以查看A應用有哪些更新,應該更容易實現。

解決方案3:

當app常駐後臺,更新頻繁時,用push比較合適。對於不常駐的直接app登錄,刷新壹次,等妳來借鑒。

解決方案4:

Android代碼:

包com . Tao caiku . Gaea . service . socket;

導入Java . net . server socket;

導入Java . net . socket;

導入org.apache..Tao caiku . Gaea . common . tckapp;

導入com . Tao caiku . Gaea . domain . context . container;

導入com . Tao caiku . Gaea . service . settings service;

導入com . Tao caiku . Gaea . util . fileutil;

導入Android . annotation . suppress lint;

導入Android . OS . bundle;

導入Android . OS . message;

導入Android . util . log;

/**

*線程運行套接字通信

* @作者TCK-001

* @版本1.0

*/

@SuppressLint("HandlerLeak ")

公共最終類SocketThread擴展線程{

公共無效運行(){

嘗試{

while (true) {

如果(!SocketManager.get()。isStart()) {

返回;

}

server socket sever = socket manager . get()。get socket();

if(null = = sever | | sever . is closed()){

返回;

}

新的ReadSocket(sever.accept())。start();

}

} catch(異常e) {

Log.e("抽象活動","套接字已被回收");

}

}

/**

*讀取套接字並解析它。

* @作者TCK-001

* @版本1.0

*/

公共類ReadSocket擴展線程{

私用插座插座;

公共讀取套接字(套接字套接字){

this.socket = socket

}

公共無效運行(){

嘗試{

String jsonStr = FileUtil.get()。readFile(socket.getInputStream(),HTTP。UTF_8,1,假);

socket . close();

JSON object JSON = new JSON object(JSON str);

if(JSON . getlong(" memberId ")= = container . member . getid()& amp;& ampcontainer . socket key . equals(JSON . getstring(" socket key "))

& amp& ampSettingService.get()。get setting(settings service。RECEIVE_MSG)) {

Bundle Bundle = new Bundle();

bundle.putInt("type ",JSON . getint(" type "));

bundle.putString("data ",json.getJSONObject("data ")。toString());

Message = new Message();

message . setdata(bundle);

TckApp.get()。getLastAct(null). socket handler . sendmessage(message);

}

} catch(異常e) {

Log.e("AbstractActivity ","接收Socket消息並解析json ",e);

}

}

}

}

服務器java代碼:

/**

*發送套接字通信消息

* @param vo

* @返回

*/

公共靜態布爾發送套接字(SocketVo vo) {

嘗試{

如果(!pingServer(vo.getIp(),2000)){返回false}

Socket Socket = new Socket(VO . getip()、VO . getport());//創建壹個套接字對象,並指定服務器端地址和端口號。

output stream output = socket . get output stream();

writer writer = new output streamwriter(output,CharEncoding。UTF _ 8);

PrintWriter out = new PrintWriter(writer,true);//獲取客戶端的輸出流。

vo.setIp(空);VO . setport(0);

out . print(gsonutils . tojson(VO));//填寫信息

writer . flush();writer . close();

out . flush();out . close();

output . flush();output . close();

socket . close();

返回true

} catch(異常e) {

Log.error("發送套接字失敗:"+e . getmessage());

返回false

}

}

/**

*妳能ping通IP地址嗎?

* @param服務器IP地址

* @param超時超時持續時間

* @return布爾值

*/

公共靜態布爾pingServer(字符串服務器,int超時){

嘗試{

process process = runtime . get runtime()。exec(" ping "+server+"-n 1-w "+time out);

if(null = = process){返回false}

string info = file util . readfile(process . getinputstream(),ENCODING_GBK,1,false);

return tool util . getstrcharnum(info," ms ")& gt;= 3;

} catch(異常e) {

返回false

}

}

  • 上一篇:編程教程《貓變形記》編程難度
  • 下一篇:南通高硬防電信機房的機房的基礎設施
  • copyright 2024編程學習大全網