OOB簡訊參數設定參考

來源:互聯網
上載者:User

OOB簡訊概述

OOB(Out-Of-Bound)簡訊,相對於行動裝置 App的實際業務通道而言,也稱為帶外簡訊;OOB對於終端手機來講是不可見的,終端應用可以截取該OOB簡訊,從而達到服務端向用戶端推送資料的目的。

該OOB簡訊實際上是二進位簡訊(Android裡的Data_SMS),Android系統收到該簡訊後並不會入庫也不會發送系統廣播事件,所以通過繼承ContentObserver使用觀察者模式並不能截取該OOB簡訊。

在Android系統中,截取二進位簡訊是採用Receiver方式,並配置指定的監聽連接埠,收取該連接埠的二進位簡訊資料、解析以及後續業務處理。

SMPP發送端設定

該發送端在VVM中是指VVMGW中的簡訊發送模組,在發送該OOB簡訊時,需要設定以下幾個欄位replace_if_present_flag、esm_class、protocol_id、data_coding,此外還需要設定UDH,該UDH用於指定OOB簡訊需要發送到終端的哪個連接埠。具體參數設定參考如下:

submitsm.setReplaceIfPresentFlag((byte) 0x01);submitsm.setEsmClass((byte) 0x40);submitsm.setProtocolId((byte) 0x7d);submitsm.setDataCoding((byte) 0x04);// 設定訊息內容,設定UDH欄位ByteBuffer buffer = new ByteBuffer();buffer.appendByte((byte) 0x06);// UDHLbuffer.appendByte((byte) 0x05);// IEIbuffer.appendByte((byte) 0x04);// IELbuffer.appendByte((byte) 0x15);// IED 5499,改為同時相容iPhone和Androidbuffer.appendByte((byte) 0x7b);// IEDbuffer.appendByte((byte) 0x15);// IED 5499,改為同時相容iPhone和Androidbuffer.appendByte((byte) 0x7b);// IED

Android應用用戶端設定

在Android用戶端中如果需要截取二進位簡訊,需要在指定的連接埠上進行監聽(正常情況下,接收到的二進位簡訊不會存到簡訊庫中)。

即在AndroidManifest.xml中receiver中加入過濾器為android.intent.action.DATA_SMS_RECEIVED,並且指定監聽連接埠等資訊,如下:

<receiver android:name=".SMSReceiver">    <intent-filter android:priority="2147483647">         <action android:name="android.intent.action.DATA_SMS_RECEIVED"/>         <data android:host="localhost" android:port="16001" android:scheme="sms"/>    </intent-filter></receiver>

Blackberry應用用戶端設定

在Blackberry用戶端沒有相關的設定檔,只能通過程式來指定監聽連接埠(正常情況下,接收到的二進位簡訊不會存到簡訊庫中)。

private static class ListeningThread extends Thread {         private boolean _stop = false;         private DatagramConnection _dc;         public synchronized void stop() {                _stop = true;                try {                        _dc.close(); // Close the connection so the thread returns.                } catch (IOException e) {                       System.err.println(e.toString());                } } public void run() {        try {                _dc = (DatagramConnection)Connector.open("sms://:5499");                for(;;) {                        if ( _stop ) {                              return;                        }                        Datagram d = _dc.newDatagram(_dc.getMaximumLength());                        _dc.receive(d);                       String address = new                       String(d.getAddress());                        String msg = new String(d.getData());                        System.out.println("Message received: " + msg);                      System.out.println("From: " + address);                       System.exit(0);                }           } catch (IOException e) {                   System.err.println(e.toString());           }      } }

注意:該連接埠需要與SMPP傳送簡訊的UDH中兩個BYTE位元組的IED欄位(3E81,即16001)的值相同。

SMSC監控台-OOB簡訊

SMSC監控台-正常簡訊

Android應用接收OOB簡訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.