有些手机受版本限制是无法接受完整的长短信的,这涉及到很多问题:
1、短信何时拆包。这个问题其实是和手机终端有关的。有的终端是自动拆分成为几个正常短信进行发送,有的是采用长短信的方式进行发送;待会看协议能看出来;
2、拆包后发送的顺序。
如果终端按照几个正常短信发送,那么接收端会按照接收到短信的顺序分别显示。显示出来的是几条短信。
如果终端按照超长短信拆包发送,短信中心/短信网关会根据协议的要求,将短信按照收到的顺序进行Forward。接收端收到其中的任何一条之后,不会立即显示。它会拆包,当看到的短信数量小于短信包的数量的时候,不会拼装。当数量相等的时候,会拼装出一条正常短信。我们看看CMPP协议:
//当短信超过70个汉字时短信的第一部分
E0 00 00 00 //4byte 数据总长度
05 00 00 00 //4byte 命令号
3F 38 0B 01 //4byte 流水号
31 3B 6E 0B A2 84 61 F0 //8byte msg_id
30 35 37 37 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //21byte Dest_Id
00 00 00 00 00 00 00 00 00 00 //10byte Service_Id
00 //1byte TP_pid
01 //1byte TP_udhi
08 //1byte Msg_Fmt
38 36 31 33 37 35 30 32 34 33 33 30 33 00 00 00 00 00 00 00 00 //21byte Src_terminal_Id
00 //Registered_Delivery
8B //Msg_Length
06 //表示超长短信头信息的长度
08 //表示以两个字节的数字mod 65536 作为一条超长短信的标识
00 2A //定义了一条超长短信的标识号
02 //超长短信总条数
01 //序号
00 61 00 61 00 61 00 61 00 61 00 61 00 61 00 61 00 61 00 61 4E 00 4E 2A 4E BA 6C //短信内容
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 //8byte Reserved
//当短信超过70个汉字时短信的第二部分
78 00 00 00
05 00 00 00
49 38 0B 01
31 3B 74 8B A2 84 62 0D
30 35 37 37 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00
01
08
38 36 31 33 37 35 30 32 34 33 33 30 33 00 00 00 00 00 00 00 00
00
23
06 08 04 00 2A //
02 //超长短信总条数
02 //序号
00 61 00 61 00 61 00 61 00 62 00 62 00 62 00 62 00 62 00 62 00 62 00 62 00 62 00 62 //短信内容
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //8byte Reserved
1,,对方手机支持多文字接受,,140字节默认一条短信。,现在的智能手机一般都支持大雨140字节显示为一条信息
2,,国产山寨就只能彩信了
3,部分手机彩信接收容量也是限制了。。。
下载一个 QQ通讯录 就可以了
哥们你解决了吗?我也需要解决这个问题,能介绍一下吗?