轉帖|其它|編輯:郝浩|2010-11-19 11:55:03.000|閱讀 1057 次
概述:最近,自己有個項目中,需要用到飛信的相關操作(發送短信等)。于是就開始咂摸著寫一個飛信的控件出來。飛信的這個協議網絡上早就有人分析過,基本上大部分都分析出來了,其他沒分析的,自己抓抓包分析分析,也不難。經過幾天的工作與摸索,目前基本上1.0版本已經出來了。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
最近,自己有個項目中,需要用到飛信的相關操作(發送短信等)。于是就開始咂摸著寫一個飛信的控件出來。飛信的這個協議網絡上早就有人分析過,基本上大部分都分析出來了,其他沒分析的,自己抓抓包分析分析,也不難。經過幾天的工作與摸索,目前基本上1.0版本已經出來了。目前具備的功能如下:
1、刪除某個飛信好友
2、添加飛信好友
3、發送飛信消息
4、發送手機消息給飛信好友
5、發送手機信息給自己
6、修改自己的飛信信息
7、修改好友的顯示信息等
8、維持在線心跳
9、獲得某手機號的飛信用戶信息
大致屬性信息如下:
cmdRequestTimes屬性指定命令失敗時重試的次數(每次如果發送命令失敗,都會重試)
KeepActiveTime 屬性指定保持心跳的心跳包發送頻率時間(秒)
LongMsgSend屬性指定發送短信是否以長短信模式發送
PhoneNum屬性指定用戶的手機號
timeOut屬性指定超時的時間(秒)
飛信控件事件:
OnError事件指定錯誤時候觸發的事件,實際格式為:
OnError(Sender: TObject; var ErrorCode: Integer)
ErrorCode指定事件的錯誤代碼,如果發生了錯誤,用戶沒有通過本事件捕捉,就會拋出異常,目前能處理的錯誤代碼如下:
300: '網絡可能已經斷開,請檢查';
400: '消息格式錯誤';
401: '認證失敗';
404: '用戶不存在';
420: '用戶性別設置錯誤';
442: '密碼不能為空,或格式錯誤';
443: '昵稱為空,長度超長或格式錯誤';
481: '用戶已經開通';
452:'用戶尚未開通FETION';
500:'服務器錯誤';
如果用戶指定錯誤代號為200或者0,就表示成功,講不會出現異常
OnGetMsg事件,在接收到飛信好友發送的飛信信息時候觸發,參數格式如下
OnGetMsg(Sender: TObject;FromContact: TContact;MsgDate: TDateTime;Msg: string) ;
FromContact指定來自哪個飛信好友,TContact是好友聯系人類
MsgDate指定消息發送時間
Msg指定消息內容
OnLoged事件指定登錄事件,登錄完成之后觸發的事件
本事件無論成功與否都會觸發。
OnLoged(Sender: TObject; LogState: TLogState);
LogState登錄狀態
TLogState = (DxLg_Beg,DxLg_FL,DxLg_LgSIP,DxLg_LgOK);
DxLg_Beg登錄開始Begin
DxLg_FL獲取好友列表FriendList
DxLg_LgSIP登錄SIP身份驗證
DxLg_LgOK登錄成功
OnLogEvent事件,登錄過程中事件其實應該是OnLoging事件
LogingEvent(Sender: TObject; LogMsg: string);
LogMsg指定登錄時候回傳的消息通知
OnLogOut事件,登出事件
OnModifyInfoEvent事件,修改飛信信息事件,修改之后觸發
OnModifyInfoEvent(Sender: TObject; ModifyContact: TContact; ModifyStyle: TModifyStyle; ModifyOk: Boolean);
ModifyContact指定修改的賬號信息
ModifyStyle指定修改類型
//修改樣式 昵稱 生日 心情短語 好友顯示名稱 刪除好友 移動好友分組
TModifyStyle=(MDS_NickName,MDS_Birth,MDS_Moodphrase, MDS_UserDisplayName,MDS_DelContact,MDS_MoveGroup);
ModifyOk指定是否修改成功
公共方法屬性等:
function SendMessage(const PhoneNum: string;Msg: String;const SendToPhone: Boolean=False): Boolean;overload;
function SendMessage(Contact: TContact;Msg: String;const SendToPhone: Boolean=False): Boolean;overload;
function SendMessageToMyPhone(Msg: string): Boolean;//給自己手機發信息
property ContactList: TContactList read FContactList;
//本人帳戶
property MainContact: TContact read FMainContact;
property FetionNum: string read FFetionNum;
//登錄飛信
procedure LoginFetion(Pwd: string);
//登出飛信
function LogOut: Boolean;
procedure Abort;//終止操作
function DeleteContact(Contact: TContact): Boolean;overload;
function DeleteContact(PhoneNum: String): Boolean;overload;
function DeleteFetioNum(FetionNum: string): Boolean;
function ContactByPhoneNum(PhoneNum: string;var IsSelfFriend: Boolean): TContact;//根據電話號碼獲得一個用戶帳戶信息
function ContactByFetionNum(FetionNumber: string;var IsSelfFriend: Boolean): TContact;//根據飛信號碼獲得用戶帳戶信息
function AddContact(PhoneNum: string;NotifyMsg: string): Boolean;//添加飛信好友
function AddContactByFetionNum(FetionNum: string;NotifyMsg: String): Boolean;//通過飛信號碼添加好友
property IsRunning: Boolean read FIsRunning;
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客轉載