SGIP长短信

SGIP长短信_第1张图片搞了半个月的SGIP长短信协议,协议的涉及主要内容如下,其他内容和短协议没有区别。

一、设置UDHI标志

TP_udhi

Value

1

Integer

GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐。

 

SGIPSubmit信令中的TP_udhi设置为0x40

二、消息内容增加用户数据包头UDH

包头一共6个字节,如下:

1、  字节一:包头长度,固定填写0x05

2、  字节二:包头类型标识,固定填写0x00,表示长短信;

3、  字节三:子包长度,固定填写0x03,表示后面三个字节的长度;

4、  字节四到字节六:包内容:

1)  字节四:长消息参考号,每个SP给每个用户发送的每条参考号都应该不同,可以从0开始,每次加1,最大255,便于同一个终端对同一个SP的消息的不同的长短信进行识别;

2)  字节五:本条长消息的的总消息数,从1255,一般取值应该大于2

3)  字节六:本条消息在长消息中的位置或序号,从1255,第一条为1,第二条为2,最后一条等于第四字节的值。

注:移动终端支持的一条消息的内容长度为140字节,因此后面还可以增加134个字节的真实的消息内容,若编码格式为0则可以增加134ASCII字符,若编码格式为8则可以增加67个中英文字符。

反复测试之后,得到如下结论:

SP端不需要对短信进行分条处理

1.tp_udhi=0x40;
2.长消息不需要分条直接转化成 ucs2 编码的byte数组
3.messagecoding=8
4. byte[] tp_udhiHead = new byte[6];
   tp_udhiHead[0] = 0x05;
   tp_udhiHead[1] = 0x00;
   tp_udhiHead[2] = 0x03;
   tp_udhiHead[3] = 0x01;
   tp_udhiHead[4] = (byte)(1);
   tp_udhiHead[5] = 0x01;

5.把tp_udhiHead和message数组组合

SP把消息发送到ISMG之后ISMG根据消息长度自动分条,用户手机如果有自动合并消息内容的功能就能收到长短信,否则还是收到分条的短信。

 

你可能感兴趣的:(测试,手机,byte,终端)