童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

没推送功能,你好意思叫app嘛?

1月5日 六壬会投稿
  相信大家对推送这项技术并不陌生。如果没听说过,那么作为一个充满好奇心的孩子,你一定想过这个问题:睡觉前我明明关闭了淘宝、网易新闻等App为什么第二天他们又自动出现在我手机的通知栏上呢?
  这其实就是推送系统干的好事:在你睡觉的时候,服务器悄悄的向你的手机推送了一个消息,然后唤醒了你已经关闭的App事实上,无论你愿意与否,现在大多数‘有节操’的App都已经内置了推送系统,并时刻准备着登上你的通知栏的‘头条’。
  传统的App架构里,通常是App主动向服务器请求数据,服务器被动的提供数据。
  以新闻客户端App为例:App被用户打开的时候,会通过网络(无论3G、4G还是wifi)连接到服务器上,向服务器请求最新的新闻。服务器收到请求,从自己的数据库里查询最新的新闻,返回给AppApp收到服务器返回的数据,经过一系列的解析处理操作,最终把最新的新闻呈现给用户,一次通信就完成了。然而如果此时服务器上又有了新的新闻,无论多么重要,在用户没有主动刷新的情况下,是没有办法让用户看到的。推送就是为了解决这样的困境的,它给了服务器一个展示自我的机会,主动连接上所有的App告诉他们我有新的新闻了,你们再来请求一次吧,于是收到推送的App即时此时已经被用户关闭了)又去服务器请求最新的新闻,这样用户就能看到最新的新闻了。
  从技术上来讲,实现一个推送系统需要服务器端和终端的配合。一种方法是轮询,也就是不停的向服务器发起请求。这其实很好理解,作为App我既然不知道什么时候会发生新的新闻,那我一遍一遍的问好了,而且我知道这样一定会成功的。显而易见,这种方法App端费时费力不说,电量流量也扛不住啊,服务器要处理如此量大的请求,必然也是非常头疼的。另一种方法是服务器和App建立一个长时间连接的通道,通过这个通道,不仅App可以向服务器请求数据,服务器也可以向App发送数据,看起来非常完美;但是如果App被用户关闭的话,通道就断掉了。好在android系统给App提供了一个这样的环境,App可以启动一个后台服务来维持这个通道,即使App被关掉了,服务依然可以运行,通道依然还在工作(ios后面会讲)。
  回到前面的例子,你在睡觉前关掉了淘宝,但是并没有关闭淘宝的后台服务,淘宝依然可以接收服务器推送来的指令,把自己的唤醒。那么如何维持这样的一条长时间连接的通道呢?就好比两个人打电话,一开始聊的热情有来有往,后来慢慢沉默下来了,几分钟之后,电话的另一头没有任何动静,如何知道那边的人还在呢?很简单,只需要另一头的人每隔几分钟说一个字就行。
  同样的道理,App会每隔一段时间向服务器报告自己还活着,就像心跳一样,服务器收到后,就知道这个通道是可以继续使用的了。然而天下没有免费的午餐,发送心跳是有代价的。一般手机锁屏之后,为了省电CPU是出于休眠状态的,然而发送心跳就会唤醒CPU,必然会增加电量的消耗。这还只是一个长连接通道的情况,如果手机里装了2、30个带有推送的App呢?
  先别急着抱怨,聪明的android工程师和ios工程师早就想到了这一点,他们分别设计了GCM和APNS来解决多个App有多个长连接通道的问题。
  以APNS为例,ios开通了一条系统级别的长连接通道,通道的一端是手机的所有App另一端是苹果的服务器。App的服务器如果有新的消息需要推送的话,先把消息发送到苹果的服务器上,再利用苹果的服务器通过长连接通道发送到用户手机,然后通知具体的App这样就做到了即使手机安装了100个App也只需要向一条通道里发送心跳。
  回到Android,系统提供的GCM只能在Android2。2以上才能使用,3。0以下必须要安装GooglePlay并登陆了Google账号才能支持。而国内发行的手机大多是阉割掉了google服务的。因此,对于Android系统来说,各家App只能各显神通,开发自己的专用长连接通道了。
  然而这时候他们遇到了App的天敌:管家和卫士们。前文说了,App想要及时收到服务器推送的消息,关键在于自己与服务器的长连接通道不被关闭,也就是自己的后台服务可以一直在后台运行,而管家和卫士们的一键清理功能就是专治这种“毒瘤”的。道高一尺魔高一丈,App在与管家和斗士们的长期斗争中,总结了一系列躲避被清理掉的方法;什么定时自启能力、什么相互唤醒、什么前台进程等等。当然这就是另一个话题了,我们后面会讲到。
  总结起来,App和后台的连接方式有两种。一种叫Pull,也叫轮询,就是定期的不断向后台请求;缺点是耗电,费流量,不环保。对于一名有追求的程序员,他应该会比较恶心这种方式的,你千万不要对他说,我不管你怎么实现,我就要这种效果这种傻逼话了,凡事应该找到最优路径。另一种叫Push,App和后台一直维持了一条通信通道,两端不定期的就会偷摸的约会,告诉对方“I’mHere”,也能顺带把信息互相携带了。缺点是要维持一条长连接通道,这条通道容易被其他程序杀死,要多想复活办法。
投诉 评论 转载

6个为新手用户设计的策略之前的文章里探讨过界面的易操作性,提到的主要是视觉层面的思考,今天这篇想总结一下对于新手用户,可以通过哪些设计策略来帮助他们进行操作。主要有6个策略:引导页覆……从运营角度来看首页设计简述最近进行的App端首页的改版项目,我在过程中参与了需求讨论和设计review。这里把我对首页改版的一些看法梳理一遍。核心思想是,首页设计应当区分是偏重内容消费还是频道……你的软件界面布局设定方法靠谱吗?本文不适合采用天才设计(GeniusDesign)方法的人士。有一种“奇怪的”现象会经常的看到“很多设计师没有办法清楚的跟其他人解释他们是如何设计的,越细致的地方可能越是……为什么设计师也要学会判断优先级我的主管经常对我们说:产品经理最重要的能力就是判断优先级,不然就不叫产品经理,而是需求经理。以前我听了总是不以为然,觉得判断优先级就是优先做紧急的和实现成本低的需求,毫无技术含……高阶运营是一种怎么样的体验?你离它还有多远!做运营就像是玩游戏的打怪升级,从初级菜鸟到高阶油条,从一无所知道到能够带新人勇于冲锋陷阵的独胆一面。我们总是对比自己好的人充满好奇心,在贫困时渴望体验下富人的生活,所以做运营的……当朋友圈更新多到看不完时,来看看Facebook是怎么优化信本文是FREES互联网团队成员覃超与徐万鸿进行的一场AskMeAnything。徐是前Facebook新闻流排序组的资深工程师,在今年9月回国出任神州专车CTO。本文……从现实到网页!有哪些暖到心窝里的情感化设计?如果起床是一个目标,那么正确的设计是床头放个闹钟,而情感化设计就是让爱人把你吻醒。究竟这么高逼格的一个词是什么意思呢?我们先看看官方的说法:情感化设计是指旨在……专业干货!如何用科学方法帮你提升用户粘性?如何提高用户粘性?今天阿里锦笙同学翻译的好文,从心理学、用户行为习惯、钩状模型、触发器、动机等方面给出了科学专业的分析,行文流畅自如,循序渐进,有不少闪光知识点,来收!如……没推送功能,你好意思叫app嘛?相信大家对推送这项技术并不陌生。如果没听说过,那么作为一个充满好奇心的孩子,你一定想过这个问题:睡觉前我明明关闭了淘宝、网易新闻等App为什么第二天他们又自动出现在我手机的通知……布局还是内容,谁更优先?如果你要开始准备网站的重设计且手头恰好有一堆文字图片的话,内容优先的战略肯定是没错的。当你力图让新网站能在小屏幕上有不错的体验时,最好基于那些按照用户需求优化后的内容采用渐进增……如何把互联网产品设计得简单易用?(中)6。显示用户关注的信息,增强用户控制力。任何一个产品,都不应该让用户有失去控制的感觉。一旦用户感到失控,就会心慌意乱甚至害怕,放弃产品自然也就是下意识的反应了。因此,产品……APP导航设计:它没有描述中的那么神乎!关于移动端导航模式,我想你身边已经有很多很多类似的文章了,什么“标签式导航”、“抽屉式导航”、“列表式导航”、“葫芦娃喷火式导航”、“天马流星式导航”甚至你以为掌握这些,就能游……
关于排版,给你几个甲方不怼你的理由!(一)Facebook产品设计VP:人人都能用的战略思维指南职场新人,如何快速Hold住一个设计项目?探索服务设计的深层定义淘宝安卓端的设计思考漫谈“感知”与产品设计好设计的10个原则:影响着苹果、索尼的产品设计理念写给交互设计师:莫让体制扼杀了你的思考小按钮图片列表常见样式和设计要点有关聊天气泡框,80的人都不知道这些。。一款产品的升级迭代路径PC端产品安全感和可用性设计策略啤酒的保质期是多久?啤酒过期了怎么办?有关校园暴力的初中英语作文牲怎么组词牲如何组词你的半身裙选对了吗?商用厨房排烟系统固定资产管理及战略投资集团管控的核心我多么想成为一名画家历史上的今天5月19日张元英机场穿搭真有范!时髦精致又高贵,不愧是公认的小公主哪些人群易患高脂血症高血脂人群日常生活注意事项千变万化的同义词黑洞激光器终于可以照亮难以捉摸的霍金辐射

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界