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