<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
一、文档说明
基于网易云信的IM,接入云叮当红包SDK实现App快速集成发单聊红包、发群聊红包、拆红包并查看交易记录等功能.
在阅读下面内容之前我们假设你有一定的android开发能力并且你的项目中已经接入过网易云信IM和云叮当红包.或者完全当做教程。
二、集成流程详解
-
在app的
application
类中初始化网易云信,UIkit,云叮当红包public class MyApplication extends Application { public void onCreate() { super.onCreate(); // ... your codes NIMClient.init(this, null, null); // ... your codes if (inMainProcess()) { // 初始化UIKit模块 initUIKit(); NIMClient.getService(MsgService.class).registerCustomAttachmentParser(new CustomAttachParser()); NimUIKit.registerMsgItemViewHolder(fghGuessAttachment.class,fghSessionHelper.class); } //初始化云叮当红包模块 RedPacket.initReaPacket(this, new AppSecretCallBack(), new UseOrderInfoLinster()); //打开云叮当红包日志 RedPacketLog.DEBUG = true; } }
-
用户登陆时载入用户信息
RedPacket.initReaPacket(String account, String nickName, String serialNumber);
-
新建一个
PacketAction
对象public class PacketAction extends BaseAction { public PacketAction() { //图标和名称对应的ID super(R.drawable.redpacket, R.string.input_panel_redpacket); } @Override public void onClick() { //点击事件,调用发红包页面(当然,你也可以在其他地方调用起发红包界面) RedPacket.sendPacket(Context context, 1, String receivedUID, String ); } }
-
在
MessageFragment
类里面添加PacketAction
// 操作面板集合 protected List<BaseAction> getActionList() { List<BaseAction> actions = new ArrayList<>(); //...... actions.add(new PacketAction()); if (customization != null && customization.actions != null) { actions.addAll(customization.actions); } return actions; }
这时,你就能在操作面板中看到发红包的入口了
接下来,我们要自定义网易云信的消息
-
定义一个红包消息的类型
public interface CustomAttachmentType { // 多端统一 int Guess = 1; int SnapChat = 2; int Sticker = 3; int RTS = 4; int SHARE = 5;//自定义 }
-
定义一个红包消息的基类
public abstract class CustomAttachment implements MsgAttachment { protected int type; CustomAttachment(int type) { this.type = type; } public void fromJson(JSONObject data) { if (data != null) { parseData(data); } } @Override public String toJson(boolean send) { return CustomAttachParser.packData(type, packData()); } public int getType() { return type; } protected abstract void parseData(JSONObject data); protected abstract JSONObject packData(); }
-
继承这个基类,解析消息
public class PacketAttachment extends CustomAttachment { private String packetID; private String packetType; protected int type; public PacketAttachment() { super(CustomAttachmentType.SHARE); } public PacketAttachment(String str) { this(); } @Override protected void parseData(JSONObject data) { packetID = data.getString("packetID"); packetType = data.getString("packetType"); } @Override public JSONObject packData() { JSONObject data = new JSONObject(); data.put("packetID",packetID); data.put("packetType",packetType); return data; } public String getPacketType() { return packetType; } public void setPacketType(String packetType) { this.packetType = packetType; } public String getPacketID() { return packetID; } public void setPacketID(String packetID) { this.packetID = packetID; } }
-
实现红包消息的解析器
// 在Application初始化中注册自定义消息附件解析器 NIMClient.getService(MsgService.class).registerCustomAttachmentParser(new CustomAttachParser()); public class CustomAttachParser implements MsgAttachmentParser { private static final String KEY_TYPE = "type"; private static final String KEY_DATA = "data"; @Override public MsgAttachment parse(String json) { CustomAttachment attachment = null; try { JSONObject object = JSON.parseObject(json); int type = object.getInteger(KEY_TYPE); JSONObject data = object.getJSONObject(KEY_DATA); switch (type) { case CustomAttachmentType.Guess: attachment = new PacketAttachment(); break; default: attachment = new DefaultCustomAttachment(); break; } if (attachment != null) { attachment.fromJson(data); } } catch (Exception e) { } return attachment; } public static String packData(int type, JSONObject data) { JSONObject object = new JSONObject(); object.put(KEY_TYPE, type); if (data != null) { object.put(KEY_DATA, data); } return object.toJSONString(); } }
-
将自定义消息展示UI上
public class PacketSessionHelper extends MsgViewHolderBase{ private PacketAttachment attachment; @Override protected int getContentResId() { return R.layout.abcdefg; } @Override protected void inflateContentView() { //你的代码 } @Override protected void bindContentView() { //你的代码 } //若是要自己修改气泡背景 // 当是发送出去的消息时,内容区域背景的drawable id @Override protected int rightBackground() { return com.netease.nim.uikit.R.drawable.nim_message_item_right_selector; } }
-
发送红包消息
在
activity
中重写onActivityResult
方法@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case 1: switch (resultCode) { case 1: PacketAttachment attachment = new PacketAttachment(); IMMessage message; if (getContainer() != null && getContainer().sessionType == SessionTypeEnum.ChatRoom) { message = ChatRoomMessageBuilder.createChatRoomCustomMessage(getAccount(), attachment); } else { message = MessageBuilder.createCustomMessage(getAccount(), getSessionType(), attachment); } sendMessage(message); break; default: break; } break; default: break; } super.onActivityResult(requestCode, resultCode, data); }
-
在app的
application
类中注册消息解析器和服务NIMClient.getService(MsgService.class).registerCustomAttachmentParser(new CustomAttachParser()); NimUIKit.registerMsgItemViewHolder(PacketAttachment.class,PacketSessionHelper.class);
-
在
PacketSessionHelper
中重写onItemClick
方法,实现开红包功能// 内容区域点击事件响应处理。 @Override protected void onItemClick() { RedPacket.openPacket(FragmentActivity activity, String platRpNo, @Nullable String outReceiveNo, @Nullable String outGroupId, new RedPacketCallBack callBack()){ //代码省略 }; }
欢迎交流~
邮箱:dingdangcloug@huanwu.tech
官网:http://yundingdang.com/official/index.html#/
相关推荐
适用于thinkphp的网易云信的接口
2. **接入代码**:将Demo中的代码整合到你的项目中,根据需求修改参数和逻辑。 3. **安全考虑**:务必妥善保管AppKey和AppSecret,避免泄露,影响账号安全。 4. **性能优化**:在实际部署时,要考虑并发处理、数据...
【网易云信Im即时通信服务端】是一款专为开发者设计的即时通讯服务,它提供了丰富的API接口和SDK,便于开发者快速构建聊天、群组管理等社交功能。在服务端实现中,开发者通常需要关注以下几个核心知识点: 1. **API...
接下来,我们要集成网易云信的SDK到我们的项目中。SDK提供了iOS、Android、Web以及各种后端平台的支持。以Android为例,我们需要将SDK的aar文件添加到项目的依赖库中,并确保在AndroidManifest.xml中添加必要的权限...
【网易云信接口开发 (php SDK) 带示例文件】是针对网易云信通信服务的PHP开发工具包,它允许开发者通过简单的代码调用来实现各种通讯功能,如发送消息、管理用户、处理会话等。这个SDK包含了必要的类库和示例代码,...
"react-网易云信ReactNative组件"显然与使用React Native进行开发相关,特别是涉及到了网易云信的集成。网易云信是网易公司提供的一种即时通讯服务,它为开发者提供了丰富的API和SDK,以便在自己的应用中实现聊天、...
【Android-网易云IMFlutter集成】是将网易云信的即时通讯(IM)功能整合到Flutter应用中的过程。Flutter作为Google推出的一种跨平台UI框架,允许开发者使用单一代码库为iOS和Android构建高性能的应用。而网易云信则...
总的来说,集成网易云信IM并实现单聊和群聊功能,需要对Android开发有深入理解,同时也需要熟悉网易云信IM的API和工作流程。通过以上步骤,开发者可以为自己的Android应用构建出稳定、高效的即时通讯功能。
本项目是基于Java的网易云信SDK仿微信聊天功能设计源码,包含556个文件,其中包括178个PNG图像文件、164个XML配置文件、154个Java源文件、37个GIF图像文件、4个JAR文件、3个Gradle文件、3个JPG图像文件、2个...
【网易云信官方PHP API】是网易公司为其通信与视频云服务——云信提供的开发者工具,主要用于帮助开发者快速集成和实现各种通信功能,如聊天、音视频通话等。这个API包含丰富的示例代码(demo),使得开发过程更为...
React Native Chat Demo是基于网易云信(NetEase YunXin)即时通讯(IM)功能构建的一个示例项目,主要用于展示如何在React Native框架下实现一个聊天应用。React Native是Facebook开发的一种开源JavaScript框架,它...
在PHP开发环境中,网易云信提供了服务端的SDK,使得PHP开发者能够快速接入其IM服务。本文将深入探讨“网易云信IM php服务端demo”的相关知识点。 【描述】:“网易云信IM php开发接口 demo是从别的网站下载的,自己...
NIM Duilib 包含了一整套桌面软件的开发部件,与其说这是一个界面库,不如说它是一个开发框架。从原有 Duilib 基础上拓展了一些新的能力,并整合了 Google base 基础类库(线程、内存、闭包等)。...
《网易云信iOS UI组件源码解析》 网易云信,作为国内知名的企业级通讯服务提供商,为开发者提供了丰富的SDK和API,以便于快速构建稳定、高效的消息通信系统。其中,"网易云信iOS UI组件源码仓库"是其开源项目之一,...
在本示例中,我们将深入探讨如何利用网易云信的小程序音视频NRTC SDK来构建JavaScript开发的微信小程序。网易云信NRTC(NetEase Real-Time Communication)SDK是一款强大的实时通信解决方案,它专为微信小程序提供了...
《Swift与网易云信iOS UI组件深度解析》 在移动应用开发中,用户界面(UI)的设计与实现至关重要,它直接影响到用户体验和应用的整体质量。针对iOS平台,Swift语言以其强大的功能和简洁的语法,成为了开发者首选的...
在这个场景中,我们关注的是如何将网易云信的官方Demo中的IM(即时通讯)和音视频功能进行拆分和重用,以便在其他项目中快速集成这些功能。 网易云信是一家提供通讯云服务的平台,其SDK包含了丰富的功能,如文本...
网易云即时聊天eclipse版的源码。Eclipse导入项目后,同样必须首先导入uikit,再导入demo,但官网暂时只提供Android Studio的源码例子,需要自己手动配置Eclipse项目,这里提供配置好的Eclipse源码。
【Android开发-基于网易云信uikit库和官方IMDemo实现的Cordova聊天插件】 在移动应用开发中,为了实现实时通讯功能,开发者常常会借助第三方SDK,如网易云信。本项目是一个专门为Android平台设计的Cordova插件,它...