FetionSDK.dll说明 BY SYSU_LXIONGH

这是09年时的成果,现在FetionSDK.dll已经不能使用。

-------------------------------------------------------------------------------------------------------------

FetionSDK.dll说明                               BYSYSU_LXIONGH

前言:

       这篇文章是基于Fetionsdk.dll飞信端程序开发而写的,里面的代码是我通过Reflector反编译中国移动开发的飞信2008中的fetionFx.exe研究的结果.Fetionsdk.dll的下载地址:

http://sites.google.com/site/allwealthshare/software/FetionSDK.dll.rar?attredirects=0

       移动的飞信客户端是用C#语言开发的,所以我们在利用fetionsdk.dll来开发自己的飞信客户端的时候也应采用C#语言来开发(我不清楚能不能用其他语言来开发,C++).有一点需要说明的是,这个fetionsdk.dll是位能人反编绎而来的,难免会有些bug.例如:如果好友没有在分组里,则无法向其发送短信,也无法加载他的信息(解决方法:用移动的飞信登录后将其加入分组里).

(The way to contact: SYSU_短号:611449,QQ:464050924)

能实现的功能:

1.      登录飞信,注销飞信,设置飞信登录状态.

2.      加载好友列表.

3.      得到好友列表的分组.

4.      加载飞信群成员列表.

5.      加载飞信好友图像(Portrait).

6.      加载任意飞信号图像(Portrait).

7.      发送即时信息,发送手机短信.

8.      接收飞信好友信息.

9.      添加飞信好友.

(there will be more...)

If you get some funtions different and you can realize it.

I will be very happy if you can share with me through the

QQ,Email or other contact way.

具体实现:

       在引用里加入下面几个命名空间的引用:

 Using NullStudio.Fetion_SDK;
 Using Imps.Core;

       (当然还可能有其他的命名空间,这里就不一一写出)

       几个重要的事件(这些应该在全局作用域内)

sdk.SDK_ReceiveMessage += newFetionSDK.SDK_ReceiveMessageEventHandler(sdk_SDK_ReceiveMessage); sdk.SDK_UserSatusChange += newFetionSDK.SDK_UserSatusChangedEventHandler(sdk_SDK_UserSatusChange); sdk.SDK_Error += new FetionSDK.SDK_ErrorEventHandler(sdk_SDK_Error);

声明一个全局范围内的变量: Fetionsdk sdk (这是一个飞信控制的总类,作用于整个程序)

功能1(登录飞信,注销飞信,设置飞信登录状态):

//Fill手机号及密码.
sdk.AccountManager.FillUserIdandPassword(string id,string password,boolautoLoginOrout) //自动判断是登录还是注销
sdk.AccountManager.LoginOrout(); //设置飞信登录状态,这里设置为在线(前提:飞信已经登录,可以在飞信登录状态为Logon时调用此方法)
sdk.AccountManager.CurrentUser.Presence.AsyncChangeMainPresence(Imps.Common.MainPresence.Online,Imps.Common.MainPresence.Online.ToString()); 

功能2(加载好友列表):

sdk.ContactControl.getAllContactList();//返回一个类型为contact的列表List<Imps.Core.contact> 

功能3(加载好友分组):

List<ContactGroup> cotactGroups =sdk.ContactControl.getContactGroup(); //可以在contactGroup中加载属于该组的好友列表
List<Contact>contacts = contactGroup.Contacts.ListContacts. 

功能4(加载群成员列表):

GroupBase groupBase = new GroupBase(sdk); List<PersonalGroup> personalGroups =groupBase.getPersonalGroupList(); //下面的代码很重要,如若缺少,则personalGroups里只是一些基本信息,成员信息没有.

foreach (PersonalGroup personalGroup in personalGroups) { AsyncBizOperation op = new AsyncBizOperation(); lock (op) { sdk.AccountManager.CurrentUser.PersonalGroupManager.GetGroupMemberList(group,op); } }

功能5,6(加载图像):

首先要得到一个有效的Contact实例

其次增加Contact.ContactInfo. PropertiesChanged事件

最后在事件代码里完成图片的下载

基本代码如下 :

IicUri uri = Uri.CreatUri(string MobileNo); Contact contact =sdk.AccountManager.CurrentUser.ContactList.FindFindContactByMsisdnEx(uri.MobileNo); If(contact==null) { AsyncBizOperation op = newAsyncBizOperation(); contact =sdk.AccountManager.CurrentUser.ContactList.FindOrCreateContact(uri.Raw, op); } //添加事件
contact.PersonalInfo.PropertiesChanged += newEventHandler<PropertiesChangedEventArgs>(PersonalInfo_PropertiesChanged); void PersonalInfo_PropertiesChanged(object sender,PropertiesChangedEventArgs e) { //返回为 True时表示图像下载完毕
    if(!e.ContainsAnyOfProperties(new string[] { "nickname","Provision", "Portrait" })) { pictureBox1.Image =((ContactInfo)sender).Portrait; } }

功能7(发送消息)

sdk.ContactControl.SendSMS.SendSMS(friendPhone, msg);  //发送手机短信
sdk.ContactControl.SendIM.SendIM(friendPhone, msg);    //进行即时通信(注:通过contact.Presence.MainPresence在属性值确定用户状态,如:
Imps.Common.MainPresence.OfflineLogin, Imps.Common.MainPresence.Offline);

功能8(接收好友信息)

       接收信息前需要添加事件sdk.SDK_ReceiveMessage

       然后在事件中接收消息

功能9(添加飞信好友)

//声明变量
bool isByMobileNo = false;       //是否以手机号码加飞信
string id = string.Empty;            //userId
string domain = string.Empty;         //
Nullable<int> targetGroupId = null;       //添加到哪一组中(每个contactGroup能有一个ID属性)
string localName = string.Empty;           //本地备注
ContactList.AddBuddyExtraData extraData = newContactList.AddBuddyExtraData(); bool sendRequestAgain = false; bool copyWhenExist = false; Nullable<bool> invite = null; AsyncBizOperation op = new AsyncBizOperation(); //赋值
IicUri uri = IicUri.CreateTelUri(friendNo); id = uri.MobileNo; isByMobileNo = true; domain = "fetion"; targetGroupId = targetId; localName = “//本地备注名”
extraData = new ContactList.AddBuddyExtraData(); extraData.WhoAmI = “//我是谁?”
sendRequestAgain = true; copyWhenExist = false; invite = null; //执行加入好友
op.ImpsError += newEventHandler<ImpsErrorEventArgs>(op_ImpsError); op.Successed += new EventHandler(op_Successed); sdk.AccountManager.CurrentUser.ContactList.AsyncAddBuddy(isByMobileNo,id, domain, targetGroupId, localName, extraData, sendRequestAgain,copyWhenExist, invite, op);

 

 

 

你可能感兴趣的:(sdk)