Wireless Messaging API (WMA 2.0,JSR 205) 建構於通用連線架構 (GCF) 之上,提供高層抽象封裝傳輸層細節。支援:
MessageConnection:訊息連線(透過 Connector.open() 取得)TextMessage、BinaryMessage、MultipartMessage:訊息類型MessageListener:非同步接收訊息回調介面try {
String addr = "sms://+886912345678";
MessageConnection conn = (MessageConnection) Connector.open(addr);
TextMessage msg = (TextMessage) conn.newMessage(MessageConnection.TEXT_MESSAGE);
msg.setPayloadText("This is a test message!");
conn.send(msg);
conn.close();
} catch (Exception e) {
// 錯誤處理
}
需實作 MessageListener,於特定埠口監聽:
public class SmsReceiver extends MIDlet implements MessageListener {
MessageConnection conn;
public void startApp() {
try {
conn = (MessageConnection) Connector.open("sms://:5432");
conn.setMessageListener(this);
} catch (Exception e) { /* ... */ }
}
public void notifyIncomingMessage(MessageConnection conn) {
// 別執行緒處理,避免阻塞
new Thread(() -> {
try {
Message msg = conn.receive();
if (msg instanceof TextMessage) {
TextMessage tm = (TextMessage) msg;
String text = tm.getPayloadText();
// 處理訊息內容
}
} catch (Exception e) { /* ... */ }
}).start();
}
}
String str = "Hello!";
byte[] data = str.getBytes();
MessageConnection conn = (MessageConnection) Connector.open("sms://+886912345678");
BinaryMessage bm = (BinaryMessage) conn.newMessage(MessageConnection.BINARY_MESSAGE);
bm.setPayloadData(data);
conn.send(bm);
conn.close();
| 模式 | 說明 | 應用場景 |
|---|---|---|
| 伺服器 → 手機 | CRM 等後台主動推送資料 | 行銷推播、警報通知、資料同步 |
| 手機 → 伺服器 | 手機主動上傳資料 | 訂單回報、感測器資料上傳、離線操作同步 |
| 手機 ↔ 手機 | 點對點直接交換 | 遊戲道具交換、聯繫人分享、即時對戰 |
WMA 以簡潔 API 隱藏複雜傳輸協定,為遊戲與企業應用開發者開闢了低成本、廣覆蓋的無線通訊新路徑。隨著行動訊息成為用戶日常核心體驗,掌握 WMA 將成為行動開發者的關鍵競爭力。