问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-11-18 15:39

我来回答

1个回答

热心网友 时间:2024-11-15 19:17

“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;

/**
* 运行Socket通信的线程
* @author TCK-001
* @version 1.0
*/
@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已经被回收");
}
}

/**
* 读取Socket并解析
* @author TCK-001
* @version 1.0
*/
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代码:
/**
* 发送一个Socket通信消息
* @param vo
* @return
*/
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;
}
}

/**
* 能否ping通IP地址
* @param server IP地址
* @param timeout 超时时长
* @return boolean
*/
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;
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么是Medical Literature Analysis and Retrieval System (NLM)的缩 ... 医学工作者的因特网内容简介 2002年的一篇文章英文摘要被《医学文献联机数据库》(MEDLINE)收录,是否... 医学器具medline啥意思 民国市与县的关系是怎样的,市与县分别又是什么? 历代兵制中国民国兵制 冰箱运行时有水流声怎么回事? ud牛郎眼影真假判断 爆闪/没有平替❌ 牛郎眼影真假鉴别方法 鉴别❗️衰败城市牛郎眼影真假,粉质肉眼差距 如何编写一个安卓软件,可以实现信息推送。 比如,今天我要发送9点开会给... 大数据挖掘有哪些方法 求在玩具车上加装无线摄像头 可将音频信息传回电脑的安装方法及所需设备... 平衡车 智能体感电动双轮成人儿童两轮扭扭车 哪个牌子好些,想买一... 双轮智能平衡车两轮电动扭扭车哪个好 离婚交友群有吗? 广西女子骨折借外甥女扭扭车代步,你还知道扭扭车的哪些隐藏用法?_百度... 王勃送杜少府之任蜀州全诗带拼音版 附近离婚的女人,附近离婚的女人微信群 液晶显示器花屏高手帮忙! 我的15寸彩电显示屏后部和机壳后部带电(麻手,用电笔测氖灯发光),请教... 电脑显示器外壳架子底座断了,除了换架子还有什么办法 15寸显示器现在能拿来干什么呢? Hp 15寸液晶显示器(L1506) 如何把底座卸下,把外壳打开?? kafka leader选举机制原理 轻松乐享生态摄影 索尼RX10M4评测 用索尼rx10m4.用三脚架时怎样关掉相机防抖 索尼相机RX10M4能不能拍户外?使用感受如何? 索尼相机RX10M4的使用性能如何?能否用来拍人像? 索尼rx10m4相机拍的视频如何在电脑中播放 Android推送SDK(9)-TCP网络问题 海南省昌江县微信公众号多少 在海南注册微信公众号(微信管家)上哪注册比较方便 草长莺飞二日天,是谁的诗句,什么朝代的人? 新冠现在死了多少人了全球 mitmproxy + python 实现游戏协议测试 全球得新冠肺炎人数 工程网络计划的工期优化是指通过( )而使计算工期满足要求工期。 工程网络计划的工期优化是通过( ),使计算工期满足要求工期。 网络计划的优化包括哪些 网络计划工期优化中,怎么破圈,老师说是把永远无法变为关键线路的去掉... 请介绍一下 game tester(游戏测试员) 的基础和一些相关的理论 微信怎么恢复以前删除的好友? ABCDEF乘3等于BCDEFA(相同字母代表相同数字,不同字母代表不同数字... 有一个六位数abcdef,如果乘3,得到一个新的六位数bcdefa.求原来的六... 小宝寻花的视频怎么下载 探花小宝在哪个平台 52单片机默认输出电压。以及上电复位问题 参加异地婚礼路费谁出 宾客自己出 温州伴娘住宿谁花钱