中易网

android应用消息推送后台服务怎么写

答案:2  悬赏:60  
解决时间 2021-02-28 09:01
android应用消息推送后台服务怎么写
最佳答案
“android应用消息推送后台服务怎么写”相关的问题,中国学网通过互联网对“android应用消息推送后台服务怎么写”相关的解决方案进行了整理,用户详细问题包括:LZ现在要做一个应用信息推送的功能,具体情况如下:

们已经开发了一个应用,这里称为A应用,类似于appStore那种,A应用里面有很多第三方应用,可以查看和下载第三方应用。现在的任务就是如果这些第
三方应用有新版本了,要及时在手机上进行消息的推送,提示有哪些第三方应用有更新。注意这里不是推送我们的A应用有更新。
之前都没有做
过推送这块的工作,我谷歌了一下,发现有写开源厂家有些免费推送服务,比如极光推送https://www.jpush.cn/和百度云推送http:
//developer.baidu.com/cloud/push,大致看了下,可能了解不够,感觉他们只能做单个应用相关的应用信息推送。
另外也看到了其他一些,比如MQTT和ANDROID PN,还没有仔细研究,作为一个工作一年的小菜鸟表示感觉好迷茫,各位有何建议啊,望不吝赐教。,具体解决方案如下:
解决方案1:
那得启动程序就去检查, 第三方应用是否是最新版本, 不是的话,就提示拉
解决方案2:

引用 1 楼 qq237121087 的回复:那得启动程序就去检查, 第三方应用是否是最新版本, 不是的话,就提示拉

这么一说,我突然有另一个想法了,之前想的是提升有哪些第三方应用有更新,不过好像在世面没有看到过这种高科技玩法,我觉得弄一个A应用的推送也能实现,
推送弄简单点,就提示有多少个第三方应有有更新,点击提示跳转到A应用界面,用户在A应用中查看有哪些更新,这样应该是好实现些。
解决方案3:
app常驻后台并且更新比较频繁的用推送比较合适,对于不常驻的直接app登录一次刷新一次,等你搞出来借鉴下哈哈。
解决方案4:
android代码:

package com.taocaiku.gaea.service.socket;

import java.net.ServerSocket;
import java.net.Socket;
import org.apache.http.protocol.HTTP;
import org.json.JSONObject;
import com.taocaiku.gaea.common.TckApp;
import com.taocaiku.gaea.domain.context.Container;
import com.taocaiku.gaea.service.SettingService;
import com.taocaiku.gaea.util.FileUtil;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;


@SuppressLint("HandlerLeak")
public final class SocketThread extends Thread {

public void run() {
try {
while (true) {
if (!SocketManager.get().isStart()) {
return;
}
ServerSocket sever = SocketManager.get().getSocket();
if (null == sever || sever.isClosed()) {
return;
}
new ReadSocket(sever.accept()).start();
}
} catch (Exception e) {
Log.e("AbstractActivity", "Socket已经被回收");
}
}


public class ReadSocket extends Thread {

private Socket socket;

public ReadSocket(Socket socket) {
this.socket = socket;
}

public void run() {
try {
String jsonStr = FileUtil.get().readFile(socket.getInputStream(), HTTP.UTF_8, 1, false);
socket.close();
JSONObject json = new JSONObject(jsonStr);
if (json.getLong("memberId") == Container.member.getId() && Container.socketKey.equals(json.getString("socketKey"))
&& SettingService.get().getSetting(SettingService.RECEIVE_MSG)) {
Bundle bundle = new Bundle();
bundle.putInt("type", json.getInt("type"));
bundle.putString("data", json.getJSONObject("data").toString());
Message message = new Message();
message.setData(bundle);
TckApp.get().getLastAct(null).socketHandler.sendMessage(message);
}
} catch (Exception e) {
Log.e("AbstractActivity", "接收Socket消息,解析json", e);
}
}

}

}

服务器java代码:

public static boolean sendSocket(SocketVo vo) {
try {
if (!pingServer(vo.getIp(), 2000)) {return false;}
Socket socket = new Socket(vo.getIp(), vo.getPort());// 创建socket对象,指定服务器端地址和端口号
OutputStream output = socket.getOutputStream();
Writer writer = new OutputStreamWriter(output, CharEncoding.UTF_8);
PrintWriter out = new PrintWriter(writer, true);// 获取 Client 端的输出流
vo.setIp(null);vo.setPort(0);
out.print(GsonUtils.toJson(vo));// 填充信息
writer.flush();writer.close();
out.flush();out.close();
output.flush();output.close();
socket.close();
return true;
} catch (Exception e) {
log.error("发送Socket失败:" + e.getMessage());
return false;
}
}


public static boolean pingServer(String server, int timeout) {
try {
Process process = Runtime.getRuntime().exec("ping " + server + " -n 1 -w " + timeout);
if (null == process) {return false;}
String info = FileUtil.readFile(process.getInputStream(), ENCODING_GBK, 1, false);
return ToolUtil.getStrCharNum(info, "ms") >= 3;
} catch (Exception e) {
return false;
}
}
全部回答
查看一下manifest文件的属性 是否设置了 android:cleartaskonlaunch true
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
“雅致生活”瓷砖怎么样
为什么有的人自愿生三胎?
Mathematica中以Abs打头的函数有哪些
法国人一般几点吃早餐
火发房屋置换在什么地方啊,我要过去处理事情
星光大道何时播出
我吧手机分期钱还了,含用开庭吗
小渝州碳烤全鱼怎么样
玉峰北里地址在哪,我要去那里办事
地狱火堡垒攻略 死眼 dz怎么打
请问不倒绒/四方立绒及韩国绒三者有什么区别
3ph22ov是什么意思?台达变频器上标示的
ABC少儿进阶英语教材在哪可以买到
系统提示 run-time error '91' obj
汽车转向泵坏了会出现什么问题
推荐资讯
数据库创建查询的主要查询的主要步骤是什么?
苹果是单子叶植物还是双子叶植物
女生怎么强吻男生?
猫坞欧式奶茶怎么去啊,有知道地址的么
从塘沽火车站打车到天津经济技术开发区南海路
没有人永远都是好心情翻译
微小的食物呛入气管中,但一直没有感觉异常,
办贫困补助邮政卡未满16岁且户口本上的监护人
来月经吃辣的为什么会肚子痛
英雄联盟,大虫子变大什么时候变小
梦幻西游强P一人把他P死了 他要掉多少经验个
永年县刘汉中学地址在什么地方,想过去办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?