您好,登錄后才能下訂單哦!
這篇文章主要介紹“Android的SMS push怎么使用”,在日常操作中,相信很多人在Android的SMS push怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Android的SMS push怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
短信(SMS)Push 和 Ip push是比較常見的兩種push方式。
本篇主要簡單說說Sms push。
Sms push的原理:
sms push是通過發(fā)送二進制短信到移動終端,來達到通知終端的目的??蛻舳藬r截這類短信,分析短信PDU的數(shù)據(jù),然后采取相應(yīng)的操作。push短信是通過 Wap push來承載的。其內(nèi)容包括頭部和數(shù)據(jù)兩部分,頭部中應(yīng)該含有目的端口和原端口號(可類比IP報文)。
由于發(fā)送短信需要運營商的支持,比如移動的郵件推送網(wǎng)關(guān)(GEGW:GPRS Email Gateway),依賴性比較強。
Android客戶端攔截短信處理:
客戶端靜態(tài)注冊一個廣播接收器,即使應(yīng)用不在運行,廣播接收器也能攔截短信。
<receiver android:name=".service.receiver.MyBroadcastReceiver"> <intent-filter android:priority="1000"> <action android:name="android.intent.action.DATA_SMS_RECEIVED" /> <data android:scheme="sms" android:host="localhost" android:port="16001" /> </intent-filter>
這樣當push短信下發(fā)時(監(jiān)聽到端口16001的數(shù)據(jù)),系統(tǒng)發(fā)起Intent激活廣播接收器,廣播接受器在其事件回調(diào)函數(shù)中進行處理
@Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (TextUtils.equals(action, "android.intent.action.DATA_SMS_RECEIVED")) { handleDataSmsReceived(context, intent); } }
在處理函數(shù)handleDataSmsReceived中,獲取pdu數(shù)據(jù)并解析,了解服務(wù)器的數(shù)據(jù)發(fā)生何種變化,客戶端可以進行相應(yīng)處理。
簡易實現(xiàn)代碼如下:
private void handleDataSmsReceived(Context context, Intent intent) { Uri uri = intent.getData(); int port = uri.getPort();//接受端口 16001 SmsMessage[] msgs = getMessagesFromIntent(intent); String senderNumber = msgs[0].getOriginatingAddress();//短信發(fā)送方的電話號碼 int type = parse(msgs)//解析 pdu的業(yè)務(wù)部分數(shù)據(jù),根據(jù)與服務(wù)器交互的協(xié)議去解 switch(type){ //不同的情況分類處理 } }
獲取的短信的方法
private static final SmsMessage[] getMessagesFromIntent(Intent intent) { Object[] messages = (Object[]) intent.getSerializableExtra("pdus"); byte[][] pduObjs = new byte[messages.length][]; for (int i = 0; i < messages.length; i++) { pduObjs[i] = (byte[]) messages[i]; } byte[][] pdus = new byte[pduObjs.length][]; int pduCount = pdus.length; SmsMessage[] msgs = new SmsMessage[pduCount]; for (int i = 0; i < pduCount; i++) { pdus[i] = pduObjs[i]; msgs[i] = SmsMessage.createFromPdu(pdus[i]); } return msgs; }
到此,關(guān)于“Android的SMS push怎么使用”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。