首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

基於簡訊閘道器的 WAP Push 實作詳解

     編輯:Java 程式設計入門

WAP Push 技術概述

WAP Push 讓伺服器主動將內容推送至行動裝置,結合「主動性」與「隨時隨地接收」優勢。系統架構包含三角色:

  • PI (Push Initiator):發起推送的內容伺服器。
  • PPG (Push Proxy Gateway):協議轉換、安全、壓縮、編碼、尋址與傳輸。
  • PC (Push Client):行動裝置上的 WAP 瀏覽器/用戶代理。

協議:PI-PPG 間用 PAP (Push Access Protocol) (XML over HTTP/SMTP);PPG-PC 間用 Push OTA (over WSP)。

推送服務類型

  • SI (Service Indication):推送 URI 提示,用戶選擇是否立即啟動。
  • SL (Service Load):推送 URI,用戶端自動以 Pull 方式啟動服務,對用戶透明。

簡訊閘道器 (ISMG) 架構

位於 SMSC (簡訊中心) 與 SP (服務提供商) 之間:

  • SMSC 端:SMPP 協議 (客戶端主動連接)。
  • SP 端:CMPP 協議 (中國移動標準,伺服器端等待連接)。
  • 核心功能:協議轉換、路由查詢/維護、計費、安全防火牆、業務管理。

透過簡訊閘道器發送 WAP Push

兩種途徑:PPG 閘道 或 SMPP 衍生協議 (CMPP/SGIP/SMGP)。CMPP 彈性高、開發簡單。

PDU 模式與 UCS2 編碼

  • 三種模式:Block、Text (僅 ASCII)、PDU (所有手機支援、任意字符集、預設編碼)。
  • PDU 串包含:SMSC 地址、目標號碼、編碼方式、用戶資料 (UDH + UD)。
  • 中文需用 UCS2 編碼 (16-bit Unicode),每字元 4 位十六進位字串。

WAP Push PDU 結構範例

00 51 00 0B A1 31 08 08 64 06 F6 00 F5 A7 85 0B 05 04 0B 84 23 F0
00 03 03 01 01 29 06 06 03 AE 81 EA 8D CA 02 05 6A 00 45 C6 08 0C
03 32 31 31 2E 31 33 36 2E 31 35 33 2E 33 30 2F 77 61 70 70 75 73
68 2F 70 75 73 68 49 6E 64 65 78 2E 6A 73 70 3F 70 75 73 68 49 64
3D 30 35 30 35 31 31 31 34 31 36 30 35 32 31 00 01 03 E8 A...

解析:00 (SMSC 長度=0 使用手機設定) → 51 (PDU Type) → 00 0B A1 31 08 08 64 06 F6 (目標號碼 BCD) → 00 (PID) → F5 (DCS=UCS2) → A7 85 0B 05 04 0B (SCTS 時間戳) → 84 23 F0... (UDH 指示 WAP Push) → 06 05 6A 00 45 C6 08 0C 03... (UD: WSP/WTLS 標頭 + URL + SI 文字)。

實作關鍵點

  1. 正確組裝 PDU 位元組陣列 (BCD 編碼號碼、UCS2 文字、UDH 標識)。
  2. 透過 CMPP 連接 ISMG,發送 Submit 操作。
  3. 處理 Deliver 回執確認送達狀態。
  4. 錯誤重試、流控、計費記錄整合。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved