<commit_before>[TOC]
#1、简介 [![](http://appcan-download.oss-cn-beijing.aliyuncs.com/%E5%85%AC%E6%B5%8B%2Fgf.png)]()
环信插件
##1.1、 说明
本插件是基于环信API封装的AppCan平台的插件模块,用户可以使用本插件实现基本的即时通讯功能,包括——

* 单聊功能:支持发送语音,图片,表情,文字,位置,附件；
* 群聊功能:支持500人到2000人大群,拥有完善的群组权限管理；
* 实时语音:基于IP网络的点对点实时语音,适应低带宽要求；
* 客服功能(iOS 3.0.22, Android 3.0.23及以上支持):基于新一代移动互联网技术的全媒体智能客户关系中心系统,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)

> **使用前说明:**

本插件为单例插件 ——

* 在任何网页调用本插件,调用的是同一个插件实例;
* 所有的API都是异步方法,不会直接返回值;
* 所有的回调都会传到root页面(config.xml中配置的App起始页面)

**以上内容非常重要**

root页面收到回调后,可以通过uexWindow的相关方法传递到各个网页去,
以下方法是您可能要用到的——

 传递给某个窗口:
 
* uexWindow.evaluateScript;
* uexWindow.evaluatePopoverScript
* uexWindow.evaluateMultiPopoverScript

 传递给某些窗口:
 
* uexWindow.publishChannelNotification
* uexWindow.subscribeChannelNotification

这些方法具体用法在[uexWindow文档](http://newdocx.appcan.cn/newdocx/ejsTemplate?type=1318_1249) 内有描述

当然,也可[下载Demo](http://plugin.appcan.cn/details.html?id=406_index) 参考Demo内的调用。
 
##1.2、 UI展示
暂无
 
##1.3、 开源源码
插件测试用例与自定义插件下载:[点击此处](http://plugin.appcan.cn/details.html?id=406_index)  (插件测试用例与插件源码已经提供)

 
##1.4、 术语表

Path Types  

| 协议头 | Android对应路径 (其中"/sdcard/"等 同于"/storage/emulated/0/") | iOS对应路径 | 
| ----- | ----- | ----- | 
| res:// | widget/wgtRes/ | widget/wgtRes | 
| wgts:// | /storage/emulated/0/widgetone/apps/ xxx(widgetAppId)/ | /Documents/apps/xxx(widgetAppId)/ | 
| wgts:// | /storage/emulated/0/widgetone/widgets/ | /Documents/widgets/ | 
| file:///sdcard/ | /storage/emulated/0/ | 无 | 

## 1.5、平台版本支持

本插件的所有API默认支持**Android4.0+**和**iOS7.0+**操作系统。

有特殊版本要求的API会在文档中额外说明。

## 1.6、接口有效性

本插件所有API默认在插件版本**4.0.0+**可用。

在后续版本中新添加的接口会在文档中额外说明。 

#2、API概述		
##2.1、Initialization
***
>### initEasemob(param,function(data){})  初始化

param为json字符串

```
  var param{
	appKey:,//区别app的标识   
	apnsCertName:,//iOS中推送证书名称(仅iOS)
	isAutoLoginEnabled:,//可选参数 是否开启自动登录功能 1-开启 2-关闭
	isAutoAcceptGroupInvitation:,//可选参数 是否开启用户自动同意群邀请, 1-开启 2-关闭 默认为开启(此参数为3.0.22后新加入)
};
```
data为json字符串 

```
var data = "EaseMobSDK initialized successfully!" 或 "EaseMobSDK has already been initialized!"

```
	注:自动登录功能Android SDK 默认开启,iOS SDK默认关闭。
	
>### login(param,function(data){})   登录

param为json字符串

```
var param = {
	username:,//用户名
	password:,//密码
};

```
data为json对象 

```
var data = {
	result:,//1-成功,2-失败
	msg:,//提示信息
};

```

>###logout(function(data){})   退出登录

data为json对象 

```
var data = {
	result:,//1-登出成功,2-登出失败
	message:,//提示信息
};

```

>###registerUser(param,function(data){})  注册

param为json字符串

```
var param = {
	username:,//用户名
	password:,//密码
};
```
data为json对象 

```
var data = {
	result:,//1-成功,2-失败
	msg:,//提示信息
};

```


>###updateCurrentUserNickname(param)   更新当前用户的昵称

param为json字符串

```
var param = {	
	
	nickname:,
};
```

	注:此方法主要为了在苹果推送时能够推送昵称(nickname)而不是userid,一般可以在登陆成功后从自己服务器获取到个人信息,然后拿到nick更新到环信服务器。并且,在个人信息中如果更改个人的昵称,也要把环信服务器更新下nickname 防止显示差异。

>###getLoginInfo(function(data){}) 获取当前登陆信息(仅iOS可用)

data为json对象

```
 var data ={
 	
	userInfo://当前登陆用户信息
	isLoggedIn://当前是否已有登录用户  1-是 2-否
	isConnected://是否连上聊天服务器   1-是 2-否
	isAutoLoginEnabled://是否自动登录  1-是 2-否
};
```
 



>###onConnected(); 已连接上
>###onDisconnected(param) 链接断开

param为json字符串

```
var param = {
	error:,//1-账号被移除,2-账号其他设备登陆,3-连接不到聊天服务器,4-当前网络不可用 
};
```

##2.2、Message
***
>###onNewMessage(param) 收到新消息监听

	注:param为EMMessage的json格式对象
	EMMessage具体结构见文末附录
	所有离线和在线时接受到的的非透传消息,都通过此回调传递
	   
>###onCmdMessageReceive(param) 透传消息监听

param为json字符串

```
var param = {
	msgId:,
	message:,//EMMessage 对象json格式
	action:,
};
```

>###onAckMessage(param) 消息已读监听

param为json字符串

```
var param = {
	msgId:,//消息ID
	username:,//来源
};
```

>###onDeliveryMessage(param) 消息送达监听

param为json字符串

```
var param = {
	msgId:,//消息ID
	username:,//来源
};
```

>###sendText(param) 发送文本消息及表情

**说明:**
环信移动客服功能,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)
param为json字符串

```
var param = {
	username:,//单聊时聊天人的userid或者群聊时groupid
	chatType:,//0-单聊,1-群聊
	content:,//文本内容
	ext:,//扩展属性(可选参数,String)
	extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
```

>###sendFile(param) 发送文件

**说明:**
环信移动客服功能,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)
param为json字符串

```
var param = {
	username:,//单聊时聊天人的userid或者群聊时groupid
	chatType:,//0-单聊,1-群聊
	filePath:,//文件路径
	displayName:,//对方接收时显示的文件名(仅iOS需要)
	ext:,//扩展属性(可选参数,String)
	extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
```

>###sendPicture(param)//发送图片

**说明:**
环信移动客服功能,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)
param为json字符串

```
var param = {
	username:,//单聊时聊天人的userid或者群聊时groupid
	chatType:,//0-单聊,1-群聊
	filePath:,//图片文件路径
	displayName:,//对方接收时显示的文件名(仅iOS需要)
	ext:,//扩展属性(可选参数,String)
	extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
```

>###sendLocationMsg(param)//发送地理位置信息

**说明:**
环信移动客服功能,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)
param为json字符串

```
var param = {
	username:,//单聊时聊天人的userid或者群聊时groupid
	chatType:,//0-单聊,1-群聊
	locationAddress:,//图片文件路径
	latitude:,
	longitude:,
	ext:,//扩展属性(可选参数,String)
	extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
```

>###sendVoice(param)//发送语音

**说明:**
环信移动客服功能,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)
param为json字符串

```
var param = {
	
	username:,//单聊时聊天人的userid或者群聊时groupid
	chatType:,//0-单聊,1-群聊
	filePath:,//语音文件路径
	length:,//长度(Android必选,iOS可选)
	displayName://对方接收时显示的文件名(仅iOS需要)
	ext:,//扩展属性(可选参数,String)
	extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
```<commit_msg>修改环信文档中的错误<commit_after>[TOC]
#1、简介 [![](http://appcan-download.oss-cn-beijing.aliyuncs.com/%E5%85%AC%E6%B5%8B%2Fgf.png)]()
环信插件
##1.1、 说明
本插件是基于环信API封装的AppCan平台的插件模块,用户可以使用本插件实现基本的即时通讯功能,包括——

* 单聊功能:支持发送语音,图片,表情,文字,位置,附件；
* 群聊功能:支持500人到2000人大群,拥有完善的群组权限管理；
* 实时语音:基于IP网络的点对点实时语音,适应低带宽要求；
* 客服功能(iOS 3.0.22, Android 3.0.23及以上支持):基于新一代移动互联网技术的全媒体智能客户关系中心系统,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)

> **使用前说明:**

本插件为单例插件 ——

* 在任何网页调用本插件,调用的是同一个插件实例;
* 所有的API都是异步方法,不会直接返回值;
* 所有的回调都会传到root页面(config.xml中配置的App起始页面)

**以上内容非常重要**

root页面收到回调后,可以通过uexWindow的相关方法传递到各个网页去,
以下方法是您可能要用到的——

 传递给某个窗口:
 
* uexWindow.evaluateScript;
* uexWindow.evaluatePopoverScript
* uexWindow.evaluateMultiPopoverScript

 传递给某些窗口:
 
* uexWindow.publishChannelNotification
* uexWindow.subscribeChannelNotification

这些方法具体用法在[uexWindow文档](http://newdocx.appcan.cn/newdocx/ejsTemplate?type=1318_1249) 内有描述

当然,也可[下载Demo](http://plugin.appcan.cn/details.html?id=406_index) 参考Demo内的调用。
 
##1.2、 UI展示
暂无
 
##1.3、 开源源码
插件测试用例与自定义插件下载:[点击此处](http://plugin.appcan.cn/details.html?id=406_index)  (插件测试用例与插件源码已经提供)

 
##1.4、 术语表

Path Types  

| 协议头 | Android对应路径 (其中"/sdcard/"等 同于"/storage/emulated/0/") | iOS对应路径 | 
| ----- | ----- | ----- | 
| res:// | widget/wgtRes/ | widget/wgtRes | 
| wgts:// | /storage/emulated/0/widgetone/apps/ xxx(widgetAppId)/ | /Documents/apps/xxx(widgetAppId)/ | 
| wgts:// | /storage/emulated/0/widgetone/widgets/ | /Documents/widgets/ | 
| file:///sdcard/ | /storage/emulated/0/ | 无 | 

## 1.5、平台版本支持

本插件的所有API默认支持**Android4.0+**和**iOS7.0+**操作系统。

有特殊版本要求的API会在文档中额外说明。

## 1.6、接口有效性

本插件所有API默认在插件版本**4.0.0+**可用。

在后续版本中新添加的接口会在文档中额外说明。 

#2、API概述		
##2.1、Initialization
***
>### initEasemob(param,function(data){})  初始化

param为json字符串

```
  var param{
	appKey:,//区别app的标识   
	apnsCertName:,//iOS中推送证书名称(仅iOS)
	isAutoLoginEnabled:,//可选参数 是否开启自动登录功能 1-开启 2-关闭
	isAutoAcceptGroupInvitation:,//可选参数 是否开启用户自动同意群邀请, 1-开启 2-关闭 默认为开启(此参数为3.0.22后新加入)
};
```
data为json字符串 

```
var data = "EaseMobSDK initialized successfully!" 或 "EaseMobSDK has already been initialized!"

```
	注:自动登录功能Android SDK 默认开启,iOS SDK默认关闭。
	
>### login(param,function(data){})   登录

param为json字符串

```
var param = {
	username:,//用户名
	password:,//密码
};

```
data为json对象 

```
var data = {
	result:,//1-成功,2-失败
	msg:,//提示信息
};

```

>###logout(function(data){})   退出登录

data为json对象 

```
var data = {
	result:,//1-登出成功,2-登出失败
	message:,//提示信息
};

```

>###registerUser(param,function(data){})  注册

param为json字符串

```
var param = {
	username:,//用户名
	password:,//密码
};
```
data为json对象 

```
var data = {
	result:,//1-成功,2-失败
	msg:,//提示信息
};

```


>###updateCurrentUserNickname(param)   更新当前用户的昵称

param为json字符串

```
var param = {	
	
	nickname:,
};
```

	注:此方法主要为了在苹果推送时能够推送昵称(nickname)而不是userid,一般可以在登陆成功后从自己服务器获取到个人信息,然后拿到nick更新到环信服务器。并且,在个人信息中如果更改个人的昵称,也要把环信服务器更新下nickname 防止显示差异。

>###getLoginInfo(function(data){}) 获取当前登陆信息(仅iOS可用)

data为json对象

```
 var data ={
 	
	userInfo://当前登陆用户信息
	isLoggedIn://当前是否已有登录用户  1-是 2-否
	isConnected://是否连上聊天服务器   1-是 2-否
	isAutoLoginEnabled://是否自动登录  1-是 2-否
};
```
 



>###onConnected(); 已连接上
>###onDisconnected(param) 链接断开

param为json字符串

```
var param = {
	error:,//1-账号被移除,2-账号其他设备登陆,3-连接不到聊天服务器,4-当前网络不可用 
};
```

##2.2、Message
***
>###onNewMessage(param) 收到新消息监听

	注:param为EMMessage的json格式对象
	EMMessage具体结构见文末附录
	所有离线和在线时接受到的的非透传消息,都通过此回调传递
	   
>###onCmdMessageReceive(param) 透传消息监听

param为json字符串

```
var param = {
	msgId:,
	message:,//EMMessage 对象json格式
	action:,
};
```

>###onAckMessage(param) 消息已读监听

param为json字符串

```
var param = {
	msgId:,//消息ID
	username:,//来源
};
```

>###onDeliveryMessage(param) 消息送达监听

param为json字符串

```
var param = {
	msgId:,//消息ID
	username:,//来源
};
```

>###sendText(param) 发送文本消息及表情

**说明:**
环信移动客服功能,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)
param为json字符串

```
var param = {
	username:,//单聊时聊天人的userid或者群聊时groupid
	chatType:,//0-单聊,1-群聊
	content:,//文本内容
	ext:,//扩展属性(可选参数,String)
	extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
```

>###sendFile(param) 发送文件

**说明:**
环信移动客服功能,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)
param为json字符串

```
var param = {
	username:,//单聊时聊天人的userid或者群聊时groupid
	chatType:,//0-单聊,1-群聊
	filePath:,//文件路径
	displayName:,//对方接收时显示的文件名(仅iOS需要)
	ext:,//扩展属性(可选参数,String)
	extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
```

>###sendPicture(param)//发送图片

**说明:**
环信移动客服功能,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)
param为json字符串

```
var param = {
	username:,//单聊时聊天人的userid或者群聊时groupid
	chatType:,//0-单聊,1-群聊
	filePath:,//图片文件路径
	displayName:,//对方接收时显示的文件名(仅iOS需要)
	ext:,//扩展属性(可选参数,String)
	extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
```

>###sendLocationMsg(param)//发送地理位置信息

**说明:**
环信移动客服功能,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)
param为json字符串

```
var param = {
	username:,//单聊时聊天人的userid或者群聊时groupid
	chatType:,//0-单聊,1-群聊
	locationAddress:,//地理位置信息
	latitude:,
	longitude:,
	ext:,//扩展属性(可选参数,String)
	extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
```

>###sendVoice(param)//发送语音

**说明:**
环信移动客服功能,详情见[环信移动客服文档](http://docs.easemob.com/cs/300visitoraccess/10nativeapp)
param为json字符串

```
var param = {
	
	username:,//单聊时聊天人的userid或者群聊时groupid
	chatType:,//0-单聊,1-群聊
	filePath:,//语音文件路径
	length:,//长度(Android必选,iOS可选)
	displayName://对方接收时显示的文件名(仅iOS需要)
	ext:,//扩展属性(可选参数,String)
	extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
```
{'fraction_non_alphanumeric': 0.18919154120616136, 'fraction_numerical': 0.029414324253763814, 'mean_word_length': 5.181818181818182, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 39, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5916981', 'n_tokens_mistral': 7090, 'n_tokens_neox': 7755, 'n_words': 554}