1
l9S1ZHbn4KO3vq4i 2014-01-27 21:27:36 +08:00
估计是tcp长连接、或者udp。
|
3
michaelfeng OP @leadworld 后来发现是使用的apple的notification center实现的,然后又
|
4
michaelfeng OP @leadworld 后来发现是使用的apple的notification center实现的,然后又去看了下sdk里面关于notification center的部分,没有细讲有个大概的流程,也在其他论坛里有人讲了下他们的想法。可能也是通过tcp或者udp等底层的方式实现,不得而知
|
5
michaelfeng OP @wzxjohn 后来发现是使用的apple的notification center实现的,然后又去看了下sdk里面关于notification center的部分,没有细讲有个大概的流程,也在其他论坛里有人讲了下他们的想法。可能也是通过tcp或者udp等底层的方式实现,不得而知
|
6
itommy 2014-01-27 22:38:42 +08:00 via iPhone
确定有把微信从notification center关掉后还能收到push的方法?
|
7
lightening 2014-01-27 23:11:15 +08:00
@michaelfeng
@itommy 我觉得你关掉的只是通知吧,但是微信还有 In-app notification,如果不在微信设置里关掉,应该还是会弹出通知,只是不是通过 notification center 的。 |
8
standin000 2014-01-27 23:40:18 +08:00
@lightening 不通过notification center, 如何在后台运行?
|
9
itommy 2014-01-27 23:47:03 +08:00 via iPhone
@lightening 理论上应该是只要屏幕上不在运行这个app了,就只能通过 notification center 来推送了。
|
10
vixvix 2014-01-28 00:07:08 +08:00 1
如果iOS的话notification分push和local. 如果app还在background的话可以做local. App要支持local的话provisioning profile同样要也要设置成支持push才能收到。
详细请看: https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html |
11
lightening 2014-01-28 00:30:28 +08:00
|
12
explon 2014-01-28 00:59:00 +08:00 via iPhone
@lightening 你都没试过还在这说半天我真服了你,我还以为有什么高级技术可以绕过通知中心呢!
|
13
lightening 2014-01-28 01:00:50 +08:00
@explon 恩……是我错了…… 可是谁能告诉我微信的 in-app notification 到底是什么啊!
|
14
cocorosiekz 2014-01-28 10:13:00 +08:00
自己加个定时器,然后到时推送,这不就是local push吗,android里头见到过,ios肯定也有啊,这是最基础的
|
15
camus 2014-01-28 11:46:57 +08:00
应该和COC差不多的方式,自带一个计时器,比如建筑升级,到点了就算在飞行模式也弹提醒
另外一个就是推送了,有人攻击你了,就实时推送一条下来了 |
16
darcy 2014-01-28 14:18:27 +08:00 via iPhone
没看过微信的源码,说一点大致的吧(QQ/Qzone)采用的方式,理论上都大相径庭的。
我们会把push分为在线push(自己的push通道)和离线push(苹果的push) 如果用户当前在线,就走自己的通道,有可能是长链接也有可能是http轮询,视具体网络状况而定 如果用户不在线,服务器才发苹果的push消息 所以,(你用微信在)网络特别烂的时候,可能发现已经阅读了一条消息,等一下却又收到了它的push信息。 |
17
chisj 2014-01-28 16:11:52 +08:00
我没发现微信的推送和其他app的推送有什么不同。
|
18
Smartype 2014-01-28 17:09:25 +08:00 2
@cocorosiekz iOS 才不容许你这么干。iOS 拼命杜绝平庸的工程师瞎搞。给你选了apple认为的最合适的方式。
Push是系统提供的。应用和系统注册,系统维护一个到Apple的长连接,然后这个连接在系统休眠的时候支持wod,wake up on data.从WiFi/Cell收到数据后apsd被唤醒,继而相应的应用在后台被运行,等到用户可能点击push notification banner, 如果用户点击了banner,应用被放到前台,并告知应用收到相应的push。应用就可以处理了。这个应用的push是要经过apple中转的。 应用也可以自己实现push, 方法有voip, 或者是现在的background refresh。 voip 时间方式的典型是Sparrow,可惜Apple也不容许,因为它不是voip应用。实现方式就是自己注册一个socket fd到系统,这个socket fd支持wod,这个socket有数据的时候,应用被唤醒10秒。你可以接收数据,然后发送一个local notification. background refresh 系统不保证什么时候调用。 |
19
cocorosiekz 2014-01-28 17:29:43 +08:00
@Smartype 好吧。。。第二个没怎么看懂,什么是voip?Apple只允许voip?
|
20
Smartype 2014-01-28 17:38:23 +08:00
@cocorosiekz voip 是一种应用类型,如果是你设计Skype,你将怎么处理/等待呼叫?
|
21
cocorosiekz 2014-01-28 17:53:58 +08:00
@Smartype 不懂。。。求解答
|
22
chmlai 2014-01-28 18:43:38 +08:00
一般都是:
应用在后台用的是苹果的推送服务; 应用在前台用的是TCP长连接. |
23
apu159 2014-01-29 21:41:13 +08:00
不用GCM的app 都是扯淡!国内只发现 淘宝 用的是GCM
|