联系人功能

打开联系人窗口

Fragment方式

Fragment f = mIMKit.getContactsFragment();

FragmentClass方式

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

将联系人好友同步到Cache和DB

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

主动比较是否需要更新联系人UI

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

FAQ

关于此文档暂时还没有FAQ
返回
顶部