常见问题 - JMessage 合集(持续更新)

标签: #<Tag:0x00007f657f1bdd70> #<Tag:0x00007f657f1bda28> #<Tag:0x00007f657f1bd7f8>

建议大家在使用极光产品前,详细阅读官方文档,遇到问题可首先参考官方 FAQ。

以及在本社区里搜索(顶部有搜索按钮)。

若搜索无果,极光 IM SDK 的问题请在「JMessage 模块」发帖咨询,为更有效更快速的解决问题,请优先阅读 「提问指南」

官方文档

更新与下载

特别情况说明

常见问题目录

  1. 需要用 OC 进行开发,但 JChat 只有 swift 版本,怎么做 点我

  2. 如何查看客户端日志 点我

  3. 获取不到用户头像 点我

  4. 如何发送表情 点我

  5. iOS 收到会话消息的推送,点击如何跳转 点我

  6. Android 收到会话消息,通知栏提醒问题 点我

  7. 863006 重复登录 点我

  8. Web 端如何获取历史消息 点我

  9. 为什么 JMessage 收到消息没有通知提醒 点我

  10. 关于小程序 SDK 的使用建议 点我



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)



1赞

获取不到用户头像


  1. A 更新头像后,B 用户在线, A 给 B 发了一条单聊消息或群聊消息,B 在线收到消息时 SDK 会去检查发送者的信息是否更新,如果有更新,会自动获取。(如果你的 SDK 版本不行,请升级到最新版本,阅读更新列表
    如果 A 发消息时, B 处于离线状态,等他再次上线时,查看用户 A 的个人信息是没有自动更新的,除非用户 A 再发送一条在线消息给用户 B。

  2. 如果不发消息,则 A 更新信息后,其他用户是无法得知他更新过的,需要他 主动获取 A 的用户相关信息,将发送方的信息拉取下来,再用message.getFromUser.getavatar 获取才可以获取到值。



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录



想发送表情 应该怎么做?


JMessage SDK 是支持 emoji 表情发送的。

目前官方 JChat 里已经提供了 emoji 表情的 UI 界面。 可以参考。

思考:

  • 表情如果是图片, 就用发送图片的接口
  • 如果是文字,就是发送文字
  • Unicode 标量,可表示某表情的,譬如 U+1F425 表示一只小鸡,可自行了解一下。

创建消息的说明文档 点击查看



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录



863006 重复登录问题


如果你一定要在每次退出了 App,再进来时做一次登录,那你可以先调用下退出接口,不然你原来就登录了再去登录就冲突了

因为你本身已经是在线的,如果不调用接口退出,服务器那边还是保存着你登录的状态

你可以通过拿用户的信息来判断是否登录了:

也可以自己想办法判断



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录



iOS 收到会话消息的推送,点击如何跳转


点击通知栏,通过获取apns消息的API 可以拿到通知信息,一般是类似如下的消息内容

这些信息不足以让我们知道消息是谁发来的,可以对应跳转到哪个聊天页面

解决办法

在创建消息的时候,使用 addStringExtra 这个接口可以填充你想要的信息, 使用 addStringExtra 后, 推送信息里会对应增加一个字段:custom,你可以从这里取到你填充的内容。

JMSGTextContent *textContent = [[JMSGTextContent alloc] initWithText:text];
[textContent addStringExtra:@"userName" forKey:@"userName"];
[textContent addStringExtra:@"your appKey" forKey:@"appkey"];
JMSGMessage *message = [_conversation createMessageWithContent:textContent];
[_conversation sendMessage:message];

有了 username,就可以很方便的与你要跳转到的聊天页面对应起来啦。

如果是 Android 或 web 给 iOS 端发消息,也需要在各自的消息 extras 中添加下 username 信息
API 参考该贴

具体跳转的实现,需要大家自己去做哦



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录



Android 收到会话消息,通知栏提醒问题


  • 调用接口 enterGroupConversation(long groupID) 进入聊天会话后,需要调用接口 exitConversation() 退出聊天会话 ,之后收到消息,通知栏才会有展示。

  • 可以对通知栏的展示样式做修改

  • 如果不需要提醒,可以设置 免打扰

  • 自定义消息默认在通知栏不显示,有需要可自行实现展示。

  • 检查手机端-设置-通知-通知栏,是否允许通知。



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录



判断是否注册/登录


  1. 如果用一个已经注册过的 username 去注册,那么会提醒已经存在,报错 898001
  2. 通过拿用户的信息来判断是否登录了,方法


如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录



需要用 OC 进行开发,但 JChat 只有 swift 版本,怎么做


你可以直接使用 Swift 版本的 JChat, 非常简单,只需要桥接一下就可以了, 比如说你要跳转到聊天界面:

JMSGConversation  * __nonnull conv = [JMSGConversation singleConversationWithUsername:@"1233"];
JCChatViewController *vc = [[JCChatViewController alloc] initWithConversation: conv];

直接 push 到这个界面就可以,简单方便, 逻辑已经写好了。

你只需要根据你们的需要和 UI 样式简单地改一下下就可以完美使用起来

  • 支持 swift3.+ ,swift4.+。
  • 需要 Xcode9 以上

如果喜欢 JChat 项目,来 GitHub 点个 star 吧

极光还提供了 IMUI 库



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录



1赞

Web 端如何获取历史消息


情况说明:浏览器本身提供的存储空间很小,所以 Web SDK 并没有提供获取本地历史记录的接口。

如何解决:

  1. 当前提供了漫游功能,用户多个设备之间登录时,sdk 会自动同步当前登录用户的历史消息。

    • 漫游消息的同步是走离线消息的监听方法

    • 漫游自动同步 15 天内,每个会话最近 100 条的消息,如果觉得不够,看第二条 :point_down:

  2. 可以在服务端调 API 获取历史消息保存在你的服务端,然后 web 向你的服务端请求数据。

    • 服务端保存 60 天的历史消息,如果需要保留所有的消息,就请及时在服务端调 API 拉取记录保存到自己的服务器。

    • 以上功能均是免费的。

  3. 你还可以自己在页面上或者本地缓存会话的消息数据,自己做历史记录保存。



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录



为什么 JMessage 收到消息没有通知提醒


Jmessage 可能会影响通知栏展示的因素

  1. 是否开启了全局免打扰
    特别注意:免打扰措施是针对用户设置的,某一端出现异常,必须检查你每个客户端,是否有某一个客户端设置过免打扰

  2. 用户是否将对方加入免打扰列表,iOS 免打扰相关文档Android 免打扰相关文档

  3. 发送方发送时是否将这条消息设置为“免通知”,Android 是在 MessageSendingOptions 中设置,iOS 是在 JMSGOptionalContent 中设置

  4. Android 消息接收方是否调用了 enterConversation

  5. Android 是否使用 setNotificationFlag 设置了不展示通知,Android 通知相关 API

  6. iOS 在前台不会展示通知,如果集成了 JPush 且设备为 iOS10 以上,可以实现前台展示的方法,JMessage iOS 通知管理JPush iOS 10 的方法
    iOS注意需要在官网配证书(注意查看证书的状态),在客户端注册 APNS 通知。

  7. Android 自定义消息没有通知栏通知( v2.9.0 版本开始自定义消息也会有通知栏),iOS 会有。

  8. 系统设置里关了应用通知

  9. 发消息时如果设置了不保存离线消息或者不在通知栏展示,则接收方没有通知提醒

如果检查上述情况后,重新调了 API 设置开启了通知,可能需要你重装 App 。



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录



极光IM,可以收到消息,但是收不到推送
推送通知,APP前台时如何不让通知显示在状态栏???
web发消息,iOS 可以收到消息,但是收不到推送
api 服务器端掉用发的im消息,从接口用户消息列表里都能查到但是客户端收不到信息。后面有新的im消息有能收到。
同一个app 同一个发送方,不同的接收方两个账号A和B,A可以接收通知,B不能接收到通知
跨应用两端发送及时消息,接收不到消息提醒 可以接收消息
请问一下你们晚上的demo里面我看到发消息有推送,是里面也对接了极光推送吗
PHP 服务端 通过Jmessage sendText 通知栏没有提示
集成了JPush,和JMessage, 发送IM消息后,怎么只关闭聊天的推送提示横幅?iOS端
关于极光im聊天通知推送的问题
小米手机接不到群聊的消息提醒
iOS 推送问题
iOS 推送问题
集成JPush后JMessage不能用了
android的接收到对方的IM消息怎么展示到自己手机的通知栏上
jmessage-react-plugin iOS 接收消息怎么展示头部通知栏
jmessage-react-plugin iOS 接收消息怎么展示头部通知栏
ios同时集成JPush和Jmessage 可以收到普通推送 可以收到聊天消息 但是收不到聊天消息的推送
ios同时集成JPush和Jmessage 可以收到普通推送 可以收到聊天消息 但是收不到聊天消息的推送
@消息需要自己做本地通知是么
安卓JMessage后台时不显示通知横幅
安卓如何实现消息接收通知和提醒
使用jmessage-phonegap-plugin客户端插件,版本号为3.2.0,开发webapp,手机通知栏不通知有消息
iOS JMessage离线消息收不到推送
iOS接收不到会话消息提醒
iOS端如何控制聊天消息是否推送
极光IM的悬浮通知栏点击后接收消息重复
iOS配置极光IM推送收到消息没有声音和横幅的问题
极光IM聊天,怎么取消收到当前聊天对象发送消息来的通知
iOS 怎么把会话消息 @了我 置为普通信息

关于小程序 SDK 的使用建议


背景:

  • 微信小程序限制,当小程序退出后台5s,长时间没有消息交互还有其他未知情况都会自动断开长连接。
  • 我们小程序 IM 的初始化和登录状态都是在线的,如果长连接断开需要重新初始化和登录。
    问题:

大多数开发者提问都是因为长连接断开在线初始化和登录状态失效导致的。

使用建议:

下面几点 SDK 使用建议可以尽量保证长连接的正常交互:

  1. 在第一次登录或注册的时候,再去实例化对象 JMessage 进行初始化。
  2. JMessage 实例化后最好挂载在 app 对象,并保证全局只实例化一次。
  3. 当小程序在前台(app onshow)时,监听收到 disconnect 事件后重新进行初始化和登录
  4. 当小程序在后台(app onhide)时,在下次小程序调到前台时判断连接状态,如果是断开状态重新进行初始化和登录。
    image

当遇到问题时请优先根据本建议调整自己的业务逻辑,再观测问题