您的位置:首页 > 编程语言 > Delphi

Delphi实现飞信控件

2009-08-06 23:47 323 查看
最近,自己有个项目中,需要用到飞信的相关操作(发送短信等)。于是就开始咂摸着写一个飞信的控件出来。飞信的这个协议网络上早就有人分析过,基本上大部分都分析出来了,其他没分析的,自己抓抓包分析分析,也不难。经过几天的工作与摸索,目前基本上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;

有兴趣的,可以到www.52delphi.com下载试用版

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/suiyunonghen/archive/2009/07/28/4388476.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息