




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
客服IMSDK文档(Android)准备工作将下列Jar包导入到项目中的libs目录中,若第三方jar包与原来项目中有重复,保证项目中有一个即可。上图为第三方jar包,还需导入IM的核心包kfimsdk.jar初始化SDK使用如下代码IMChatManager.getInstance().init(context, userName, userId, imServiceNo, accessId);其中参数说明:Context context, 应用上下文String username, 用户名String userId, 用户idString imServiceNo, 服务号String accessId, 接入号完成之后会与服务器建立tcp的连接,设置SDK初始化的接口监听使用如下代码IMChatManager.getInstance().setOnInitListener(new InitListener() Override public void oninitSuccess() LogUtil.d(MobileApplication, sdk初始化成功); Override public void onInitFailed() LogUtil.d(MobileApplication, sdk初始化失败); );该回调接口只是用来判断SDK是否初始化成功了,只有成功了之后才可以使用IM相关功能。消息实体界面显示时会用到消息的一些属性进行不同的显示,下面将消息中的具体属性展示如下:public class FromToMessage /* * 消息类型:文本 */public static final String MSG_TYPE_TEXT = 0;/* * 消息类型:图片 */public static final String MSG_TYPE_IMAGE = 1;/* * 消息类型:语音 */public static final String MSG_TYPE_AUDIO = 2;/* * 消息的id,数据库中的主键 */public String _id;/* * 消息从哪里来的 */public String from;/* * 消息要通知谁 */public String tonotify;/* * 用来标示对话的两人 */public String sessionId;/* * 消息的类型 */public String msgType;/* * 什么时候发的 */public Long when;/* * 消息文本内容,若是多媒体消息时为URL */public String message;/* * 设备信息 */public String deviceInfo;/* * 未读标记(0为已读,1为未读) */public String unread;/* * 发送成功的状态(true说明成功,false说明失败,sending说明正在发送中) */public String sendState;/* * 多媒体消息本地的文件路径 */public String filePath;/* * 录音的时间 */public Float recordTime;/* 录音的时间,字符串显示*/public String voiceSecond;/* * 是发送者还是接收者,发送者为0,接收者为1 */public String userType;/* * 消息类型 */public String type;public FromToMessage() 拼装一条消息1.文本消息:使用如下代码FromToMessage fromToMessage = IMMessage.createTxtMessage(txt);参数说明:String txt, 消息文本内容2.录音消息: 使用如下代码FromToMessage fromToMessage = IMMessage.createAudioMessage(mTime, filePath);参数说明:float mTime, 录音时长String filePath, 录音在本地的路径3.图片消息: 使用如下代码FromToMessage fromToMessage = IMMessage.createImageMessage(picFileFullName);参数说明:String picFileFullName, 图片在本地的路径拼装好的消息在发送时用到。发送消息使用如下代码:IMChat.getInstance().sendMessage(fromToMessage, new ChatListener() Overridepublic void onSuccess() updateMessage();Overridepublic void onFailed() updateMessage();Overridepublic void onProcess() );参数说明:FromToMessage fromToMessage, 要发送的消息ChatListener ,消息发送的接口监听,发送成功,失败或正在发送,该回调接口中可以直接进行界面的操作。上面代码的updateMessage()方法为更新界面显示的操作,发送的消息存到了本地数据库中,具体可参看提供的demo。重发消息当有时候发送失败后,需重新发送该条消息,代码如下:IMChat.getInstance().reSendMessage(fromToMessage, new ChatListener() Overridepublic void onSuccess() Overridepublic void onFailed() Overridepublic void onProcess() );接收新消息需通过注册广播来获取新消息,首先需要一个全局注册的广播,在AndroidManifest.xml中代码为: 示例代码:public class NewMsgReceiver extends BroadcastReceiver private NotificationManager notificationManager; Override public void onReceive(Context context, Intent intent) notificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); if(intent.getAction().equals(com.moor.im.NEW_MSG) /看应用是否在前台 if(isAppForground(context) context.sendBroadcast(new Intent(com.m7.imkfsdk.msgreceiver); else Notification notification = new Notification(); notification.icon = R.drawable.ic_launcher; notification.defaults = Notification.DEFAULT_LIGHTS|Notification.DEFAULT_SOUND; notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.when = System.currentTimeMillis(); notification.tickerText = 有新消息来了; Intent it = new Intent(context, ChatActivity.class); it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); it.setAction(Intent.ACTION_MAIN); it.addCategory(Intent.CATEGORY_LAUNCHER); PendingIntent contentIntent = PendingIntent.getActivity(context, 1, it, PendingIntent.FLAG_UPDATE_CURRENT); notification.setLatestEventInfo(context, 客服消息, 新消息, contentIntent); notificationManager.notify(1, notification); public boolean isAppForground(Context mContext) ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); List tasks = am.getRunningTasks(1); if (!tasks.isEmpty() ComponentName topActivity = tasks.get(0).topActivity; if (!topActivity.getPackageName().equals(mContext.getPackageName() return false; return true; 这里对应用是否在前台进行了不同处理,如果在前台则发送一个广播通知聊天界面更新界面,若在后台则弹出通知栏通知用户。注意当接收到该广播后,消息已经保存到了本地的数据库中了。具体请查看demo中详细代码。获取数据库中的消息在界面上显示消息就得先从数据库中获得消息,代码如下:List fromToMessages = MessageDao.getInstance().getOneMessage(1);参数中的数字为取第几页的数据,用于下拉加载更多消息时使用,默认是一页15条消息数据。这样就获取到了数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论