yun2win-web端im快速接入方法
yun2win官网:www.yun2win.com
简介
IMWeb SDK提供Web端完整解决方案,方便客户快速集成IM功能. SDK 提供的能力如下:
IMWeb SDK代码放在github.com开源,请从以下网址下载:
https://github.com/yun2win/yun2win-sdk-web/
Web目录结构如下:
调用以下代码进行用户注册
/**
* 注册
* @param account:帐号信息,常见如邮箱,手机号码等。
* @param pwd:密码
* @param name:名称
* @returns user:{
id:"1",
name:"例君",
account:"audd",
avatarUrl:""
}
*/
Users.getInstance().remote.register(account, pwd, name, function(err, user){
if(err){
alert("注册失败:" + err);
return;
}
alert("注册成功");
window.location.href = '../web/index.html';
});
调用以下代码进行登录
Users.getInstance().remote.login(account, pwd, function(err){
if(err){
alert("登录失败:" + err);
return;
}
window.location.href = '../web/main.html';
})
登录成功后会将用户登录信息保存到localStorage,供载入main.html后调用。
根据帐户查找用户。
/**
* 根据帐户查找用户(单个),
* @param account:目前不支持模糊查找,需要完整的account。
* @param token:如果用户已经登陆,此处设为null,否则需要设定值
* @returns user:{
id:"1",
name:"例君",
account:"audd",
avatarUrl:""
}
*/
Users.getInstance().remote.search(account, token, function(err,user){
if(user){
//查到了用户
}
});
进入main.html后,调用以下代码初始化当前用户
var currentUser = Users.getInstance().getCurrentUser();
当前用户对象包含以下属性:
var CurrentUser = function(obj){
this.appKey = obj['key'];
this.secret = obj['secret'];
this.token = obj['token'];
this.imToken = obj['imToken'];//用于连接y2wIM消息推送服务器
this.userConversations = new UserConversations(this);//用户会话对象
this.contacts = new Contacts(this);//联系人对象
this.sessions = new Sessions(this);//会话对象
this.userSessions = new UserSessions(this);//群组对象
this.attchments = new Attachments(this);//附件对象
this.remote = currentUserRemoteSingleton.getInstance(this);//远程方法封装对象
this.currentSession;//当前会话对象
this.y2wIMBridge;//消息推送代理对象
}
当前用户对象包含以下远程方法:
currentUser.remote.store(function(err){
if(err){
alert("更新失败:" + err);
return;
}
alert("更新成功");
})
currentUser.remote.syncIMToken(function(err){
if(err){
alert("同步失败:" + err);
return;
}
alert("同步成功");
})
当前用户对象初始化时会做以下工作:
用户会话由服务端管理,客户端不能主动创建,只需通过同步获取最新的用户会话信息,用户会话包含如下对象:
用户会话管理对象,管理列表,查询与同步等工作
UserConversations包含以下属性:
var UserConversations = function(user){
this.user = user;//用户会话管理对象从属于某一用户,此处保存对用户的引用,通常为当前用户
this.updatedAt = globalMinDate;//同步时间戳,同步时使用此时间戳获取之后的数据
this.remote = new userConversationsRemote(this);//远程方法封装对象
}
UserConversations包含以下本地方法
userConversations.init()
/**
* 获取用户会话
* @param type['p2p'|'group']:会话场景类型
* @param targetId[user.id|session.id]会话目标Id
* type=='p2p':targetId=user.id(对方用户);
* type=='group':targetId=session.id(会话id)
* @returns userConversation
*/
userConversations.get(type, targetId)
/**
* 获取用户会话列表
* @param type['p2p'|'group'|undefined]
* @returns [userConversation]
*/
userConversations.getUserConversations(type)
UserConversations包含以下远程方法
userConversations.remote.sync(function(err){
if(err){
alert("同步失败:" + err);
return;
}
alert("同步成功");
})
/**
* 更新用户会话信息
* @param userConversation
* @param cb
*/
userConversations.remote.store(userConversation, function(err){
if(err){
alert("更新失败:" + err);
return;
}
alert("更新成功");
})
/**
* 删除用户会话
* @param userConversationId:用户会话id
* @param cb
*/
userConversations.remote.remove(userConversationId, function(err){
if(err){
alert("删除失败:" + err);
return;
}
alert("删除成功");
})
用户会话对象,包含用户会话信息,并管理该用户会话下的消息
UserConversation包含以下属性:
var UserConversation = function(userConversations, obj){
this.userConversations = userConversations;//用户会话从属于用户会话管理对象,此处保存对其的引用
this.id = obj['id'];//用户会话id
this.name = obj['name'];//名称
this.avatarUrl = obj['avatarUrl'] || ' ';//头像
this.targetId = obj['targetId'];//会话目标Id
this.unread = obj['unread'];//未读数量
this.type = obj['type'];//场景类型['p2p','group']
this.isDelete = obj['isDelete'];//删除标志
this.createdAt = new Date(obj['createdAt']).getTime();//创建时间
this.updatedAt = new Date(obj['updatedAt']).getTime();//更新时间
this.visiable = obj['visiable'];//是否显示
this.top = obj['top'];//置顶标志
this.lastMessage = obj['lastMessage'];//最近一条消息内容
}
UserConversation包含以下方法
/**
* 获取名称
* @returns name
*/
userConversation.getName()
/**
* 获取头像
* @returns url
*/
userConversation.getAvatarUrl()
userConversation.getSession(function(err, session){
if(err){
alert('获取session失败:' + err);
return;
}
alert('获取session成功');
})
/**
* 同步消息
* @param force:强制同步
* @param cb
*/
userConversation.syncMessages(force, function(err, messages){
if(err){
alert('同步失败:' + err);
return;
}
alert('同步成功');
})
/**
* 获取历史纪录
* @param cb
*/
userConversation.getLastMessages(function(err, messages){
if(err){
alert('获取历史消息失败:' + err);
return;
}
alert('获取历史消息成功');
})
userConversation.clearUnread()
联系人包含如下对象:
联系人管理对象,管理列表,查询与同步等工作
Contacts包含以下属性:
var Contacts = function(user){
this.user = user;//联系人管理对象从属于某一用户,此处保存对用户的引用,通常为当前用户
this.updatedAt = globalMinDate;//同步时间戳,同步时使用此时间戳获取之后的数据
this.remote = new contactsRemote(this);//远程方法封装对象
}
Contacts包含以下本地方法
contacts.init()
/**
* 获取联系人
* @param userId:用户id
* @returns contact
*/
contacts.get(userId)
/**
* 获取联系人列表
* @returns [contact]
*/
contacts.getContacts()
Contacts包含以下远程方法
contacts.remote.sync(function(err){
if(err){
alert("同步失败:" + err);
return;
}
alert("同步成功");
})
/**
* 添加联系人
* @param userId:用户id
* @param name:用户姓名
* @param cb
*/
contacts.remote.add(userId, name, function(err){
if(err){
alert("添加联系人失败:" + err);
return;
}
alert("添加联系人成功");
})
添加联系人后使用同步方法重新获取联系人
/**
* 更新联系人信息
* @param contact
* @param cb
*/
contacts.remote.store(contact, function(err){
if(err){
alert("更新失败:" + err);
return;
}
alert("更新成功");
})
/**
* 删除联系人
* @param contactId:联系人id
* @param cb
*/
contacts.remote.remove(contactId, function(err){
if(err){
alert("删除失败:" + err);
return;
}
alert("删除成功");
})
联系人对象
Contact包含以下属性:
var Contact = function(contacts, obj){
this.contacts = contacts;//联系人从属于联系人管理对象,此处保存对其的引用
this.id = obj['id'];//联系人id
this.name = obj['name'];//名称
this.pinyin = obj['pinyin'];//拼音
this.title = obj['title'];//备注,修改联系人备注,会在会话及消息中显示备注的名称
this.titlePinyin = obj['titlePinyin'];//备注拼音
this.remark = obj['remark'];//其它信息
this.isDelete = obj['isDelete'];//删除标志
this.createdAt = new Date(obj['createdAt']).getTime();//创建时间
this.updatedAt = new Date(obj['updatedAt']).getTime();//更新时间
this.userId = obj['userId'];//用户id
this.avatarUrl = obj['avatarUrl'] ||