手機短信/彩信接口開發經驗介紹

        手機短信開發,首先要選擇短信平臺服務商,如選擇了大漢三通作爲短信服務商,選擇好後,達成使用或二次開發相關協議後,可以註冊一個短信帳號,做二次開發,短信平臺服務商會提供一些開發接口源碼或程序包,及其相關技術接口文檔。下面介紹一下我的一些開發經驗和技巧。

        我們先來了解一些基本常識,使用短信發送接口發送短信後,短信平臺會響應一個序列號,這個序列號表明短信已經發送給短信平臺了,但不等於短信已經發送成功,短信平臺需要繼續轉發到目標手機上,最終發送成功與失敗保存在短信平臺的狀態報告記錄中,一般保留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。下面詳細說一下具體作法。

短信選型對比分析

大漢三通
1.正確率:不能及時收到,有個別中文亂碼現象;
2.反映速度:延遲收到時間較長,有時1-2小時才能收到;
3.短信內容關鍵詞限制:有關鍵詞如“賬號”的限制;
4.短信內容中是否含有提供商簽名:有,簽名爲‘信息通’;
5.短信內容是否允許重複發送:允許重複發送;
國都
1.正確率:100%,沒有中文亂碼現象;
2.反映速度:都在3秒以內;
3.短信內容關鍵詞限制:沒有對關鍵詞如“賬號”的限制;
4.短信內容中是否含有提供商簽名:沒有;
5.短信內容是否允許重複發送:不能發送與上次完全重複內容的短信,即同天內相同內容不能重複發;
創世漫道
1.正確率:100%,沒有中文亂碼現象;
2.反映速度:在6秒左右;
3.短信內容關鍵詞限制:有關鍵詞如“賬號”的限制;
4.短信內容中是否含有提供商簽名:沒有;
5.短信內容是否允許重複發送:允許重複發送,“禁止相同的內容多個手機號連續一條一條提交. 否則禁用帳號,由此帶來損失由客戶自行負責”;

 

手機彩信接口

國都彩信接口調研

彩信最大支持100k,程序中對彩信分幀最大爲20幀,每幀內容最多有3種類型:文本(.txt)、圖片(.gif,.jpg)、聲音(mid)。但有一點,彩信顯示順序爲先顯示圖片,後顯示文本,若改變順序,必須在程序中分幀(及文本一幀、圖片一幀)。目前淘寶、58同城都在使用。

彩信選型對比分析

 創世漫道

1.賬號問題:短信、彩信使用一個賬號(軟件序列號)
2.簽名問題:彩信存在簽名,如"來自【漫道科技】"
3.彩信容量限制:每條彩信大小的限制是50k
4.發送反應速度:比較慢,2分鐘左右,有時會延遲很長(1小時多),不夠穩定,彩信發送後,需要審覈,”審覈是人工的所以短信高峯期會慢一點“
5.中文亂碼問題:彩信標題出現亂碼還未解決;
6.支持內容格式問題:不支持vcard
7.其他問題:
 1)發送彩信響應爲成功碼(如271208361778941233),但發送內容審覈未通過,仍也不能正常收到彩信,如“標題如果解析爲亂碼”、”標題不能超過10個漢字“,不能正常接收。
 2)收到彩信正文格式正常
國都
1.賬號問題:短信、彩信使用不同的賬號,即使是同一客戶也需要分別購買賬號;
2.簽名問題:收到彩信中文字符顯示正常,沒有亂碼,沒有公司簽名;
3.彩信容量限制:彩信最大支持100k,程序中對彩信分幀最大爲20幀,每幀內容最多有3種類型:文本(.txt)、圖片(.gif,.jpg)、聲音(mid)。
4.發送反應速度:1分鐘左右,比較穩定。
5.中文亂碼問題:無亂碼問題
6.支持內容格式問題:不支持vcard
7.其他問題:
 1)彩信顯示順序爲先顯示圖片,後顯示文本,若改變順序,必須在程序中分幀(及文本一幀、圖片一幀);
 2)收到彩信頁面空白部分顯示間隔太大,不便閱讀;
 3)發送彩信標題大小限制沒有太大;
 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章