300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 阿里云旺自定义消息和首次打开聊天界面自动发送消息的实现

阿里云旺自定义消息和首次打开聊天界面自动发送消息的实现

时间:2018-09-16 04:37:45

相关推荐

阿里云旺自定义消息和首次打开聊天界面自动发送消息的实现

自定义消息需要继承IMChattingPageOperateion

/*** Created by great小海海 on /8/23.* 自定义消息,目前有两种商品和订单*/public class ChattingOperationCustom extends IMChattingPageOperateion{private DisplayImageOptions options;//自定义消息view的种类数private final int typeCount = 2;/** 自定义viewType,viewType的值必须从0开始,然后依次+1递增,且viewType的个数必须等于typeCount,切记切记!!!***///private final int type_0 = 0;//private final int type_1 = 1;public static String goodsJson;public ChattingOperationCustom(Pointcut pointcut) {super(pointcut);}public static void getMessage(String goods_name,String goods_id,String goods_price,String goods_image,String goods_url){JSONObject object = new JSONObject();try {// object.put("customizeMessageType");object.put("kbn","1");object.put("goods_name",goods_name);object.put("goods_price", goods_price+"Ks");object.put("goods_id",goods_id);object.put("goods_image",goods_image);object.put("goods_url",goods_url);} catch (JSONException e) {}goodsJson=object.toString();}/*** 自定义消息view的种类数* @return 自定义消息view的种类数*/@Overridepublic int getCustomViewTypeCount() {return typeCount;}/*** 自定义消息view的类型,开发者可以根据自己的需求定制多种自定义消息view,这里需要根据消息返回view的类型* @param message 需要自定义显示的消息* @return 自定义消息view的类型*/@Overridepublic int getCustomViewType(YWMessage message) {//根据消息的类型是单聊,群聊还是其他的类型,本次只涉及单聊ImCustomBean imCustomBean= null;if (message.getSubType() == YWMessage.SUB_MSG_TYPE.IM_P2P_CUS){String msgType = null;try {String content = message.getMessageBody().getContent();Gson gson = new Gson();imCustomBean = gson.fromJson(content, ImCustomBean.class);} catch (Exception e) {}Log.e("IM", "getCustomViewTypeJson: "+message.getMessageBody().getContent() );Log.e("IM", "getCustomViewType: "+imCustomBean.getKbn());if (imCustomBean.getKbn().toString().equals("0")){return type_1;}else {return type_0;}}return super.getCustomViewType(message);}/*** 根据viewType获取自定义view* @param fragment聊天窗口fragment* @param message 当前需要自定义view的消息* @param convertView 自定义view* @param viewType自定义view的类型* @param headLoadHelper 头像加载管理器,用户可以调用该对象的方法加载头像* @return 自定义view*/@Overridepublic View getCustomView(Fragment fragment, YWMessage message, View convertView, int viewType, YWContactHeadLoadHelper headLoadHelper) {YWLog.i("YunWang", "getCustomView, type = " + viewType);if (viewType == type_0) { //商品详情ViewHolder0 holder = null;if (convertView == null) {//商品详情布局holder = new ViewHolder0();convertView = View.inflate(fragment.getActivity(), R.layout.de_item_shop_message_mix, null);holder.itemTitleMix = (TextView) convertView.findViewById(R.id.item_title_mix);holder.itemSubtitleMix = (TextView) convertView.findViewById(R.id.item_subtitle_mix);holder.itemImage = ((ImageView) convertView.findViewById(R.id.item_image));holder.goodsDetail = ((LinearLayout) convertView.findViewById(R.id.goods_detail));convertView.setTag(holder);YWLog.i("YunWang", "getCustomView, convertView == null");} else {holder = (ViewHolder0) convertView.getTag();YWLog.i("YunWang", "getCustomView, convertView != null");}String content = message.getMessageBody().getContent();Gson gson = new Gson();ImCustomBean imCustomBean = gson.fromJson(content, ImCustomBean.class);holder.itemTitleMix.setText(imCustomBean.getGoods_name());holder.itemSubtitleMix.setText(imCustomBean.getGoods_price());setImageView(imCustomBean.getGoods_image(),holder.itemImage);return convertView;} else if (viewType == type_1) {//订单详情布局ViewHolder1 holder = null;if (convertView == null){holder = new ViewHolder1();convertView = View.inflate(fragment.getActivity(), R.layout.de_item_shop_message, null);holder.itemTitle = ((TextView) convertView.findViewById(R.id.item_title));holder.itemSubtitle = ((TextView) convertView.findViewById(R.id.item_subtitle));holder.orderFlag = (RelativeLayout) convertView.findViewById(R.id.order_flag);convertView.setTag(holder);}else {holder = ((ViewHolder1) convertView.getTag());}String content = message.getMessageBody().getContent();Gson gson = new Gson();ImCustomBean imCustomBean = gson.fromJson(content, ImCustomBean.class);holder.itemTitle.setText(imCustomBean.getTitle());holder.itemSubtitle.setText(imCustomBean.getSubtitle());return convertView;}return super.getCustomView(fragment, message, convertView, viewType, headLoadHelper);}public void setImageView(String url, ImageView imageView){options = new DisplayImageOptions.Builder().cacheInMemory(true) // 启用内存缓存.cacheOnDisk(true) // 启用外存缓存.considerExifParams(true) // 启用EXIF和JPEG图像格式.displayer(new SimpleBitmapDisplayer()) // 设置显示风格这里是圆角矩形.showImageOnLoading(R.drawable.mrpic).showImageForEmptyUri(R.drawable.mrpic).showImageOnFail(R.drawable.mrpic).build();ImageLoader.getInstance().displayImage(url, imageView, options);}//商品详情public class ViewHolder0 {LinearLayout goodsDetail;TextView itemTitleMix,itemSubtitleMix;ImageView itemImage;}//订单public class ViewHolder1 {TextView itemTitle;TextView itemSubtitle;RelativeLayout orderFlag;}@Overridepublic boolean onMessageClick(Fragment fragment, YWMessage message) {//自定义消息的点击事件(单聊和群聊的)if (message.getSubType() == YWMessage.SUB_MSG_TYPE.IM_P2P_CUS || message.getSubType() == YWMessage.SUB_MSG_TYPE.IM_TRIBE_CUS){try {String content = message.getMessageBody().getContent();Log.e("onclick", "onMessageClick: "+content );Gson gson = new Gson();ImCustomBean imCustomBean = gson.fromJson(content, ImCustomBean.class);if (!TextUtils.isEmpty(imCustomBean.getUrl())){String url = imCustomBean.getUrl();skipToActivity(fragment, url);}if (!TextUtils.isEmpty(imCustomBean.getGoods_url())){String url = imCustomBean.getGoods_url();skipToActivity(fragment, url);}} catch (Exception e) {}return true;}return super.onMessageClick(fragment, message);}private void skipToActivity(Fragment fragment, String url) {Intent intent = new Intent(fragment.getActivity(), GoodsInfoActivity.class);intent.putExtra("url",url);fragment.getActivity().startActivity(intent);}/**/*** 当打开聊天窗口时,自动发送该消息给对方* @param fragment聊天窗口fragment* @param conversation 当前会话* @param isConversationFirstCreated 是否是首次创建会话* @return 自动发送的消息(注意,内容empty则不自动发送)*/@Overridepublic YWMessage ywMessageToSendWhenOpenChatting(Fragment fragment, YWConversation conversation, boolean isConversationFirstCreated) {if (isConversationFirstCreated && !TextUtils.isEmpty(goodsJson)){YWCustomMessageBody messageBody = new YWCustomMessageBody();messageBody.setContent(goodsJson); // 用户要发送的自定义消息,SDK不关心具体的格式,比如用户可以发送JSON格式messageBody.setSummary("goods detail"); // 可以理解为消息的标题,用于显示会话列表和消息通知栏YWMessage message = YWMessageChannel.createCustomMessage(messageBody);return message;}else {return null;}}}

针对需要首次打开聊天窗口自动发送消息:

ChattingOperationCustom.getMessage(mGoodsTitle,mGoodsID,mGoodsPrice,mGoodsImage,mGoodsUrl);Intent intent = LoginHelper.getsInstance().getIMKit().getChattingActivityIntent(userid);startActivity(intent);

当然还需要一些逻辑上的判定,根据需求自定

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。