请教安卓推送如何实现

小麻侬 2015-06-26 11:11:46
网上搜了下,大部分都是那一类帖子,MQTT、XMPP等。
我想问下,下面的实现方式为什么不可以:
自己写一个服务端A,下发通知。
app创建一个隐藏服务B,即便app被用户关闭(app进程被干掉),这个服务B仍然运行,由这个服务B和服务端A进行通信,建立连接,心跳可以10分钟发一次或更长时间,前提是服务端A不会主动断开和这个服务B的连接,然后有消息的话,服务端A直接推送给这个服务B,服务B收到消息后,进行消息提醒,app启动后,主动拉去消息,类似微信的方式,这个服务B只要一直监听是否收到数据就行了。

这种实现会很耗电吗(我觉得不会,正常的开销只有心跳)? 还有,安卓推送,想在app被用户关闭后收到通知,只能通过这种隐藏服务来实现吗?
...全文
377 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
caion 2016-06-21
  • 打赏
  • 举报
回复
引用 4 楼 ljcmeng 的回复:
首先LZ你要知道:推送需要解决的第一个问题是外网IP问题,移动设备和PC设备的最大不同在于经常处于网络环境变化的情况,这种情况下想要维持一个长连接的前提就是客户端定期发送心跳给运营商,而不是你的服务器,刷新NAT列表,以达到保持外网IP不变的目的,至于耗电的问题,Android上有AlarmManager定时方法,这个可以节省电量。 然后是第二个问题,如果用户数量多了,你的一台服务器需要保持多个长连接,这个时候性能怎么办?如果你的服务器还要处理数据访问,那就更加麻烦了。 所以,建议LZ不要自己做,直接使用比较成熟的第三方SDK或者自己搭建XMPP服务器来完成推送功能。
"维持一个长连接的前提就是客户端定期发送心跳给运营商,而不是你的服务器,刷新NAT列表,以达到保持外网IP不变的目的" 这句话赞
pgmsoul 2015-06-28
  • 打赏
  • 举报
回复
楼主的方案当然可行,如果有服务器,不用等10分钟客户端去拉取,拉取是用在http协议的服务器的情况,因为http是被动的。 长连接不但不耗资源,恰恰最省资源,而且服务器可以主动推送消息给客户端。 唯一的问题就是楼上的楼上说的问题,一是移动网络往往连接很差,会丢连接,推送可能就经常会失败;二是用户量大到一定基本,优化服务器的问题。 当然,如果是小用户量,自己设计完全可行,而且难度不是很高,网络不佳问题也不是很难解决。大用户量的情况,那也不是推送着一种功能的问题了,任何功能,大用户量都是需要额外考虑的,就像淘宝一个图片服务器都有求极高的技术含量,大多数人还不是直接存服务器硬盘上。
ljcmeng 2015-06-27
  • 打赏
  • 举报
回复
首先LZ你要知道:推送需要解决的第一个问题是外网IP问题,移动设备和PC设备的最大不同在于经常处于网络环境变化的情况,这种情况下想要维持一个长连接的前提就是客户端定期发送心跳给运营商,而不是你的服务器,刷新NAT列表,以达到保持外网IP不变的目的,至于耗电的问题,Android上有AlarmManager定时方法,这个可以节省电量。 然后是第二个问题,如果用户数量多了,你的一台服务器需要保持多个长连接,这个时候性能怎么办?如果你的服务器还要处理数据访问,那就更加麻烦了。 所以,建议LZ不要自己做,直接使用比较成熟的第三方SDK或者自己搭建XMPP服务器来完成推送功能。
JPF1024 2015-06-27
  • 打赏
  • 举报
回复
这个方法部分可行,但是用户多了就给自己带来了很大负担。 建议还是用成熟的SDK吧。
网络咖啡 2015-06-26
  • 打赏
  • 举报
回复
集成第三方SDK,例如极光推送、百度推送等 基于XMPP实现自己的推送
小麻侬 2015-06-26
  • 打赏
  • 举报
回复
自己顶起来~~
小麻侬 2015-06-26
  • 打赏
  • 举报
回复
引用 2 楼 Mailbomb 的回复:
集成第三方SDK,例如极光推送、百度推送等 基于XMPP实现自己的推送
大侠,我说的实现方法会有什么问题?

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧