z******e 发帖数: 41 | 1 最近试了几个不同的即时通讯app,发现各家对于后台运行的方式大不相同,在这里讨
论一下。
为了避免混淆,我先定义app的几种状态:
1. 前台运行:这个大家都懂
2. 后台运行:前台运行时按下home键,程序停留在后台(双击home键可以看到所有后
台运行的app)
3. 强制退出:双击home键,长按app图标,点x将其关闭
========================
声明一下,本人非iOS开发者,有些用词或者理解不当的地方还请见谅。尤其是对于后
台运行状态和强制退出状态的区别,我至今也没有搞明白。貌似有些后台运行的应用时
间长了会自动退出。不知道是不是iOS的多任务机制本身就是这样设计的,例如在内存
不够时,强制让很久没有运行的应用退出?
========================
好,回到主题。
我本来希望即时通信软件的工作模式是这样的:
* 在前台和后台运行时,对外显示为“在线”,接收即时消息推送。
* 当强制退出应用时,对外显示为“离线”,可以选择接收或者不接受离线消息推送。
我个人觉得“退出应用即显示离线”的好处是:
1)可以通过app是否在后台运行直观的知道自己是否在线
2)避免半夜睡觉还显示一直在线
3)强制退出app比较方便(不用手动在应用中“Log out”)
可是最近用了好几种app,发现只有QQ和Vtok是这样工作的。具体如下:
1. QQ: 后台运行显示“在线”;强制退出可以选择“在线”或”离线“
2. Vtok(gtalk): 后台运行显示“在线”; 强制退出显示“离线”
3. MSN:无论后台运行还是强制退出都显示“在线”,必须手工登出
4. ebuddy: 无论后台运行还是强制退出都显示“在线”。可以选择(从进入后台时起
)立刻或者若干分钟后自动离线,之后就再也收不到消息推送了。
5. IM+:同上
6. imo: 无论后台运行还是强制退出都显示“在线”,必须手工登出
个人比较喜欢qq和Vtok的处理方式,大家都是怎么看的?
另外可能自己使用过的即时通信app有限,难免以偏概全,欢迎大家补充! |
n**y 发帖数: 11447 | 2 ios的后台跟关了没啥区别
现在ios的IM应用基本都提供服务器代挂选项,这样app后台或者关闭后还可以显示在线
并接受消息。关闭这个选项的话,app后台或者退出后就显示离线了(此时不能接收消
息) |
a****a 发帖数: 3992 | 3 除了vtalk之外其他几个都比较熟悉,假设你说的“强制退出”是指双击home,然后在
recent app里面把它关闭掉的话,那qq在你“强制”退出后也会继续接收push消息的。
ios上的这几个app都不会在后台运行,也不会连接网络,是有专门的push服务器来保持
你的账户在线的,接受到新消息再通过push notification发送到你手机上。即使这个
app不在内存中,系统也会继续接收push消息。需要注意的是,push notification是通
过ios统一的通道来发送的,并不会被relay到个别具体的app(除了imo),所以你每次
收到push通知之后打开那个app,还需要重新连接网络来download新消息。imo似乎是你
打开之后会显示push消息,同时download新消息,然后再用新消息来代替当前显示的
push消息。
android上即使是通过c2dm接收的push 消息,也会被relay给app本身,而且c2dm可以唤
醒app来接受消息,所以当你看到通知打开app的时候,新消息就已经保存在本地了。 |
a****a 发帖数: 3992 | 4 qq的“显示在线”和“在线”是两回事
即使你选择关闭“显示在线”,还是“在线”的,只是隐身了而已
【在 n**y 的大作中提到】 : ios的后台跟关了没啥区别 : 现在ios的IM应用基本都提供服务器代挂选项,这样app后台或者关闭后还可以显示在线 : 并接受消息。关闭这个选项的话,app后台或者退出后就显示离线了(此时不能接收消 : 息)
|
z******e 发帖数: 41 | 5 长知识了。
其实我对于强制退出后还接收推送并无异议。主要是不喜欢退出后还显示为在线(隐身
也好啊),这样我就永远不知道我此刻是否还是在线的了?
【在 a****a 的大作中提到】 : 除了vtalk之外其他几个都比较熟悉,假设你说的“强制退出”是指双击home,然后在 : recent app里面把它关闭掉的话,那qq在你“强制”退出后也会继续接收push消息的。 : ios上的这几个app都不会在后台运行,也不会连接网络,是有专门的push服务器来保持 : 你的账户在线的,接受到新消息再通过push notification发送到你手机上。即使这个 : app不在内存中,系统也会继续接收push消息。需要注意的是,push notification是通 : 过ios统一的通道来发送的,并不会被relay到个别具体的app(除了imo),所以你每次 : 收到push通知之后打开那个app,还需要重新连接网络来download新消息。imo似乎是你 : 打开之后会显示push消息,同时download新消息,然后再用新消息来代替当前显示的 : push消息。 : android上即使是通过c2dm接收的push 消息,也会被relay给app本身,而且c2dm可以唤
|
a****a 发帖数: 3992 | 6 gtalk有些第三方app是支持隐身状态的,有些不支持
主要是没有官方app,官方是肯定会支持隐身的
【在 z******e 的大作中提到】 : 长知识了。 : 其实我对于强制退出后还接收推送并无异议。主要是不喜欢退出后还显示为在线(隐身 : 也好啊),这样我就永远不知道我此刻是否还是在线的了?
|
i*****o 发帖数: 1714 | 7 ios一样可以通过push做所有通信,只是一般的app都不用这个功能,因为很多人把push
disable了。
lz的问题是这些app没有准确的detect离线,或者说他们对这方面不是很在乎。
★ 发自iPhone App: ChineseWeb 7.7
【在 a****a 的大作中提到】 : 除了vtalk之外其他几个都比较熟悉,假设你说的“强制退出”是指双击home,然后在 : recent app里面把它关闭掉的话,那qq在你“强制”退出后也会继续接收push消息的。 : ios上的这几个app都不会在后台运行,也不会连接网络,是有专门的push服务器来保持 : 你的账户在线的,接受到新消息再通过push notification发送到你手机上。即使这个 : app不在内存中,系统也会继续接收push消息。需要注意的是,push notification是通 : 过ios统一的通道来发送的,并不会被relay到个别具体的app(除了imo),所以你每次 : 收到push通知之后打开那个app,还需要重新连接网络来download新消息。imo似乎是你 : 打开之后会显示push消息,同时download新消息,然后再用新消息来代替当前显示的 : push消息。 : android上即使是通过c2dm接收的push 消息,也会被relay给app本身,而且c2dm可以唤
|
a****a 发帖数: 3992 | 8 ios只能通过push来接受消息。。。。
你是想说android吧。。。大部分美国的app都是用c2dm的,大部分中国app都是后台
pull的
push
【在 i*****o 的大作中提到】 : ios一样可以通过push做所有通信,只是一般的app都不用这个功能,因为很多人把push : disable了。 : lz的问题是这些app没有准确的detect离线,或者说他们对这方面不是很在乎。 : : ★ 发自iPhone App: ChineseWeb 7.7
|
n**y 发帖数: 11447 | 9 哈哈,国内的app都琢磨着干点啥坏事呢
【在 a****a 的大作中提到】 : ios只能通过push来接受消息。。。。 : 你是想说android吧。。。大部分美国的app都是用c2dm的,大部分中国app都是后台 : pull的 : : push
|
i*****o 发帖数: 1714 | 10 android2.2以前没有push,所以大家只能自己background pull。只有新的app才用
android的push。已经做了background的不会改了,反正还要支持旧用户。
iOS上完全可以只用push做一个messenger之类的东西。
★ 发自iPhone App: ChineseWeb 7.7
【在 a****a 的大作中提到】 : ios只能通过push来接受消息。。。。 : 你是想说android吧。。。大部分美国的app都是用c2dm的,大部分中国app都是后台 : pull的 : : push
|
|
|
a****a 发帖数: 3992 | 11 facebook等等支持c2dm也都是2.2之前就有了的
中国app不支持的原因是google的c2dm服务器在中国不稳定
【在 i*****o 的大作中提到】 : android2.2以前没有push,所以大家只能自己background pull。只有新的app才用 : android的push。已经做了background的不会改了,反正还要支持旧用户。 : iOS上完全可以只用push做一个messenger之类的东西。 : : ★ 发自iPhone App: ChineseWeb 7.7
|
a****a 发帖数: 3992 | 12 ios上的messenger全部都是只通过push的啊
【在 i*****o 的大作中提到】 : android2.2以前没有push,所以大家只能自己background pull。只有新的app才用 : android的push。已经做了background的不会改了,反正还要支持旧用户。 : iOS上完全可以只用push做一个messenger之类的东西。 : : ★ 发自iPhone App: ChineseWeb 7.7
|
i*****o 发帖数: 1714 | 13 google的c2dm是2.2 才有的, 在这之前可能有其它人的service。
我的意思是说你可以完全不用pull,只用notification service就可以做一个
messenger。现在的app都是pull自己的server,只是在notification时用push。
【在 a****a 的大作中提到】 : ios上的messenger全部都是只通过push的啊
|
a***n 发帖数: 538 | 14 voip的应用是可以后台的。
bria用标准sip就是两种工作方式,udp sip需要后台很费电,tcp不用后台ios可以保持
tcp链接。两种方式都不用push。
【在 a****a 的大作中提到】 : ios只能通过push来接受消息。。。。 : 你是想说android吧。。。大部分美国的app都是用c2dm的,大部分中国app都是后台 : pull的 : : push
|
w*****e 发帖数: 806 | 15 狠讨厌qq,re下面2点.
即使“强制”退出后,也会继续接收push消息的。
即使这个app不在内存中,系统也会继续接收push消息 |
a****a 发帖数: 3992 | 16 你log out不就完了
【在 w*****e 的大作中提到】 : 狠讨厌qq,re下面2点. : 即使“强制”退出后,也会继续接收push消息的。 : 即使这个app不在内存中,系统也会继续接收push消息
|
n**y 发帖数: 11447 | 17 qq有个后台保持在线的选项,关了就行
【在 w*****e 的大作中提到】 : 狠讨厌qq,re下面2点. : 即使“强制”退出后,也会继续接收push消息的。 : 即使这个app不在内存中,系统也会继续接收push消息
|
F********y 发帖数: 7139 | |
z******e 发帖数: 41 | 19 关了好像还是会接收消息,只是显示为隐身而已
【在 n**y 的大作中提到】 : qq有个后台保持在线的选项,关了就行
|
n**y 发帖数: 11447 | 20 是么?
那估计只有注销这一个办法了
【在 z******e 的大作中提到】 : 关了好像还是会接收消息,只是显示为隐身而已
|
s**********d 发帖数: 36899 | 21
very different.
【在 n**y 的大作中提到】 : ios的后台跟关了没啥区别 : 现在ios的IM应用基本都提供服务器代挂选项,这样app后台或者关闭后还可以显示在线 : 并接受消息。关闭这个选项的话,app后台或者退出后就显示离线了(此时不能接收消 : 息)
|