pushy.me Android SDK工作机制及通知持续投递等技术问题咨询
Pushy.me Android SDK 核心机制与常见问题解答
一、Android端工作机制
- 持久长连接:SDK初始化后会和Pushy服务器建立TCP长连接,这是推送消息的核心通信通道,所有消息、回执都通过该通道传输。
- 设备注册:首次启动时,SDK向Pushy服务器注册设备,获取唯一的设备令牌(Device Token),服务器后续通过这个令牌定位设备推送消息。
- 消息处理逻辑:服务器推送消息后,长连接实时将消息传递到SDK,SDK解析后根据应用状态处理:前台时直接回调业务代码,后台则触发系统通知栏提示;同时会向服务器发送接收回执。
- 心跳保活:SDK定期发送心跳包维持连接,一旦检测到连接中断,会自动触发重连流程。
二、通知持续投递的保障措施
- 智能重连:连接断开后,SDK采用指数退避策略重试重连,逐步延长重试间隔,既避免资源浪费,又保证最终恢复连接。
- 离线消息暂存:设备离线时,Pushy服务器会暂存未投递的消息,等设备重新上线并建立连接后,自动补发消息。
- 设备唤醒:利用系统
WakeLock机制,收到消息时唤醒设备,确保应用在后台甚至锁屏状态下也能及时接收并处理推送。 - 回执重推:服务器如果未收到SDK的消息接收回执,会在设定时间内重复推送,直到确认消息被设备接收。
三、所需权限说明
- 必备权限:
INTERNET:用于和Pushy服务器建立连接、传输数据,不可缺少。WAKE_LOCK:唤醒设备,保证后台状态下消息能被正常处理。
- 可选权限:
ACCESS_NETWORK_STATE:检测网络状态,优化网络切换时的重连逻辑。RECEIVE_BOOT_COMPLETED:允许设备开机后自动启动SDK,维持长连接,确保开机后能接收推送。VIBRATE:如果需要通知附带震动效果,需添加此权限。
四、后台进程不被系统杀死的核心原因
- 前台服务加持:SDK会启动一个前台服务,在通知栏显示低优先级的持久通知(部分场景可配置隐藏),Android系统对前台服务的查杀优先级极低,仅在系统资源极度紧张时才会清理。
- 厂商适配优化:针对小米、华为、OPPO等主流厂商的后台管理规则,SDK内置适配逻辑,自动申请厂商后台白名单权限,或引导用户手动添加,规避厂商自定义系统的查杀。
- 进程守护策略:采用双进程守护、
JobScheduler调度等机制,当主进程意外被杀死时,守护进程会尝试重启主进程,维持长连接的持续性。 - 合规性设计:SDK的后台行为严格遵循Android官方规范,不会频繁唤醒设备、过度消耗系统资源,避免触发系统的异常进程查杀机制。
内容的提问来源于stack exchange,提问作者Student4543
相关产品推荐
相关产品推荐

