JMessage Android 端开发详解

Android——极光推送JMessage 要想实现聊天,需要在极光推送创建应用,开发者控制台,前往极光推送。在开发者服务下面选择极光IM,查看相关文档来配置,获取应用密匙。极光IM相关文档获得密匙以后,可以集成相关sdk。这些文档内容的东西就不细说了,集成完毕后到开发指南里面可以进行代码实战。先来完成聊天布局的设置:发送方消息在右侧,而接收到的消息在左侧。整体是LinearLayout,通过发送或接收数据来标识显示哪部分,隐藏哪部分。Lis 阅读详情

目前越来越多的应用会需要集成即时通讯功能,这里就为大家详细讲一下如何通过集成 JMessage 来为你的 App 增加即时通讯功能。

首先,一个最基础的 IM 应用会需要有哪些功能?
- 用户注册 / 登录
- 管理聊天会话
- 发送消息
- 接收消息

那么我们又该如何用 JMessage 来实现这些功能呢?

当然啦,你需要先为自己的应用集成 JMessage SDK,具体的集成方法可以参考集成文档,这里就不再重复啦。: )

下面我们就来看看这些功能模块具体应该怎样开发?

在功能模块开发之前,需要先调用 JMessageClient.init(applicationContext) 方法来初始化 SDK,推荐在 Application 类中调用。

用户注册 / 登录

注册

JMessage 对于用户的注册,默认必需的只有用户名和密码,对于用户名和密码的要求如下:

参数字符说明长度限制
username以字母或者数字开头。支持字母、数字、下划线、英文点、减号、 @Byte(4~128)
password不限Byte(4~128)

用户注册方法:

JMessageClient.register(username, password, new BasicCallback() {
  @Override
  public void gotResult(int code, String desc) {
    if (code == 0) {
      // 注册成功
    } else {
      // 注册失败。status:错误码;desc:错误描述
    }
  }
})

在你 App 的注册界面调用该方法后,便将用户注册到了极光服务器,就不需要自己来维护,除此之外 JMessage 还提供了设置用户昵称(nickname)、生日(birthday)、个性签名(signature)、性别(gender)、地区(region)和头像(avatar)的方法。

详情可以参考相关 API 文档。

登录

在注册成功后,注册的用户就可以通过登录 API 来进行登录,之后便能够收发消息了。

登录 API 的用法和注册类似,大家可以直接参考 API 文档。

管理聊天会话

在 IM 应用中,聊天会话就是一个用户同另一个用户 / 群组的聊天关系。在 JMessage 中定义聊天会话的为 Conversation 类。

像发送消息、获取历史消息、获取会话中对方用户的信息等和具体聊天会话相关的方法都存在于 Conversation 中。

首先,在 JMessage 中 Conversation 分为单聊会话和群聊会话。具体用法基本相同,只是有些地方需要大家注意下:

  1. Conversation 中的 getTitle() 方法会返回聊天会话的标题,在不同情况下会有不同的返回值:
    • 单聊会话:用户有昵称时显示昵称,没有昵称时显示用户名。
    • 群聊会话:有群名称时显示群名称,没有时显示群中前五个用户的名称(类似 QQ 讨论组)。
  2. getTargetInfo() 会获取会话中的目标对象信息,其返回值为 Object,需要根据具体情况将其转型为 UserInfo 或 GroupInfo,再分别处理。
  3. 会话信息是保存在设备数据库中的,因此如果用户更换了设备,是无法获取历史会话的。
  4. 因为 JMessage 默认在收到聊天消息时会有通知提示,如果想要在进入和某个用户 / 群组的聊天界面后,不再显示该会话的通知提示,需要在进入会话界面时调用 JMessageClient.enterSingleConversation(username,appKey) 或 JMessageClient.enterGroupConversation(groupId),退出聊天界面时则调用 JMessageClient.exitConversation() 来重新启用对该会话的消息通知。

发送消息

目前最新版本的 JMessage 支持文字、图片、语音、位置、文件和自定义几种类型的消息,基本的用法大家可以直接参考 API 文档,这里就不再赘述了。

这里需要注意的是 JMessage 提供了两种创建消息的方式:
1. JMessageClient.create*Message()
2. conversation.createSendMessage(MessageContent)

两种方式的结果其实是一样的,都是返回一条创建好的 Message 对象。区别就在于如果你不光要发送消息,还需要 Conversation 对象的其他方法,比如获取对方的信息、头像什么的,那么推荐使用第二种方法。如果仅仅是单独的发消息,就可以直接用第一种方法来创建。

创建完消息之后,就需要设置发送结果监听了,代码如下:

message.setOnSendCompleteCallback(new BasicCallback() {
  @Override
  public void gotResult(int responseCode, String responseDesc) {
    if (responseCode == 0) {
      // 消息发送成功
    } else {
      // 消息发送失败
    }
  }
 });
JMessageClient.sendMessage(message);    // 之后再调用发送消息 API

下面讲一下 JMessage 中几种不同的消息类型,有什么需要注意的小细节:
- JMessage 中的自定义消息(Custom message)与 JPush 中的自定义消息概念类似,当收到其他用户发送的自定义消息时是不会显示通知栏提示的。
- 除去自定义消息,其他的几种消息在创建时是可以指定 fromName 这个参数的,自定义的 fromName 将在消息接收方的通知栏作为展示名展示出来,如果未设置则会依照用户的昵称 > 用户名的优先级来展示。
- 在使用上面提到的第二种创建消息的方式时,参数 MessageContent 其实是可以添加附加字段的,附加字段不会显示在通知栏中,由开发者自己决定取到附加字段后进行怎样的操作。

接收消息

在了解发送消息后,下一步要做的当然就是接收消息啦。对于接受消息的代码写法,大家可以参考开发指南文档,这里就不再一一列举了。

总体来说,接收消息的处理还是很简单的,参考开发文档后基本写法就能了解了。这里讲几个需要注意的地方:
- 对于图片消息,用户在收到时,JMessage 默认会先下载一张缩略图并缓存到本地,但这个过程是有可能失败的,因此可以判断当消息状态为 receive_fail 时,再手动调用 downloadThumbnailImage 方法进行下载,代码如下:

switch (msg.getContentType()) {
  case image:
    ImageContent imageContent = (ImageContent) msg.getContent();
    if (msg.getStatus() == MessageStatus.receive_fail) {
      imageContent.downloadThumbnailImage(msg, new DownloadCompletionCallback() {        
        @Override        
        public void onComplete(int code, String desc, File file) {                    
          if (code == 0) {    
            // 下载成功
          } else {    
            // 下载失败
          }
        }
      });
    }
}

语音消息也是同样,仅当自动下载失败,消息状态为 receive_fail 时才需要手动调用 downloadVoiceFile 方法来下载。
- 图片和文件消息附带的文件,在收到消息后是不会自动下载文件附件的,需要开发者再调用另外的接口。分别是:
- ImageContent.downloadOriginImage(Message, DownloadCompletionCallback)
- FileContent.downloadFile(Message, DownloadCompletionCallback)
因此这两种类型消息的 getLocalPath() 方法需要在上面的 API 调用完成后才能返回有效值。

以上,就是使用 JMessage 开发一个基础 IM 应用的步骤和一些值得注意的地方,快来试试吧。: )

如果您想要一个完整的项目参考,可以戳这里。

作者:Hevin - 极光

原文:JMessage Android 端开发详解

知乎专栏:极光日报

交通标志识别系统毕设跑通指南:Django+PyTorch+MySQL环境配置与避坑 交通标志识别是计算机视觉在智能交通领域的典型落地场景,其核心依赖于深度学习模型推理、Web服务封装与结构化数据存储的协同。理解CNN模型加载机制、Django后端路由与数据库交互原理,是实现端到端识别闭环的技术基础。本文聚焦毕业设计中最常见的‘环境不兼容’与‘功能不可用’问题,围绕PyTorch版本锁定、MySQL 8.0认证插件适配、Django静态文件与数据库配置等关键环节,提供可复现的工程化解决方案。特别针对交通标志识别系统中模型加载失败、识别结果为unknown、数据库迁移报错等高频故障,给出从Py 阅读详情

相关推荐

JMessage+JPush

JPush+JMessage整合在一起。使用的SDk是极光SDK,因为JIM中没有JPush功能,现在将两个功能整合到一起,以便使用。代码中有备注。

极光JMessage:IM即时通信集成群聊简单实现(无需自己搞后台和数据库)

一、注册极光账号,创建应用 网址:首页 - 极光 二、集成sdk: 1、项目的build.gradle添加mavenCentral(): buildscript { repositories { ... mavenCentral() } ... } allprojects { repositories { ... mavenCentral() } } 2、app的build.g.

侠亦狐的博客 3377

Android-JChat是基于JMessageSDK带有完整UI界面的即时通讯应用

JChat 是基于 JMessage SDK 带有完整 UI 界面的即时通讯应用

极光IM——助你打造社交app

关于极光IM,你可能想知道的事。 什么是极光IM? 极光IM是极光继JPush之后推出的又一造福APP开发者的重量级产品,我们延续JPush的传统,将其命名为JMessage。JMessage旨在帮助APP开发者们用最短的时间,最低的成本给app集成IM社交特性,使您的app瞬间...

cidouji2493的博客 406

告别反复格式化!用Ventoy制作2025年终极启动盘,Windows/Linux/macOS一网打尽

本文详细介绍了如何使用Ventoy制作2025年终极多系统启动盘,彻底告别反复格式化U盘的烦恼。Ventoy通过创新的引导加载器架构,允许用户在一个U盘内同时存放并直接启动Windows、Linux、macOS等多种系统镜像和WePE等维护工具,实现真正的非破坏性管理和极高的U盘利用率。文章涵盖从安装配置、镜像库构建到安全启动设置等全流程实战指南。

weixin_29280219的博客 241

【CTFhub】——hate_php2021

【CTFhub】——hate_php2021

manerzi的博客 1605

【亲测免费】 推荐开源项目:jmessage_flutter —— Flutter版极光即时通讯 SDK

推荐开源项目:jmessage_flutter —— Flutter版极光即时通讯 SDK 1、项目介绍 jmessage_flutter 是一个专为 Flutter 应用设计的极光(JMessage)即时通讯插件,它允许开发者轻松集成 IM 功能,如发送文本、图片、语音等消息,并支持群组管理,提供了一流的用户体验和高效的性能。该项目兼容多种 CPU 架构,且在 pub.dev 上有稳定版本可供下...

gitblog_00002的博客 545

【基于51】红外寻迹智能小车 - 代码篇

这是一个基于C51单片机的红外巡线智能小车,是一个适合嵌入式单片机、C语言初学者练习的小Demo,文章提供完整的项目思路、免费的源代码。

ZER00000001的博客 3万+

推荐:JMessage API Java Client - 极光推送的Java SDK

推荐:JMessage API Java Client - 极光推送的Java SDK 项目简介 是极光推送(JPush)提供的一个官方SDK,它是一个用Java编写的客户端库,旨在帮助开发者轻松地在Java应用中集成极光推送服务。通过这个项目,你可以方便地调用极光推送的API,实现消息推送、用户管理、设备管理等功能。 技术分析 1. 简单易用的API封装 该项目将极光推送的HTTP接口进行了全面...

gitblog_00086的博客 557

双系统下 ubuntu 20.04 突然 开机黑屏报错 hdaudioC0D2: unable to configure disabling

今天在开实验室开双系统台式机时,ubuntu 20.04 系统下,突然在某次关机后再开机时,本来启动好好的,但是在进行图形化启动时,本来应该是显示输入账号和密码时,直接黑屏报错了,内容为 hdaudioC0D2: unable to configure disabling ,这里是记录了报错的解决全过程

qq_48717745的博客 990

【UE5】虚幻引擎Gameplay框架

游戏实例(UGameInstance)会在引擎启动时实例化,并保持活跃直至引擎关闭。这是一种管理器类,在游戏中不存在实体,但会追踪数据和运行代码。在联网多人游戏中,游戏实例不会被复制,而是独立存在于服务器以及所有互联的客户端上。所有你希望在关卡加载间保持的内容都应存于游戏实例中。例如,游戏实例是管理游戏保存系统的到地方。游戏实例还可以充当任意数量的 游戏实例子系统 的管理器,这些子系统由游戏实例创建和销毁,并且与游戏实例本身具有相同的生命周期。在线子系统就属于这类子系统。

一个写程序的 1795

message android,JMessage Android 端开发详解

目前越来越多的应用会需要集成即时通讯功能,这里就为大家详细讲一下如何通过集成 JMessage 来为你的 App 增加即时通讯功能。首先,一个最基础的 IM 应用会需要有哪些功能?那么我们又该如何用 JMessage 来实现这些功能呢?当然啦,你需要先为自己的应用集成 JMessage SDK,具体的集成方法可以参考集成文档,这里就不再重复啦。: )下面我们就来看看这些功能模块具体应该怎样开发?在...

weixin_39758956的博客 205

YOLO11改进 | 注意力机制 | 添加SimAM注意力机制【全网独家+附完整代码】

yolo11,yolo11改进,yolo11创新,yolo11添加注意力机制

kay_545 1229

android JMessage集成

认识极光IM极光IM – JMessage,帮助 App 解决应用内聊天和跨应用聊天问题,开发者可集成SDK,快速实现稳定可靠的聊天功能。目前提供 iOS / Android / web 的 SDK,以及 Rest API 和后台管理系统,满足开发者不同场景下的需求,大大减少开发成本,提高效率。 模块化的极光开发者SDK模块化的极光,一个JCore+N个服务,如图:JMessage 与JPush的

大东的博客 896

couldn‘t upgrade db schema: insert into ACT_GE_PROPERTY values (‘common.sche[已解决]

启动整合了flowable的项目,初始化时报错。flowable没有自动建表, 原因 测试数据库版本是MySQL5.7。经过查询和尝试,原因是:在这个数据库里面,已经有一个数据库里面有activiti的这些表了,它检索的时候全库检索查到它了,所以flowable不去建表了,但是我们指定的这个schema里卖弄还是空的,所以它报了找不到表。解决方法:mysql的链接上加上参数如下,让本schema成为默认的schema。...

JavaPub 6006

063、推挽变换器的磁偏问题与解决

本文针对推挽变换器中的磁偏问题展开分析。作者通过实际案例指出,磁偏主要由开关管导通压降差异和驱动信号不对称引起,会导致变压器饱和、MOS管炸毁等问题。文章提供了四种解决方案:采用电流模式控制、添加隔直电容、优化对称驱动设计以及引入磁芯气隙(作为最后手段)。调试时应重点观察原边电流波形对称性、变压器声音和直流分量。作者强调实践经验的重要性,建议预留隔直电容位置,并指出推挽拓扑在500W以上功率场合的局限性。这些基于实战的经验总结为电源工程师提供了有价值的参考。

Jack010169的博客 311

极光im支持android手机系统,极光IM - JMessage 产品简介 - 极光文档

JMessage 产品简介认识极光 IM极光 IM(英文名 JMessage)致力于帮助 App 解决应用内聊天和跨应用聊天问题,开发者可集成SDK,快速实现稳定可靠的聊天功能。目前提供 iOS / Android / web / PC(Windows、macOS) 的 SDK,以及 Rest API 和后台管理系统,满足开发者不同场景下的需求,大大减少开发成本,提高效率。模块化的极光开发者SD...

weixin_35719518的博客 585

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

极光JMessage PhoneGap/Cordova 插件常见问题解决方案

极光JMessage PhoneGap/Cordova 插件常见问题解决方案 本文将为您介绍极光官方支持的JMessage PhoneGap/Cordova插件的基础信息,以及新手在使用该项目时可能会遇到的三个常见问题及其解决步骤。 1. 项目基础介绍和主要编程语言 极光JMessage PhoneGap/Cordova插件是极光官方开发的一款即时通讯插件,支持Android和iOS平台。该插件为...

gitblog_01086的博客 469

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

项目自动集成极光推送的JMessage

项目集成 项目使用自动集成,进行一下四步: 确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持。 buildscript { repositories { jcenter() } ...... } allprojects { repositories { jcenter() ...

我要,我要,我还要 1049

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

探秘高效通讯:jmessage-react-plugin —— 极光IM的React Native福音

探秘高效通讯:jmessage-react-plugin —— 极光IM的React Native福音 随着移动应用的飞速发展,即时通讯功能成为许多App不可或缺的一部分。今天,我们要向大家隆重推荐一个专为React Native开发者设计的强大工具——jmessage-react-plugin,它是极光官方针对极光IM平台打造的一个开源插件,旨在让即时通讯功能的集成变得简单快捷,同时支持iOS与...

gitblog_01107的博客 237

安卓端golang通过JNI调用JAVA实现

我编译采用的MYSYS2进行编译期间编译过程缺少部分环境变量缺什么补什么即可。一切就绪后执行build.sh脚本即可,生成的库在build目录下。在app/src/main/目录创建jniLibs目录放入so库。这里的package 声明不能为main,可以自己随便起。修改setting.gradle,添加以下内容。在app目录下创建libs目录。将aar库拷贝到libs目录下。Golang代码实现。3.java代码添加。点击加载gradle。

m0_48406987的博客 547

Android-IM使用imui组件结合JMessage实现即时消息对话

项目源码请参考 Android-IM 项目服务端使用极光JMessage 对话列表使用aurora-imui开源组件 简介imui是极光在GitHub上开源的一个即时通讯库,方便开发者快速使用,完成即时通讯类的对话展示。目前支持Android、iOS、React Native三大平台。该库在Android端包括两大控件 MessageList ChatInputView

wapchief的博客 2054
上一篇: JPush Android 推送如何区分开发、生产环境
下一篇: Android 用 camera2 API 自定义相机
极光推送
博客等级 码龄14年 109粉丝 108原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值