我正在使用Java开发接收和处理SMS消息的程序。我已经能够对接收到的SMS消息的处理进行编码,并且可以正常工作。现在,我面临的挑战是从CDMA网络接收SMS消息。当应用程序即将上线时,CDMA网络将建立VPN连接,这将使我的应用程序可以连接到其IN或IN连接到我的应用程序,从而通过VPN向我的应用程序发送SMS消息。现在,将以哪种格式将SMS发送到应用程序?还是我只需要侦听VPN并在数据可用时读取数据?非常感谢您的宝贵时间。
谢谢。
最佳答案
我认为IN是指Intelligent Network?通常,IN与发送/接收SMS消息无关-您需要连接到Short Message Service Center(SMSC)(或某些代理/网关)以实现此目的。
正如Bombe所指出的,由于历史原因,您可以使用多种协议来连接到移动运营商SMSC,这些协议都是特定于供应商的。常见协议是:
SMPP(最受欢迎,成为事实上的标准)。有两个SMPP Java库:
SMPP API at SourceForge-非常稳定和成熟的库,我已经在多个项目中亲自使用过,并且可以推荐它。
Logica OpenSMPP-开发SMPP规范的公司的库。我从未使用过它,因此无法评论其成熟度或稳定性。
UCP(specification)-相当老的标准。我不知道该协议有任何开放的Java库。但是,由于它们都是基于ASCII的,因此实现自己相当容易(只要您喜欢弄乱字节:-))。
CIMD2-与诺基亚SMSC通信的规范。正如我所听到的,新的诺基亚SMSC版本也支持SMPP,这已成为历史。也没有为此已知的开放式Java库。
最后,实现了数以百万计的自定义协议,以使第三方开发人员更轻松地连接到SMSC。这些通常基于HTTP和XML(如果幸运的话,可以使用SOAP)。
综上所述,协议的选择不是您自己要做的。它通常由SMSC供应商或移动运营商规定(如果他们开发了某种“代理/网关”,以保护其SMSC免受外部开发人员可能犯的潜在编程错误)。
附言如果您不仅限于Java,还可以查看Kannel - the Open Source WAP and SMS gateway。我自己没有使用过它,但是据我所知,它们应该涵盖所有主要协议。