@
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 系统不保证什么时候调用。