帮助列表 |
下载TIS-Android版对应的SDK aar或jar包 同时注册获取TIS服务所需的accessId 和 accessKey用于Android开发 accessId ="" accessKey = "" 导入aar或jar包最为lib库文件到您所需要的Android工程中
TISApi使用说明: 初始化TISApi: 1.TISApi api = new TISApi() //创建TISApi服务对象 2.api.InitTIS(Context context, String accessId, String accessKey, String sInstanceId) //初始化TIS服务 //context actvity或application的上下文; //ccessId:RSA加密的accessId, //accessKey: RSA加密的accessKey, //sInstanceId: 用户的实例ID 3.api.RegisterTISCallback(TISCallback callback) //注册TIS服务的回调 //可选设置接口 1).public void SetUseName(String name) //设置用户昵称 2).public void SetUserClientId(String clientId) //设置用户的clientId GUID 3).public void SetUserImage(String imageUrl) //设置用户头像 4).public void SetClientId(String sClientId) //设置用户clientId 唯一标识符 //发送消息接口 public void SendMessage(String userId,long timestamp,int version,String to,String text,String extension,String extra) //参数说明: //useId :用户的实例ID 必填 //timestamp: 消息发送时间戳 必填 //version: 版本号 默认1 必填 //to:接收者的clientId ""代表向所有人发送 目前只支持向所有人发送 必填 //text:消息内容 必填 //extension:额外内容 可选 //extra:只对html开发有用 用于javascript回调函数表 原生开发设为空
public interface TISCallback { void OnGroupMessage(int TAG,String message,String extra); //分组操作回调(功能还未对用户开放) void OnMSGMessage(int TAG,String message,String extra); //消息操作回调 //消息回调格式: content: { "instId": "72a8c28552fa1619c643eab674f3462d", "time": 1453183724160, "content": "{\"cmd\":\"tismsg\",\"v\":1,\"from\":\"tis- 2f71c00f41339ec9ac269e347989ab65\",\"name\":\"%E5%8C%BF%E5%90%8D\",\"to\":\"\",\"body\":\"123\",\"image\":\"https://cdn.aodianyun.com/tis/ui/default/img/anonymous.png\",\"time\":1454297312,\"extra\":null}" } 注意:content必须是以上那样的格式,每个字段的解释如下: { "cmd":"tismsg", //命令,固定为: tismsg "v":1, //版本号 "from":"tis-2f71c00f41339ec9ac269e347989ab65", //发送者的clientId "name":decodeURL("匿名"), //发送者名称,需要经过decodeURL "to":"", //发送目标的clientId,""表示发送给所有人,目前只支持发送给所有人。 "body":decodeURL("1"), //发送的内容,需要经过decodeURL "image":"https://cdn.aodianyun.com/tis/ui/default/img/anonymous.png", //发送者头像 "time":1453168978, //发送时间 "extra":null //额外数据,如果有也需要经过decodeURL } void OnFaceMessage(int TAG,String message,String extra); //表情操作回调(功能还未对用户开放) void OnServiceMessage(int TAG,String message,String extra); //消息推送服务回调 } //说明: TAG 表示回调的标记; message 回调结果的具体信息;extra 回调的额外内容,目前用于javascript页面回调 TAG 标记说明: 1. TISApi.GET_HISTORY_MESSAGE_RESULT: 获取历史消息的结果 2. TISApi.GET_HISTORY_MESSAGE_ERROR: 获取历史消息失败 3. TISApi.ADD_MESSAGE_RESULT: 发送消息成功 4. TISApi.ADD_MESSAGE_ERROR: 发送消息失败 5. TISApi.SERVICE_MESSAGE_ARRIVED:获得消息推送 6. TISApi.SERVICE_CONN_LOST: 消息推送服务连接丢失 7. TISApi.SERVICE_CONN_SUCCESS: 消息推送服务连接成功 8. TISApi.SERVICE_CONN_FAILURE: 消息推送服务连接失败 9. TISApi.SERVICE_SUBSCRIBE_SUCCESS: 消息推送订阅成功 10. TISApi.SERVICE_SUBSCRIBE_FAILURE: 消息推送订阅失败
SDK下载链接:
1.TISWebView 继承自WebView 以使用html功能 2.TISWebView 使用: public void Init(TisApi api) //引入 TISApi TISWebView.getSettings().setJavaScriptEnabled(true) //允许js 进行本地代码调用 TISWebView.setWebContentsDebuggingEnabled(true) //允许 chrome浏览器和android App进行联调 (此功能只在Android 4.4及以上版本才起作用) public void RegisterJSFunction() //java代码注入至js { this.addJavascriptInterface(Object obj, String name) } 3.回调至javascript protected void JSGetHistory(String key,String message){} //获取历史消息返回给javascript protected void JSOnMessageArrived(String message){} //将推送获取的消息返回至javascript protected void JSSendMessage(String key,String message){} //将发送消息的结果返回至javascript
// var Callback_Map{} //函数回调表 Callback_Map 关键字 key 的生成: var key = new Date().getTime() + "_" + Math.floor(Math.random() *(1000 +1)) function API(){} //javascript API对象 var opt_ //全局变量 保存API function InitService() //初始化TISApi服务 //Javascript端的API函数 API.prototype.getHistoty = function(option){ //javascript获取历史消息 ... } API.prototype.SendMessage = function(option){ //javascript发送消息 ... } //Java回调到Javascript的函数 window.__onHistoryArrived = function(key,message){ //历史消息回调 ... } window.__onSendMessage = function(key,message){ //发送消息结果回调 ... } window.__onMessageArrived = function(message){ //Java端推送过来的消息 ... } 以test.html中的 SendMessageTest为例: //这个功能为Javascript发送消息代码 function SendMessageTest(sInstId_,time_,content_){ if(!opt_.api){ console.log("SendMessageTest api failure") return } opt_.api.SendMessage({ sInstId:sInstId_, // time:time_, // content:content_, // success:function(data){ //发送成功的回调函数 console.log("SendMessageTest:success" + data); if(data.FlagString){ console.log(data.FlagString); } if(data.Flag){ console.log(data.Flag); } }, failure:function(info){ //发送失败后的回调函数 console.log("SendMessageTest:failure" + data); } }); } 这种方式便能获得java端回调返回的结果
step1 TISApi api = new TISApi() //创建TISApi服务对象 step2 api.InitTIS(Context context, String accessId, String accessKey, String sInstanceId) //初始化TIS服务 step3 api.RegisterTISCallback(TISCallback callback) //注册TIS服务的回调 step4: LoadHistory() //加载历史消息 step5: InitWidget() //初始化聊天组件和显示消息组件 step6: initMessageInputToolBox() //注册聊天组件消息监听
private ListView mListView //用于展现TIS消息内容(默认的风格是类似微信的聊天记录风格) private ChatKeyborad box //TIS聊天编辑及控制组件(包含默认表情包及用户自定义本地表情包和其他拓展功能) private ListmData //TIS消息数据列表 private void initMessageInputToolBox() //初始化聊天组件的内容并添加事件监听
ChatAdapter为展现TIS消息内容的适配器 1.默认的展示风格类似于微信聊天的表现风格,用户本人发送的消息显示在屏幕右侧; 2.他人发送的消息则展示在左侧. 3.支持显示时间 用户头像及消息发送成功/失败/正在发送三种状态的显示. 4.支持类似微信的泡泡表情 泡泡表情的显示及背景由用户自定义.
ChatKeyboard 包含四个控件 1.EditText mEditMsg //聊天内容编辑 2.Button mBtFace //表情按钮 3.Button mBtMore //更多按钮 4.Button mbtSend //发送消息按钮 DEMO中未展示 mBtMore 的功能 可由用户自行添加 public void setFaceData(Listfacedata) facedata中存放代表表情包的图片路径;代表表情包图片的格式支持 .png,.jpg,.jpeg 表情包默认的folder文件夹名称为FACE_FOLDER_PATH 亦可由用户自定义 图片获取存储由用户自己实现
public interface OnOperationListener{ void send(String content); // nbtnSend发起了发送消息的动作 void selectedFace(Faceicon content) ;//选择了自定义表情 void selectedEmoji(Emojicon emoji); //选择了默认表情图标 void selectedBackSpace(Emojicon back) ;//选择了后退的表情 void selectedFunction(int index);//执行动作 }
layout_chat_box.xml //ChatKeyboard的布局文件 layout_frag_face.xml //表情的fragment布局文件 chat_item_emoji.xml //emoji表情单元布局文件 chat_item_face.xml //face表情的单元布局文件 chat_item_list_left //位于左侧的消息记录 chat_item_list_right //位于右侧的消息记录 chat_item_menu //更多功能对应的菜单布局文件
TIS聊天服务默认的表情包的路径在 UrlUtils中 TIS_DEFAULT_FACE_ROUTE,用户可根据自身的需求使用 public static void setTISFaceRoute(final String route) 来进行设置 支持的文件格式亦可由用户自定义设置 通过调用函数 public static void setTISImageSuffix(final String suffx)进行设置 Demo工程下载链接:
注意:Android端manifest清单文件需要添加 <service android:name="org.eclipse.paho.android.service.MqttService">