短信重发机制

来源:互联网 发布:淘宝店铺首页链接在哪 编辑:程序博客网 时间:2024/05/29 13:14
短信发送失败时,是怎样重发的?
[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() 中对失败的短信重试。

0 0
原创粉丝点击