FetionSDK.dll说明 BY SYSU_LXIONGH

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);

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值