-
Notifications
You must be signed in to change notification settings - Fork 6
iuapwuxiaoliang edited this page Dec 13, 2016
·
3 revisions
var json = {
"method": "YYIM.login",
"params": {
"userinfo": userinfo
}
}
summer.callCordova("summer-plugin-service.XService", "callSync", json,null,null);
- params: json字符串 需要传递的参数,登录有信需要传入用户的信息;
- method 封装有信的接口;
var command = {
"method": "YYIM.fetchMessages",
"params": {
"callback": "callback()" // 收到消息时候回调
}
}
summer.callCordova("summer-plugin-service.XService", "callSync", command,null,null);
- params: json字符串 传入回调函数,获取消息的数据储存在回调函数的参数中,在回调函数中处理返回的数据;
- method 封装有信的接口;
var json = {
"method": "YYIM.registerMessageObserver",
"params": {
"callback": "callback()" // 收到消息时候回调
}
}
summer.callCordova("summer-plugin-service.XService", "callSync", json,null,null);
- params: json字符串 传入回调函数,获取消息的数据储存在回调函数的参数中,在回调函数中处理返回的数据;
- method 封装有信的接口;
var json = {
"method": "YYIM.updateMessageReaded",
"params": {
"accountID": id // 获取的消息ID
}
}
summer.callCordova("summer-plugin-service.XService", "callSync", json,null,null);
- params: json字符串 将已经查过的消息设置为已读,需要传入通知类消息的ID值;
- method 封装有信的接口;
var json = {
"method": "YYIM.chat",
"params": {
"chatID": id, // 从消息列表获取
}
}
summer.callCordova("summer-plugin-service.XService", "callSync", json,null,null);
- params: json字符串 传入聊天类消息的ID值,进入聊天界面;
- method 封装有信的接口;
var json = {
"method": "YYIM.updateUserInfo",
"params": {
"userPhoto": src, // 头像图片地址
"userName" :name //用户的昵称
}
}
summer.callCordova("summer-plugin-service.XService", "callSync", json,null,null);
- params: json字符串 传入用户新头像的url地址或者用户的新昵称 ;
- method 封装有信的接口;
var params = {
"method": "YYIM.logout",
}
summer.callCordova("summer-plugin-service.XService", "callSync", json,null,null);
- method 封装有信的接口;
//登录有信 IM
function loginIm(){
var account = JSON.parse(localStorage.getItem("account"));
var userinfo = {
"usercode": account.usercode,
"password": account.pwd,
"userName": account.username
}
var params = {
"method": "YYIM.login",
"params": {
"userinfo": userinfo
}
}
cordova.exec(null, null, "XService", "callSync", [params]);
}
summerready = function () {
callFetchMessages(); //获取用户所有消息
getNewInfo(); //监控实时消息推送
summer.window.setRefreshHeaderInfo({ //下拉刷新,重新获取用户消息
visible: true,
bgColor: '#ffffff',
textColor: '#4d4d4d',
textDown: '下拉刷新...',
textUp: '松开刷新...',
showTime: true
}, function (ret, err) {
callFetchMessages();
summer.window.refreshHeaderLoadDone();
});
};
function callFetchMessages() {
var json = {
"method": "YYIM.fetchMessages",
"params": {
"callback": "getMessages()"
}
}
summer.callCordova("summer-plugin-service.XService", "callSync", json,null,null);
}
//将获取到的消息列表填充到页面中
function getMessages(args) {
var result = JSON.parse(args.result);
commonData.allData = result;
var tText = doT.template($("#template").html());
$(".table-view").html(tText(result));
getUnReadNum(result);
}
//监听实时推送
function getNewInfo() {
var json = {
"method": "YYIM.registerMessageObserver",
"params": {
"callback": "receiveMessage()" // 收到消息时候回调
}
}
summer.callCordova("summer-plugin-service.XService", "callSync", json,null,null);
}
function receiveMessage(args) {
var message = JSON.parse(args.result);
//未读消息变化
commonData.unReadNum += message.newCount;
//更新角标
refreshCorner();
//匹配新消息
var matchInfo=matchNewMessage(message,commonData.allData);
if (message.type == 'chat') {
if (matchInfo.isSame) {
//返回的信息newCount=0,为从聊天页面返回消息页
if (message.newCount == 0) {
commonData.unReadNum -= commonData.allData[matchInfo.index].newCount;
refreshCorner();
//修改commonData.allData的值保持同步
commonData.allData[matchInfo.index].newCount=0;
}
else {
message.newCount += commonData.allData[matchInfo.index].newCount;
}
/*删去原来聊天列表*/
removeOldItem('.chat',matchInfo.index,commonData.allData,matchInfo.sameIndex)
/*创建新聊天列表*/
createChatItem(message);
} else {
createChatItem(message);
}
} else {
//新增消息项
if (matchInfo.isSame) {
var newCount = commonData.allData[matchInfo.index].newCount + message.newCount;
//监听信息的未读数改为原来+1
message.newCount = newCount;
/*删除原来的消息列表*/
removeOldItem('.pubaccount',matchInfo.index,commonData.allData,matchInfo.sameIndex);
/*创建新的消息列表*/
createMessageItem(message);
} else {
createMessageItem(message);
}
}
}
//打开聊天方法
function openChat(obj) {
watchReadNum(obj); //打开聊天界面时,未读消息数量变化
var id = $(obj).attr('data-id'); //获取聊天信息的ID
var command = {
"method": "YYIM.chat",
"params": {
"chatID": id, // 从消息列表获取
}
}
summer.callCordova("summer-plugin-service.XService", "callSync", command,null,null);
}
//打开消息页面
function openWin(obj) {
watchReadNum(obj);//检测打开未读消息时未读消息总数变化
var num = null;
var id = $(obj).attr("data-id");
callUpdateMessageReaded(id);
if (id == 'daibantongzhi') {
num = 303;
}
if (id == 'xitongxiaoxi') {
num = 304;
}
summer.openWin({
id: 'first-head',
url: 'html/first-head.html',
pageParam: {
count: num
}
});
}
//创建全局维护的变量
var commonData={
//保存用户全部消息数据;
allData:[],
//保存未读消息总数;
unReadNum:0
}
- 1.首次请求数据,将请求的数据赋值给allData;
- 2.新消息推送过来时,判断消息ID是否存在,如果存在,删去allData中的旧数据,将新数据放到allData的头条位置;不存在,则直接将新数据放到allData的头条位置。
- 3.下拉刷新时,将获取到的数据重新赋值给allData;
- 1.请求全部数据时,遍历数据将未读数据的总和赋值给unReadNum;
- 2.打开消息界面或者聊天界面,unReadNum需要减去该信息的未读数;
- 3.新消息推送时,判断新消息数据的newCount值,为空表示从聊天页面返回消息页面,需要减去聊天页面中推送的消息数;为1,则unReadNum直接+1。
function setIm(src){
var json = {
"method": "YYIM.updateUserInfo",
"params": {
"userPhoto": src // 头像图片地址
}
}
summer.callCordova("summer-plugin-service.XService", "callSync", json,null,null);
}
//退出有信
function quitIm(){
var json = {
"method": "YYIM.logout",
"params":{}
}
summer.callCordova("summer-plugin-service.XService", "callSync", json,null,null);
}

