好友管理
概述
jmessage android sdk 从1.4.0版本开始提供接口实现对用户好友关系的托管,以及相关好友请求的发送和接收。
好友模块仅实现对用户好友关系的托管,以及相关好友请求的发送和接收。除此之外的任何建立在好友关系之上的功能(如仅限于好友之间才能进行的聊天等),需要开发者的应用层自己实现。jmessage本身是无好友通信模式。
发送好友添加请求
发送添加好友请求。在对方未做回应的前提下,允许重复发送添加好友的请求。请求发送后对方会收到一条好友请求的ContactNotifyEvent事件。
public static void sendInvitationRequest(final String targetUsername,String appKey, final String reason, final BasicCallback callback)
参数定义
- String targetUsername 被邀请方用户名
- String appKey 被邀请方用户的appKey,如果为空则默认从本应用appKey下查找用户。
- String reason 申请理由
- BasicCallback callback 结果回调
代码示例:
ContactManager.sendInvitationRequest("test_user", "test_appkey", "hello", new BasicCallback() {
@Override
public void gotResult(int responseCode, String responseMessage) {
if (0 == responseCode) {
//好友请求请求发送成功
} else {
//好友请求发送失败
}
}
});
接受好友请求
接受对方的好友请求,操作成功后,对方会出现在自己的好友列表中,双方建立起好友关系。请求发送后对方会收到一条好友请求被接受的ContactNotifyEvent事件。
ContactManager.acceptInvitation(final String targetUsername, String appKey, final BasicCallback callback)
参数定义
- String targetUsername 邀请方的用户名
- String appKey 邀请方用户的appKey,如果为空则默认从本应用appKey下查找用户。
- BasicCallback callback 结果回调
代码示例:
ContactManager.acceptInvitation("test_user", "test_appkey", new BasicCallback() {
@Override
public void gotResult(int responseCode, String responseMessage) {
if (0 == responseCode) {
//接收好友请求成功
} else {
//接收好友请求失败
}
}
});
拒绝好友请求
拒绝对方的好友请求。请求发送后对方会收到一条好友请求被拒绝的ContactNotifyEvent事件。
ContactManager.declineInvitation(final String targetUsername, String appKey, String reason, final BasicCallback callback)
参数定义
- String targetUsername 邀请方用户名
- String appKey 邀请方用户的appKey,如果为空则默认从本应用appKey下查找用户。
- String reason 拒绝理由
- BasicCallback callback 结果回调
代码示例:
ContactManager.declineInvitation("test_user", "test_appkey", "sorry~", new BasicCallback() {
@Override
public void gotResult(int responseCode, String responseMessage) {
if (0 == responseCode) {
//拒绝好友请求成功
} else {
//拒绝好友请求失败
}
}
});
获取好友列表
获取当前登录用户的好友列表,异步返回结果。
ContactManager.getFriendList(final GetUserInfoListCallback callback)
参数定义
- GetUserInfoListCallback callback 结果回调。
代码示例:
ContactManager.getFriendList(new GetUserInfoListCallback() {
@Override
public void gotResult(int responseCode, String responseMessage, List<UserInfo> userInfoList) {
if (0 == responseCode) {
//获取好友列表成功
} else {
//获取好友列表失败
}
}
});
删除好友
将用户从你的好友列表中移除,移除成功后,对方会收到一条好友被移除的ContactNotifyEvent事件。
userinfo.removeFromFriendList(BasicCallback callback)
参数定义
- BasicCallback callback 结果回调
代码示例:
userinfo.removeFromFriendList(new BasicCallback() {
@Override
public void gotResult(int responseCode, String responseMessage) {
if (0 == responseCode) {
//移出好友列表成功
} else {
//移出好友列表失败
}
}
});
更新用户备注名/备注信息
为好友添加备注名和备注信息。仅当用户存在于你的好友列表中时,才能更新其备注名和备注信息。
userinfo.updateNoteName(String noteName, BasicCallback callback)
userinfo.updateNoteText(String noteText, BasicCallback callback)
参数定义:
- String noteName 新的备注名
- String noteText 新的备注信息
- BasicCallback callback 结果回调
代码示例:
userinfo.updateNoteName("new_note_name", new BasicCallback() {
@Override
public void gotResult(int responseCode, String responseMessage) {
if (0 == responseCode) {
//更新备注名成功
} else {
//更新备注名失败
}
}
});
好友相关通知事件
新增联系人相关通知事件ContactNotifyEvent
,具体事件处理方法见:事件处理一节
方法 | 类型 | 说明 |
---|---|---|
getType() | ContactNotifyEvent.Type | 获取联系人通知事件的具体类型,具体类型见Type定义 |
getReason() | String | 获取事件发生的理由,该字段由对方发起请求时所填,对方如果未填则将返回默认字符串 |
getFromUsername() | String | 获取事件发送者的username |
getFromUserAppKey() | String | 获取事件发送者用户所属应用的appKey |
示例代码:
class ContactNotifyEventReceiver extends Activity{
@Override
protected void onCreate() {
super.onCreate(savedInstanceState);
JMessageClient.registerEventReceiver(this);
}
@Override
protected void onDestroy() {
JMessageClient.unRegisterEventReceiver(this);
super.onDestroy();
}
public void onEvent(ContactNotifyEvent event) {
String reason = event.getReason();
String fromUsername = event.getFromUsername();
String appkey = event.getfromUserAppKey();
switch (event.getType()) {
case invite_received://收到好友邀请
//...
break;
case invite_accepted://对方接收了你的好友邀请
//...
break;
case invite_declined://对方拒绝了你的好友邀请
//...
break;
case contact_deleted://对方将你从好友中删除
//...
break;
default:
break;
}
}
}