自從05年后,很少接觸研究短信的技術問題了,并且思維上也固定了很多東西,老覺得自己是短信專家了,沒想到今天一伙計跟我說手機可以一次發200多字的短信,并且接收方收下來后也是一條短信.這時才明白還有超長短信一說,在03年時對FLASH短信,圖片鈴聲短信,WAPPUSH,OTA短信都有過編碼制作.但一直沒有去好好通讀GSM03.40協議,這協議對特殊短信都做了詳細的規定
GSM 03.40規范(TP-06 1999-12-15 7.4.0)中規定了SME對于超長短信的合并處理,當前絕大部分GSM手機都支持超長短信.
超長短信編碼:首先把TP_udhi的值設置設置為1,在消息正文中增加協議頭,基本上所有特殊短信這樣設置它為1
接著在每條超長短信分割而成的短信中增加協議頭,協議頭分兩種,分別是長度為6和長度為7的協議頭。格式如下:
6位協議頭格式:05 00 03 XX MM NN
byte 1 : 05, 表示剩余協議頭的長度
byte 2 : 00, 這個值在GSM 03.40規范9.2.3.24.1中規定,表示隨后的這批超長短信的標識位長度為1(格式中的XX值)。
byte 3 : 03, 這個值表示剩下短信標識的長度
byte 4 : XX,這批短信的唯一標志,事實上,SME(手機或者SP)把消息合并完之后,就重新記錄,所以這個標志是否唯一并不是很重要。
byte 5 : MM, 這批短信的數量。如果一個超長短信總共5條,這里的值就是5。
byte 6 : NN, 這批短信的數量。如果當前短信是這批短信中的第一條的值是1,第二條的值是2。
例如:05 00 03 39 02 01
7位的協議頭格式:06 08 04 XX XX MM NN
byte 1 : 06, 表示剩余協議頭的長度
byte 2 : 08, 這個值在GSM 03.40規范9.2.3.24.1中規定,表示隨后的這批超長短信的標識位長度為2(格式中的XX值)。
byte 3 : 04, 這個值表示剩下短信標識的長度
byte 4-5 : XX XX,這批短信的唯一標志,事實上,SME(手機或者SP)把消息合并完之后,就重新記錄,所以這個標志是否唯一并不是很重要。
byte 6 : MM, 這批短信的數量。如果一個超長短信總共5條,這里的值就是5。
byte 7 : NN, 這批短信的數量。如果當前短信是這批短信中的第一條的值是1,第二條的值是2。
例如:06 08 04 00 39 02 01
因為一般一個BYTE計算超長短信的標志即可,一般編碼使用6位協議頭
超長短信大大拓展了短信息就70個漢字的應用擴展,像GOOGLE的短信搜索回復,什么亂七八糟的下發把一個事情整成一條下發,不就用戶感知就清楚明白多了,用在校訊通上也好的,曾經給GOOGLE網上留過建議,但沒人鳥我,誰叫我個草根