Fragment f = mIMKit.getContactsFragment();
Class<? extends Fragment> c = mIMKit.getContactsFragmentClass();
通过mIMKit.getContactService获取联系人管理器,接口为IYWContactService 。
IYWContactService contactService = mIMKit.getContactService();
如果是IMCroe集成的方式,可以通过IMCore对象来获取
imCore.getContactService();
IYWContactService.syncContacts,该方法会从服务器同步联系人,并同步更新缓存和数据库的联系人信息,成功后从缓存读取联系人信息。参数为操作结果回调。
IWxCallback callback = new IWxCallback() {
@Override
public void onSuccess(Object... result) {
List<IYWDBContact> contactsFromCache = IYWContactService.getContactsFromCache();
}
@Override
public void onProgress(int progress) {
}
@Override
public void onError(int code, String info) {
}
};
contactService.syncContacts(callback);
IYWContactService.getContactsFromCache,返回值为List<IYWDBContact>。
List<IYWDBContact> contactsFromCache = contactService.getContactsFromCache();
IYWContactService.syncContactsOnlineStatus,参数为联系人实例(必须设置userid和appkey)列表和操作结果回调。
IWxCallback result = new IWxCallback() {
//已经在UI线程
@Override
public void onSuccess(Object... result) {
Map<String, IYWOnlineContact> contacts = (Map<String, IYWOnlineContact>) result[0];
if (contacts != null) {
for (Map.Entry<String, IYWOnlineContact> entry : contacts
.entrySet()) {
//用户userid
String uid = entry.getKey();
IYWOnlineContact ct = entry
.getValue();
//用户在线状态
boolean online=ct.getOnlineStatus()==0?true:false;
//...
}
}
}
@Override
public void onError(int code, String info) {
}
@Override
public void onProgress(int progress) {
}
};
contactService.syncContactsOnlineStatus((List<IYWContact>) (List) mIYWContactsImplList);
IYWContactService.asynchronousSyncContactsToCacheAndDB,异步地将联系人同步到云旺的Cache和DB。参数为List<IYWDBContact>和操作结果回调。
IWxCallback result = new IWxCallback() {
@Override
public void onSuccess(Object... result) {
// onSuccess参数为空
}
@Override
public void onError(int code, String info) {
}
@Override
public void onProgress(int progress) {
}
};
List<IYWDBContact> contactsFromCache = IYWContactService.getContactsFromCache();
//...
contactService.asynchronousSyncContactsToCacheAndDB((List<IYWDBContact>) (List) contactsFromCache, result);
IYWContactService.addContact,参数为联系人Id、联系人的appKey,好友备注(可选)、验证信息和操作结果回调。
IWxCallback callback = new IWxCallback() {
@Override
public void onSuccess(Object... result) {
// onSuccess参数为空
}
@Override
public void onProgress(int progress) {
}
@Override
public void onError(int code, String info) {
}
};
contactService.addContact(mUserId, mAppKey, mRemarkName,mMsg,callback);
IYWContactService.delContact,参数为联系人Id、联系人的appKey和操作结果回调。
IWxCallback callback = new IWxCallback() {
@Override
public void onSuccess(Object... result) {
if (result != null && result.length > 0) {
IYWContact iywContact = (IYWContact) result[0];
//.....
}
}
@Override
public void onProgress(int progress) {
}
@Override
public void onError(int code, String info) {
}
};
contactService.delContact(mUserId, mAppKey,callback);
IYWContactService.ackAddContact,参数为联系人Id、联系人的appKey,是否同意、回应时带上的消息和操作结果回调。
IWxCallback callback = new IWxCallback() {
@Override
public void onSuccess(Object... result) {
// onSuccess参数为空
}
@Override
public void onProgress(int progress) {
}
@Override
public void onError(int code, String info) {
}
};
contactService.ackAddContact(mUserId, mAppKey,true,mRetMsg,callback);
IYWContactService.chgContactRemark,参数为联系人Id,联系人的appKey,联系人的备注名和操作结果回调。
IWxCallback callback = new IWxCallback() {
@Override
public void onSuccess(Object... result) {
// onSuccess参数为空
}
@Override
public void onProgress(int progress) {
}
@Override
public void onError(int code, String info) {
}
};
contactService.chgContactRemark(mUserId, mAppKey,mRemarkName,callback);
IYWContactService.addContactCacheUpdateListener,参数为事件监听回调IYWContactCacheUpdateListener。
使用示例:
mContactCacheUpdateListener=new IYWContactCacheUpdateListener(){
/**
* 好友缓存发生变化(联系人备注修改、联系人新增和减少等),可以刷新使用联系人缓存的UI
* 该回调在UI线程回调 ,请勿做太重的操作
*
* @param currentUserid 当前登录账户
* @param currentAppkey 当前Appkey
*/
@Override
public void onFriendCacheUpdate(String currentUserid, String currentAppkey) {
}
};
contactService.addContactCacheUpdateListener(mContactCacheUpdateListener);
IYWContactService.addContactOperateNotifyListener,、参数为事件监听回调IYWContactOperateNotifyListener。
使用示例:
mContactOperateNotifyListener = new IYWContactOperateNotifyListener(){
/**
* 用户请求加你为好友
* 该回调在UI线程回调 ,请勿做太重的操作
*
* @param contact 用户的信息
* @param message 附带的备注
*/
@Override
public void onVerifyAddRequest(IYWContact contact, String message) {
}
/**
* 用户接受了你的好友请求
* 该回调在UI线程回调 ,请勿做太重的操作
*
* @param contact 用户的信息
*/
@Override
public void onAcceptVerifyRequest(IYWContact contact) {
}
/**
* 云旺服务端(或其它终端)进行了好友添加操作
* 该回调在UI线程回调 ,请勿做太重的操作
*
* @param contact 用户的信息
*/
@Override
public void onSyncAddOKNotify(IYWContact contact) {
}
/**
* 用户从好友名单删除了您
* 该回调在UI线程回调 ,请勿做太重的操作
*
* @param contact 用户的信息
*/
@Override
public void onDeleteOKNotify(IYWContact contact) {
}
};
contactService.addContactOperateNotifyListener(mContactOperateNotifyListener);
IYWContactService.getContactsChangeTimeStamp,获取当前联系人变化的时间戳(每次变化的时候都会更新,用于主动比较是否需要更新联系人UI,主动更新UI)。
使用示例:
String currentUserId=imCore.getLoginUserId();
String currentAppkey=imCore.getAppKey();
long currentTimeStamp=contactService.getContactsChangeTimeStamp();
if(lTimeStamp<()&&luid.equals()||!lUserId.equalts(currentUserId)||!lAppkey.equals(currentAppkey)){
//todo 联系人有变化或者(被动或主动)切换账户了,则更新联系人列表
}
IYWContactService.updateContactSystemMessage,参数为用于更新的系统消息。
contactService.updateContactSystemMessage(mYWSystemMessage);
具体操作可以参见IMCore集成中“黑名单”的相关内容
具体操作可以参见IMCore集成中“单聊消息接收设置”的相关内容