手機短信開發,首先要選擇短信平臺服務商,如選擇了大漢三通作爲短信服務商,選擇好後,達成使用或二次開發相關協議後,可以註冊一個短信帳號,做二次開發,短信平臺服務商會提供一些開發接口源碼或程序包,及其相關技術接口文檔。下面介紹一下我的一些開發經驗和技巧。
我們先來了解一些基本常識,使用短信發送接口發送短信後,短信平臺會響應一個序列號,這個序列號表明短信已經發送給短信平臺了,但不等於短信已經發送成功,短信平臺需要繼續轉發到目標手機上,最終發送成功與失敗保存在短信平臺的狀態報告記錄中,一般保留3天記錄就會刪除的,短信平臺提供查詢狀態報告的接口,需要請求狀態報告接口才能得到狀態報告。一般短信收費都是按已發送給短信平臺的次數來收費的,有時因訪問量過大可能會出現沒有發送成功的狀況。短信平臺還提供查詢餘額接口。下面給出具體實例
手機短信工具類
此工具類提供了發送短信、查詢短信餘額的功能。
public class SmsUtils {
private String sms_url = "http://procommsserver.300.cn:9090/ctc-oss/services/SmsOperator";//短信服務商提供url接口
/**
* 發送短信,調用短信提供商短信服務
*@author yandk
*/
public static String senderSms(String account,String password,String phones,String content) throws BizException{
String resultMsg="";
ISmsService4EmaProxy smsService4EmaProxy = new ISmsService4EmaProxy(sms_url);//短信服務商接口代理類
MtResponse[] responses = null;
MtMessage message = new MtMessage();
message.setContent(content);
message.setPhoneNumber(phones);
try {
responses=smsService4EmaProxy.sendSms(account,SmsUtils.MD5Encode(password),message);
} catch (RemoteException e) {
throw new BizException("手機發短信異常:"+e.getMessage());
}
if(responses==null){
throw new BizException("手機發短信錯誤,響應信息爲空");
}
List<SmsResponse> smsResponseList = convertToSmsReport(responses);
resultMsg= smsResponseListToJson(smsResponseList);
return resultMsg;
}
/**
* 取得短信餘額(剩餘條數)
*/
public static int getSmsBalance(String account,String password) throws BizException{
int smsBalance=0;
ISmsService4EmaProxy smsService4EmaProxy = new ISmsService4EmaProxy(sms_url);//短信服務商短信接口代理類
Balance balance = null;
try {
balance = smsService4EmaProxy.getBalance(account, SmsUtils.MD5Encode(password));
} catch (RemoteException e) {
throw new BizException("取得短信剩餘條數異常:"+e.getMessage());
}
smsBalance= balance.getSmsBalance();
return smsBalance;
}
}
手機短信併發的處理
併發情況下發送短信,一般想到用多線程方式發送短信,但是有個問題,我們一般使用一個短信賬號(短信服務商提供)來發送短信,比如同時發送短信,或者定時短信在同一時刻觸發,因爲手機短信在同一時刻只能一次發送一條,這時可能會出問題。這種情況的解決方法,可以使用隊列,每次發送短信都從隊列中取出發送請求進行發送,即時同一時刻,隊列也是有先後次序的,這樣就能保證同一時刻發送短信的併發問題。java程序可以使用JMS。下面詳細說一下具體作法。
短信選型對比分析
手機彩信接口
國都彩信接口調研
彩信最大支持100k,程序中對彩信分幀最大爲20幀,每幀內容最多有3種類型:文本(.txt)、圖片(.gif,.jpg)、聲音(mid)。但有一點,彩信顯示順序爲先顯示圖片,後顯示文本,若改變順序,必須在程序中分幀(及文本一幀、圖片一幀)。目前淘寶、58同城都在使用。
彩信選型對比分析
創世漫道