av一区二区三区在线观看_久久久久国产一区二区三区_伊人春色在线播放_欧美亚洲国产一区_九九热在线免费视频_久久视频国产

1、單聊

? 發送文本\圖片\附件 — 我們假設Tony給John發送消息,示例代碼如下(參考Demo中IM. DO_sendMsg):

//新建消息體對象
var obj = new RL_YTX.MsgBuilder();
//設置自定義消息id
obj.setId(msgid);
//假設頁面存在一個id為file的<input type=”file”>元素 
//獲取圖片或附件對象
var file = document.getElementById("file").files[0];
//設置圖片或附件對象
obj.setFile(file);
//設置發送的文本內容
obj.setText(text);
//設置發送的消息類型1:文本消息 4:圖片消息 6:壓縮文件 7:非壓縮文件
//發送非文本消息時,text字段將被忽略,發送文本消息時 file字段將被忽略
obj.setType(1);
//設置接收者
obj.setReceiver(“john的id”);

RL_YTX.sendMsg(obj, function(){
//發送消息成功
//處理用戶邏輯,通知頁面
}, function(obj){//失敗
//發送消息失敗
//處理用戶邏輯,通知頁面刷新,展現重發按鈕
}, function(sended, total){
//發送圖片或附件時的進度條
		//如果發送文本消息,可以不傳該參數
});

                    

? 接收消息 — 我們假設John收到Tony發送過來的消息,示例代碼如下(參考Demo中IM. EV_onMsgReceiveListener):

//獲取發送者為 
var sender = obj.msgSender;
//獲取發送者昵稱,如果不存在,使用賬號代替
var you_senderNickName = obj.senderNickName;
var name = obj.msgSender;
if(!!you_senderNickName){
    name = you_senderNickName;
}
var content_type = null;
//獲取消息版本號
var version = obj.version;
//獲取消息發送時間
var time = obj.msgDateCreated;
//獲取消息類型 
//1:文本消息 2:語音消息4:圖片消息6:文件
var msgType = obj.msgType;
if(1 == msgType || 0 == msgType){
	//文本消息,獲取消息內容
var you_msgContent = obj.msgContent;
}else if(2 == msgType){
	//語音消息,獲取語音文件url
	var url = obj.msgFileUrl;
}else if(3 == msgType){
//3:視頻消息,獲取視頻url
    //語音消息,獲取語音文件url
	var url = obj.msgFileUrl;
}else if(4 == msgType){
	//圖片消息 獲取圖片url
	var url = obj.msgFileUrl;
}else{
	//后續還會支持(地理位置,視頻,以及自定義消息等)
}
//通知前端更新頁面

                    

? 閱后即焚 — 我們假設John要刪除Tony發送過來的消息,示例代碼如下(參考Demo中IM. DO_showFireMsg):

var deleteReadMsgBuilder = new RL_YTX.DeleteReadMsgBuilder();
deleteReadMsgBuilder.setMsgid(john接收到的msgid);
RL_YTX.deleteReadMsg(deleteReadMsgBuilder,function(obj){
    console.log("閱后即焚消息通知主叫側成功");
},function(obj){
    console.log("閱后即焚消息通知主叫側失敗")
    alert(obj.code)
});

                    

? 閱后即焚操作通知 — 當john刪除了Tony發送的消息時,tony會收到閱后即焚操作通知,示例代碼如下(參考demo中IM._onMsgNotifyReceiveListener):

IM._onMsgNotifyReceiveListener = RL_YTX.onMsgNotifyReceiveListener(function(obj){
  if(obj.msgType == 21 ){ 
    console.log("接收方已刪除閱后即焚消息obj.msgId="+obj.msgId);
    var id = obj.sender+"_"+obj.msgId;
    $(document.getElementById(id)).remove();
  }
});

                    

? 獲取輸入狀態

1、當John給Tony發消息:John將光標定位在輸入框的時候,如果有選中的當前聯系人Tony

var result = IM.Do_boxCheck(bOn);
if (result != null) {
	// 發送消息至服務器
	if ("C" == result[3]) {
		IM.EV_sendTextMsg(result[0], domain, result[2], false, IM._transfer);
	}
}

					

2、當Tony收到這個正在輸入的狀態消息時,判斷如果msgType等于12的時候,說明這是個輸入狀態的消息監聽,通過msgDomain來判斷狀態

RL_YTX.onMsgReceiveListener(function(obj){
	if(obj.msgType == 12){
	if (obj.msgDomain == 1) {
		//正在輸入……
		return;
	} else if (obj.msgDomain == 0) {
		//非任何輸入狀態
		return;
	} else if (obj.msgDomain == 2) {
		//正在錄音;
		return;
	}
	}
	IM.DO_push_createMsgDiv(obj);
})


                    

2、群聊

? 發送文本\圖片\附件 — 我們假設Tony給群組名為”出彩中國人”發送消息,示例代碼如下(參考Demo中IM. DO_sendMsg):

//新建消息體對象
var obj = new RL_YTX.MsgBuilder();
//設置自定義消息id
obj.setId(msgid);
//假設頁面存在一個id為file的<input type=”file”>元素 
//獲取圖片或附件對象
var file = document.getElementById("file").files[0];
//設置圖片或附件對象
obj.setFile(file);
//設置發送的文本內容
obj.setText(text);
//設置發送的消息類型1文本消息4 圖片消息6 附件消息
//發送非文本消息時,text字段將被忽略,發送文本消息時 file字段將被忽略
obj.setType(1);
//設置接收者
obj.setReceiver(“出彩中國人的群組id”);

RL_YTX.sendMsg(obj, function(){
//發送消息成功
//處理用戶邏輯,通知頁面
}, function(obj){//失敗
//發送消息失敗
//處理用戶邏輯,通知頁面刷新,展現重發按鈕
}, function(sended, total){
//發送圖片或附件時的進度條
		//如果發送文本消息,可以不傳該參數
});

                    

? 接收消息 — 我們假設John收到群組”出彩中國人”發送過來的消息,示例代碼如下(參考Demo中IM. EV_onMsgReceiveListener):

//獲取發送者
	var you_sender = (b_isGroupMsg) ? obj.msgReceiver : obj.msgSender;
	//獲取發送者昵稱,如果不存在,使用賬號代替
var you_senderNickName = obj.senderNickName;
var name = obj.msgSender;
if(!!you_senderNickName){
    name = you_senderNickName;
}
var content_type = null;
//獲取消息版本號
var version = obj.version;
//獲取消息發送時間
var time = obj.msgDateCreated;
//獲取消息類型 
//1:文本消息 2:語音消息 4:圖片消息6:文件
var msgType = obj.msgType;
if(1 == msgType || 0 == msgType){
	//文本消息,獲取消息內容
var you_msgContent = obj.msgContent;
}else if(2 == msgType){
	//語音消息,獲取語音文件url
	var url = obj.msgFileUrl;
}else if(3 == msgType){
//3:視頻消息,獲取視頻url
    //語音消息,獲取語音文件url
	var url = obj.msgFileUrl;
}else if(4 == msgType){
	//圖片消息 獲取圖片url
	var url = obj.msgFileUrl;
}else{
	//后續還會支持(地理位置,視頻,以及自定義消息等)
}
//通知前端更新頁面

                    

3、群組操作

? 創建群組 — 我們假設Tony要創建一個名為"出彩中國人",示例代碼如下(參考Demo中IM. EV_createGroup):

//新建創建群組對象
	var obj = new RL_YTX.CreateGroupBuilder();
//設置群組名稱
obj.setGroupName(“出彩中國人”);
//設置群組公告
obj. setDeclared(“歡迎體驗云通訊群組功能”);
// 設置群組類型,如:1臨時群組(100人)
obj. setScope(1);
// 設置群組驗證權限,如:需要身份驗證2
obj. setPermission(2);
//設置為討論組 該字段默認為2 表示群組,創建討論組時設置為1
obj.setTarget(1);
//發送消息
RL_YTX.createGroup(obj, function(obj){
	//獲取新建群組id
var groupId = obj.data;
//更新頁面

}, function(obj){
//創建群組失敗
});

                    

? 主動加入群組 — 只要知道群組id,就可以主動加入群組,討論組不可以主動加入。

1、我們假設"出彩中國人"群組已經有Tony和John兩位成員,現在Smith要加入"出彩中國人"群組,示例代碼如下:

var builder= new RL_YTX.JoinGroupBuilder();
//設置申請群組id
builder.setGroupId(“出彩中國人群組id”);
//設置申請理由
builder.setDeclared(“申請理由”);
//發送請求
RL_YTX.joinGroup(builder, function(){
//操作成功
},function(obj){
//操作失敗
});


                    

注意:

如果群組"出彩中國人"是公開群組,則smith直接被允許加入。如果群組"出彩中國人"是私有群組,則smith加入需要群主Tony的的同意。

Tony首先收到Smith加入的請求,示例代碼如下(參考DEMO中IM. EV_noticeReceiveListener):

//獲取群組id
	var groupId = obj.groupId;
//獲取群組名稱
var groupName = obj.groupName;
//獲取申請者id 
var peopleId = obj.member;
//獲取申請者名稱
var people = (!!obj.memberName)?obj.memberName:obj.member;
//1,(1申請加入群組,2邀請加入群組,3直接加入群組,4解散群組,5退出群組,6踢出群組,7確認申請加入,8確認邀請結果,10管理員修改群組信息,11用戶修改群組成員名片)
var auditType = obj.auditType;
if(1 == auditType){
    //處理申請加入通知
}

                    

Tony同意Smith加入的請求,示例代碼如下(參考IM. EV_confirmJoinGroup):

//新建同意加入請求對象
var obj = new RL_YTX.ConfirmJoinGroupBuilder();
//設置群組id
obj.setGroupId(“出彩中國人群組id”);
//設置申請者賬號
obj.setMemberId(“Smith賬號”);
//設置同意或拒絕 1拒絕 2同意
obj.setConfirm(2);
//發送請求
RL_YTX.confirmJoinGroup(obj, function(){
    //處理成功
}, function(obj){
    //處理失敗
});

                    

2、Smith加入成功后,群組中成員John收到的通知回調方法示例代碼如下(參考DEMO中IM. EV_noticeReceiveListener):

//獲取群組id
	var groupId = obj.groupId;
//獲取群組名稱
var groupName = obj.groupName;
//獲取加入者id 
var peopleId = obj.member;
//獲取加入者名稱
var people = (!!obj.memberName)?obj.memberName:obj.member;
//1,(1申請加入群組,2邀請加入群組,3直接加入群組,4解散群組,5退出群組,6踢出群組,7確認申請加入,8確認邀請結果,10管理員修改群組信息,11用戶修改群組成員名片)
var auditType = obj.auditType;
if(7 == auditType){
    //處理某人加入群組通知
}

                    

? 邀請加入群組 — 群組時只能群主邀請別人加入,討論組時任意用戶可以邀請別人加入,且討論組時無需對方同意。我們假設"出彩中國人"群組的創建者Tony邀請Smith加入群組,示例代碼如下(參考Demo中IM. EV_inviteGroupMember):

var builder = new RL_YTX.InviteJoinGroupBuilder();
builder. setGroupId(“出彩中國人群組id”);
builder. setMembers([“Smith的賬號”]);
//是否需要對方確認(1不需要直接加入,2需要)
var confirm = 2;
builder. setConfirm(confirm);
	//發送邀請
RL_YTX.inviteJoinGroup(builder,function(){
	//邀請成功
	If(confirm == 1){
		//更新頁面群組成員列表
	}
	//等待被邀請者同意
},function(obj){
//邀請成員失敗
})

                    

注意:

1、如果Tony邀請Smith加入的時候,接口參數指定不加入需要Smith確認,則smith直接被邀請加入。如果指定需要Smith同意才能加入,則Smith收到如下通知回調,并在回調里面回復"同意"或"拒絕"加入。示例代碼如下(參考DEMO中IM. EV_noticeReceiveListener):

//獲取群組id
var groupId = obj.groupId;
//獲取群組名稱
var groupName = obj.groupName;
//獲取邀請者id
var peopleId = obj.member;
//獲取邀請者名稱
var people = (!!obj.memberName)?obj.memberName:obj.member;
//1,(1申請加入群組,2邀請加入群組,3直接加入群組,4解散群組,5退出群組,6踢出群組,7確認申請加入,8確認邀請結果,10管理員修改群組信息,11用戶修改群組成員名片)
var auditType = obj.auditType;
if(2 == auditType){
    if(1 == obj.confirm){
        //直接加入群組,更新成員列表
    }else{
        // 處理邀請加入群組請求通知
    }
}

                    

2、Smith加入成功后,群組中成員John收到的通知回調方法,示例代碼如下(參考DEMO中IM. EV_noticeReceiveListener):

//獲取群組id
var groupId = obj.groupId;
//獲取群組名稱
var groupName = obj.groupName;
//獲取加入成員id
var peopleId = obj.member;
//獲取加入成員名稱
var people = (!!obj.memberName)?obj.memberName:obj.member;
//1,(1申請加入群組,2邀請加入群組,3直接加入群組,4解散群組,5退出群組,6踢出群組,7確認申請加入,8確認邀請結果,10管理員修改群組信息,11用戶修改群組成員名片)
var auditType = obj.auditType;
if(8 == auditType){
if(2 != obj.confirm){
    //拒絕管理員邀請,通知頁面
}else{
    //同意管理員邀請,通知頁面
}
}

                    

? 退出群組

1、我們假設Smith要退出群組,示例代碼如下(參考DEMO中IM. EV_quitGroup):

//新建退出群組請求對象
var obj = new RL_YTX.QuitGroupBuilder();
//設置群組id
obj.setGroupId(“出彩中國人群組id”);
//發送請求
RL_YTX.quitGroup(obj, function(){
	//退出群組成功
	//更新頁面
}, function(obj){
//退出群組失敗
});

                    

2、Smith退出成功后,群組中成員Tony和John收到的通知回調方法示例代碼如下 (參考Demo中的IM. EV_noticeReceiveListener) :

//獲取群組id
var groupId = obj.groupId;
//獲取群組名稱
var groupName = obj.groupName;
//獲取退出 者id
var peopleId = obj.member;
//獲取退出者名稱
var people = (!!obj.memberName)?obj.memberName:obj.member;
//1,(1申請加入群組,2邀請加入群組,3直接加入群組,4解散群組,5退出群組,6踢出群組,7確認申請加入,8確認邀請結果,10管理員修改群組信息,11用戶修改群組成員名片)
var auditType = obj.auditType;
if(5 == auditType){
    //有用戶退出群組,更新列表
}

                    

? 群主踢人

1、我們假設群主Tony要把Smith要踢出群組”出彩中國人”,示例代碼如下(參考DEMO中IM. EV_deleteGroupMember):

//構建踢出用戶請求對象
var builder = new RL_YTX.DeleteGroupMemberBuilder(groupId,memberId);
builder.setGroupId(“出彩中國人群組id”);
builder.setMemberId(“Smith賬號”);
RL_YTX.deleteGroupMember(builder, function(){
//踢出成功
},function(obj){
//踢出失敗
});

                    

2、群組中所有成員除管理員外都會收到的Smith被踢的消息,包括Smith自己,Smith判斷被踢用戶的id等于自己,則從本地刪除群組,此通知回調方法示例代碼如下 (參考Demo中的IM. EV_noticeReceiveListener) :

//獲取群組id
var groupId = obj.groupId;
//獲取群組名稱
var groupName = obj.groupName;
//獲取被踢出者id
var peopleId = obj.member;
//被踢出者名稱
var people = (!!obj.memberName)?obj.memberName:obj.member;
//1,(1申請加入群組,2邀請加入群組,3直接加入群組,4解散群組,5退出群組,6踢出群組,7確認申請加入,8確認邀請結果,10管理員修改群組信息,11用戶修改群組成員名片)
var auditType = obj.auditType;
if(6 == auditType){
	if(“Smith賬號”.equals(“peopleId”)){
		//是自己,更新群組列表
	}else{
		//更新群組成員列表
	}
}

                    

? 解散群組 — 只有群主才能解散群組,討論組不能被解散

1、我們假設群主Tony要解散"出彩中國人",示例代碼如下:

//構建解散群組消息對象
var obj = new RL_YTX.DismissGroupBuilder();
obj.setGroupId(“出彩中國人群組id”);
RL_YTX.dismissGroup(obj, function(){
	//解散成功,更新頁面
}, function(obj){
	//解散失敗
});

                    

2、群組中所有成員收到的通知回調方法代碼如下(參考Demo中的IM. EV_noticeReceiveListener) :

//獲取群組id
var groupId = obj.groupId;
//獲取群組名稱
var groupName = obj.groupName;
//獲取操作者id
var peopleId = obj.member;
//獲取操作者名稱
var people = (!!obj.memberName)?obj.memberName:obj.member;
//1,(1申請加入群組,2邀請加入群組,3直接加入群組,4解散群組,5退出群組,6踢出群組,7確認申請加入,8確認邀請結果,10管理員修改群組信息,11用戶修改群組成員名片)
var auditType = obj.auditType;
if(4 == auditType){
//更新頁面
}

                    

? 獲取群組成員 — 示例代碼如下(參考Demo中的IM. EV_getGroupMemberList):

//新建獲取群組成員列表請求對象
var obj = new RL_YTX.GetGroupMemberListBuilder();
//設置群組id
obj.setGroupId(“出彩中國人群組id”);
//該接口為分頁接口,如果要獲取全部數據,設置pageSize為-1
obj.setPageSize(-1);
//發送請求
RL_YTX.getGroupMemberList(obj, function(obj){
//成功獲取數據,更新頁面
}, function(obj){
//獲取數據失敗
});

                    

? 群組搜索 — 可以根據群組名字或者群組ID來搜索群組,討論組不可被搜索,示例代碼如下:

var builder = new RL_YTX.SearchGroupsBuilder(type,key);
	//搜索類型 1群組id精確查找 2 群組名稱模糊搜索
	builder.setType(1);
	builder. setKeywords(“出彩中國人群組id”);
	RL_YTX.searchGroups(builder, function(obj){
  	 	//檢索成功
	},function(obj){
		//檢索失敗
	});

                    

? 群組免打擾 — 群組免打擾功能是指群組收到消息的時候,是否震動手機或振鈴(震動或振鈴是在應用層處理,通過sdk可以設置此狀態并保存在服務端,切換手機時,群組的狀態也可同步)。示例代碼如下(參考DEMO中IM.EV_groupPersonalization):

//新建設置群組個性化設置對象
	var builder = new RL_YTX.SetGroupMessageRuleBuilder();
	//設置群組id
	builder.setGroupId(“出彩中國人群組id”);
	//設置免打擾 1提醒 2免打擾
	builder.setIsNotice(2);
	RL_YTX.setGroupMessageRule(builder,function(){
    //設置免打擾成功
	},function(obj){
    //設置免打擾失敗
	});

                    

? 獲取個人所在的群組 — 用戶登錄后,通常首先調取此接口獲取自己所在群組,此接口會返回群組的id、名稱、免打擾狀態等信息,示例代碼如下(參考Demo中的IM. EV_getGroupList) :

//新建獲取群組列表請求對象
	var obj = new RL_YTX.GetGroupListBuilder();
	//設置獲取群組數量,該接口為分頁接口,如果要獲取全部數據,設置pageSize為-1
	obj.setPageSize(-1);
	obj.setTarget(2); //獲取群組列表。默認為群組列表,如果要獲取討論組列表,該值傳1。
	RL_YTX.getGroupList(obj, function(obj){
	//更新頁面
	}, function(obj){
	//獲取群組列表失敗
	});
	
				

? 群主轉讓功能

/*
 *  轉讓群組 
 * @groupId  群組ID
 * @member   轉讓給的成員
 * @role     角色     1轉讓群主  2 設為管理員   3  取消管理員資格  
 * */
	var roleBuilder = new RL_YTX.SetGroupMemberRoleBuilder();
	roleBuilder.setGroupId(groupId);
	roleBuilder.setMemberId(member);
	roleBuilder.setRole(role);
	RL_YTX.setGroupMemberRole(roleBuilder, function() {
		var trobj = $('#pop').find('tr[contact_you="' + member + '"]');
		var tdobj = trobj.children();
		var spanobj = tdobj.children();
		var deleobj = spanobj[3];
		$(deleobj).remove();
		console.log("修改成員角色成功");
		if (role == 1) {
			IM.HTML_pop_hide();
		} else if (role == 2) {
			$(spanobj).eq(0).children("span").text("[管理員]");
			$(spanobj).eq(2).after(' 取消管理員資格 ');
		} else {
			$(spanobj).eq(0).children("span").text("[成員]");
			$(spanobj).eq(2).after(' 設置為管理員 ');
		}
	}, function(obj) {
		alert("錯誤碼: " + obj.code + "; 錯誤描述:" + obj.msg);
	});


                    

4、離線消息

現在離線消息的拉取都是sdk底層處理的,客戶只要實現接收消息的通知回調即可,示例代碼如下(參考Demo中IM. EV_onMsgReceiveListener):

//判斷是否為群聊信息
var b_isGroupMsg = ('g' == obj.msgReceiver.substr(0,1));
//如果是群聊信息,發送者為msgSender字段,否則為msgReceiver字段
var you_sender = (b_isGroupMsg) ? obj.msgReceiver : obj.msgSender;
//獲取發送者昵稱,如果不存在,使用賬號代替
var you_senderNickName = obj.senderNickName;
var name = obj.msgSender;
if(!!you_senderNickName){
    name = you_senderNickName;
}
var content_type = null;
//獲取消息版本號
var version = obj.version;
//獲取消息發送時間
var time = obj.msgDateCreated;
//獲取消息類型 
//1:文本消息 2:語音消息 3:視頻消息4:圖片消息5:位置消息  6:文件
var msgType = obj.msgType;
if(1 == msgType || 0 == msgType){
  //文本消息,獲取消息內容
var you_msgContent = obj.msgContent;
}else if(2 == msgType){
  //語音消息,獲取語音文件url
var url = obj.msgFileUrl;
}else if(3 == msgType){
  //3:視頻消息,獲取視頻url
  //語音消息,獲取語音文件url
var url = obj.msgFileUrl;
}else if(4 == msgType){
  //圖片消息 獲取圖片url
var url = obj.msgFileUrl;
}else{
  //后續還會支持(地理位置,視頻,以及自定義消息等)
}

                

5、自定義消息

自定義消息通過發送文本消系接口擴展字段來實現,示例代碼如下:

//新建消息體對象
var obj = new RL_YTX.MsgBuilder();
//設置自定義消息id
obj.setId(msgid);
//設置接收者
obj.setReceiver(“john的id”);
obj.setDomain(“用戶自定義消息”);
RL_YTX.sendMsg(obj, function(){
//發送消息成功
//處理用戶邏輯,通知頁面
}, function(obj){//失敗
//發送消息失敗
//處理用戶邏輯,通知頁面刷新,展現重發按鈕
});

                    

6、輔助接口

? 獲取個人信息 — 可以通過接口設置個人信息,包括昵稱、生日、性別,昵稱必須設置,以便在推送消息的時候使用,示例代碼如下(參考Demo中IM.EV_getMyInfo):

RL_YTX.getMyInfo(function(obj){
    //獲取用戶名
if(!!obj&& !!obj.nickName){
        IM._username = obj.nickName;
}
//通知頁面更新
    $('#navbar_login_show').find('a[imtype="navbar_login_show"]').html('您好:'+ IM._username);
}, function(obj){
//獲取數據失敗
});

                    

? 設置個人信息 — 可以通過接口設置個人信息,包括昵稱、生日、性別,昵稱必須設置,以便在推送消息的時候使用,示例代碼如下:

var uploadPersonInfoBuilder = new RL_YTX.UploadPersonInfoBuilder();
uploadPersonInfoBuilder.setNickName(‘張三’);
uploadPersonInfoBuilder.setSex(1);
uploadPersonInfoBuilder.setBirth(‘1990-01-01’);
uploadPersonInfoBuilder.setSign(‘個性簽名’);
RL_YTX.uploadPerfonInfo(uploadPersonInfoBuilder, function(obj){
//設置成功
obj.version;//個人信息版本號
}, function(resp){
    //設置失敗
    alert(resp.code);
});

                    

? 錄音(暫緩提供)

1、準備并開始錄音 — 我們假設John想給smith發語音消息,調用RL_YTX.audio.apply方法,程序就會初始化并開始錄音。示例代碼如下(參考DEMO中IM. DO_startRecorder):

var objTag = {};
var audio = document.getElementById("audio");

//tag屬性表示頁面上一個audio元素的dom引用,用來表示語音
objTag.tag = audio;
//當媒體流準備就緒以后,會觸發onCanPlay回調,觸發該回調以后才會真正開始錄音
var onCanPlay = function(){
};

//準備失敗
var onErr = function(errObj){
   console.log("錯誤碼:"+errObj.code+";錯誤描述:"+errObj.msg);
};
RL_YTX.audio.apply(objTag,onCanPlay,onErr);

                    

2、錄音完成 — 當John調用RL_YTX.audio.apply方法成功之后,就已經開始錄音,當用戶錄音完成以后,可以調用RL_YTX.audio.make方法結束錄音,示例代碼如下(參考DEMO中IM. DO_endRecorder):

var resultObj = RL_YTX.audio.make();
    //錄音成功
if("200" == resultObj.code){
        var blob = resultObj.blob; //音頻的blob對象
   var url = blob.url; //音頻資源url, 供audio標簽展示
        //展示音頻
        //發送消息
var obj = new RL_YTX.MsgBuilder();
//設置音頻信息
obj.setFile(blob);
        ….
}

                    

3、取消錄音 — 當John調用RL_YTX.audio.apply方法成功之后,想取消錄音,可以調用RL_YTX.audio.cancel取消,示例代碼如下(參考DEMO中IM. EV_cancel):

RL_YTX.audio.cancel();
//更新頁面

                    

? 拍照

1、準備拍照 — 我們假設John想調用攝像頭拍張照片發給Smith,在執行拍照之前,需要先調用RL_YTX.photo.apply方法,示例代碼如下(參考DEMO中IM. DO_takePicture):

var objTag = {};
var video = document.getElementById("video");
    //tag屬性表示頁面上一個view元素的dom引用,用來表示視頻圖像
objTag.tag = video;
    //當媒體流準備就緒以后,會觸發onCanPlay回調,觸發該回調以后點擊拍照才會有真實的圖像
var onCanPlay = function(){
};
    //準備失敗
var onErr = function(errObj){
   console.log("錯誤碼:"+errObj.code+";錯誤描述:"+errObj.msg);
};
RL_YTX.photo.apply(objTag,onCanPlay,onErr);

                    

2、拍照 — 當John調用RL_YTX.photo.apply方法成功之后,就可以進行拍照操作了,示例代碼如下(參考DEMO中IM. DO _snapshot):

var resultObj = RL_YTX.photo.make();
    //拍照成功
if("200" == resultObj.code){
   var blob = resultObj.blob; //圖片的blob對象
   var url = blob.url; //圖片資源url, 供img標簽展示
   //展示圖片 
   //發送消息
   var obj = new RL_YTX.MsgBuilder();
   //設置圖片信息
   obj.setFile(blob);
        ….
 }

                    

3、取消拍照 — 當John調用RL_YTX.photo.apply方法成功之后,想取消拍照,可以調用RL_YTX.phtot.cancel取消,示例代碼如下(參考DEMO中IM. _cancelTakePic):

RL_YTX.photo.cancel();
//更新頁面

                    

? 獲取用戶在線狀態

獲取用戶狀態返回的對象由單個對象變為數組對象,并且支持一次性獲取多個。 需增加字段,且獲取用戶狀態的賬號為數組類型傳入,并設置setNewUserstate為true

var getUserStateBuilder = new RL_YTX.GetUserStateBuilder();
getUserStateBuilder.setNewUserstate(true);//使用新SDK的用戶狀態
getUserStateBuilder.setUseracc(“John賬號”);
var onlineState = $(current_contact).find('span[contact_style_type="onlineState"]');
RL_YTX.getUserState(getUserStateBuilder, function(obj) {
//獲取成功
//obj[i].useracc 對方賬號
//obj[i].state 對方在線狀態1:在線2:離線當用戶為離線狀態時,obj.state,obj.network和obj.device為undefined
//obj[i].network對方網絡狀態 1:WIFI 2:4G 3:3G 4:2G(EDGE) 5: INTERNET  6: other
//obj[i].device對方登錄終端1:Android 2:iPhone10:iPad11:Android Pad20:PC 21:H5
	alert("錯誤碼:" + obj[0].state + "; 錯誤描述:獲得用戶狀態結果不合法")
	}
	}, function(obj) {
	if (174006 != obj.code) {
		alert("錯誤碼:" + obj.code + "; 錯誤描述:" + obj.msg)
		}
	});
                    

? 解壓縮附件

當發送來的附件類型為6,即為壓縮文件的時候,可以選擇修改附件名稱來直接下載壓縮格式的附件, 也可以通過RL_YTX.getFileSource來獲取解壓縮過后的附件url

if (6 == msgType) { //壓縮文件  僅支持火狐和谷歌瀏覽器
console.log("6 == msgType   發來的壓縮文件");
RL_YTX.getFileSource(url, function(o) {//
	url = o.url;
	//成功回調函數,可創建a標簽來下載
	}, function(obj) {
		if (obj.code) {
			alert(obj.code)
		} else {
			alert("錯誤碼:" + obj.code + "; 錯誤描述:" + obj.msg)
		}
	})
                    

? 消息撤回

發送撤回消息指令, 此msgid是完整的消息版本號,是sendMsg后返回的msgId,如805588CEEFAB1C55B248DC4ACE7F875A|14 注:目前僅支持一次發送一個消息ID

EV_msgBack: function(msgId, callback) {
	var MsgBackBuilder = new RL_YTX.MsgBackBuilder();
	MsgBackBuilder.setMsgId(msgId);
	RL_YTX.msgBack(MsgBackBuilder, function(e) {
		console.log(e);
		callback(e);
	}, function(e) {
		$.scojs_message(e.code + ' : ' + e.msg, $.scojs_message.TYPE_ERROR);
	})
},
                    

接收者,消息撤回

if(obj.msgType == 25){//消息撤回
	var oms = JSON.parse(obj.msgDomain);
	var id = obj.msgSender+'_'+ oms.dateCreated + '|' +oms.version;
	console.log(id);
	console.log($('[data-id="' + id + '"]'));
	$('[data-id="' + id + '"]').find("pre").html("對方撤回了一條消息");
	return ;
}
                    

? 消息已讀

此msgid是精簡的消息版本號,是EV_onMsgReceiveListener中obj.version或obj.msgId.split("|")[1] 注:目前僅支持一次發送一個消息ID

EV_msgRead : function(msgId, callback) {
	 var msgReadBuilder = new RL_YTX.MsgReadBuilder();
            msgReadBuilder.setVersion(version);
            RL_YTX.msgRead(msgReadBuilder,function () {
                if(callback)callback();
            },function (err) {
                if(e.code === 609028){
                    console.log("not support ");
                }else{
                $.scojs_message(err.code + ' : ' + err.msg, $.scojs_message.TYPE_ERROR);
                }
            })
                    

接收者

if(obj.msgType == 24){//消息已讀
	var oms = JSON.parse(obj.msgDomain);
	var id = null;
	if(!!oms.groupid){//如果存在grouid,則是群組消息的已讀消息,
		id = oms.groupid+'_'+ oms.msgId;
		$('[data-id="' + id + '"]').find(".msgRead").html("已讀");
	}else{//如果沒有grouid,則是普通消息的已讀消息,
		id = obj.msgSender+'_'+ oms.msgId;
		$('[data-id="' + id + '"]').find(".msgRead").html("已讀");
	}
	return ;
}
                   

? 消息置頂

EV_SetTopContact:function (user) {
if(!user)return ;
var setTopContactBuilder = new RL_YTX.SetTopContactBuilder();
setTopContactBuilder.setContact(user.toString());//置頂聯系人的賬號,必須為字符串類型
  setTopContactBuilder.setType(1);//設置置頂為1,取消置頂則傳2,類型為number類型
  RL_YTX.setTopContact(setTopContactBuilder,function (e) {
    console.log(e);
     },function (err) {
    console.log(err);
            });
        },
                    

? 獲取消息置頂列表

EV_GetTopContact:function () {
 RL_YTX.getTopContact(function (e) {
                callback(JSON.parse(e[1]));
            },function (err) {
                console.log(err);
            });
                    

? 播放音頻文件

RL_YTX.getAudioSource(obj.msgFileUrl,function (res) {
//成功回調
var audioUrl = res.url;
})
                    

文檔更新時間:2017年9月12日

主站蜘蛛池模板: 亚洲视频免费在线观看 | h视频在线免费看 | 97在线播放 | 亚洲aⅴ| 免费在线观看av | 日韩欧美中文 | 精品国产91乱码一区二区三区 | 97国产爽爽爽久久久 | 午夜亚洲| 日韩在线视频免费观看 | 亚洲伊人精品酒店 | 国产亚洲精品久久久久久豆腐 | 一区二区精品 | 日韩在线视频观看 | 欧美毛片免费观看 | 久久久涩 | 日韩五月天 | 国产不卡视频 | 精品不卡 | 欧美精品一区久久 | 热久久999 | 久久久久亚洲国产| 精品在线一区 | 亚洲不卡| 黄网站免费在线 | 欧美日韩免费 | 亚洲精品一区二区三区免 | 亚洲一区视频 | www.日日干 | 男女下面一进一出网站 | 日韩免费一区二区 | 中文字幕日韩av | 国产重口老太伦 | 中文区中文字幕免费看 | 久久精品一区二区三区四区 | 精品一二三| 欧美精品91 | 日本成年免费网站 | 亚洲一区二区三区高清 | 性一交一乱一伦视频免费观看 | 亚洲欧洲中文日韩 |