pushy.me 服务 sdk 在 Android 上如何工作?我特别感兴趣的是如何确保通知的持续发送?他是否需要任何额外的权限或类似的东西?为什么后台进程没有被系统杀死?
后台进程不会被系统杀死,因为服务并不打算被杀死,这与应用程序不同。它们在 Android 操作系统中扮演了这个角色。
至于如何确保通知的持续传递,有三种可能的方法,以及一种最有可能的方法。
1。简短投票
该服务定期发送请求以获取最近通知的当前数据,并显示尚未发送的请求。缺点是,您必须满足大量请求才能确保功能,并且您无法获得真正的持续交付。
2。长轮询
服务发送一个超时时间较长的请求,服务器会保留该请求,直到进行更新,此时它将用更新的数据进行响应。如果超时,客户端会发送另一个请求。这里的缺点是请求需要被保留、冻结,直到数据更新,从而锁定资源。
3.网络套接字
可能的解决方案。在常规 HTTP 中,需要向服务器查询数据。 Web 套接字允许双向通信,该通信仅在一侧关闭连接时终止,而不是在服务每个查询后终止。这样,服务器可以在没有提示的情况下与客户端进行通信。它不需要传入请求来指定将响应返回到的地址。
参见:这个。
最有可能使用静默推送通知(这样接收者就可以醒来)。虽然它不提供任何保证,但通常相当稳定。
您无法让任何服务在后台运行,因为最新的 Android 版本会限制/终止它。推荐的
WorkManager
API 限制太多。