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集成中“单聊消息接收设置”的相关内容