短信重发机制

短信发送失败时,是怎样重发的?
[SOLUTION]

目前短信重发分别做在Modem和 App ,对应不同的情况。

Modem:

     Modem的重发做在SMS-TL/ SMS-CM,针对发送短信中的暂时性的错误。

     其中涉及到很多底层技术细节,并且这些对于App层来说都是透明的。

     但Modem端的处理可以保证会有1次重发,最长的等待时间是21秒。

     Modem的重发如果失败了,会通知给App,这时候App就会显示发送失败。同时用户可以手动重发。

App

      -针对的是网络不可用的情况(脱网导致短信发送失败)。

      -如果发送短信时发现网络不可用,会向framework注册ServiceState广播。

      -当网络恢复时,App会收到广播并重新发送。

      -这种重发没有时间限制,会等待网络恢复再去重发。

      -这部分的处理都是在 SmsReceiverService.java 中,当 底层返回了 Radio_off或 No_service时,在handleSmsSent() 中 有注册 ServiceState: registerForServiceStateChanges(), 当网络恢复时,接收此广播, 在 handleServiceStateChanged() 中对失败的短信重试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值