JMessage.retractMessage


(绝伦独舞) #1
onMsgLongClick = (message) => {
        console.warn(JSON.stringify(message));
        var msg = {};
        msg.type = 'single';
        msg.username = 'xxxx';
        msg.messageId = message.msgId;
        // Alert.alert('撤回消息','撤回消息');
        JMessage.retractMessage(msg, (success) => {
               }, (error) => {
            console.warn(JSON.stringify(error))
        });

上面这是我的代码 一直返回error "Invalid parameters"无效的参数 这是官方文档 我有什么错误的地方吗
参数说明

type: 会话类型。可以为 ‘single’ 或 ‘group’。
username: 对方用户的用户名。当 type 为 ‘single’ 时,username 为必填。
appKey: 对方用户所属应用的 AppKey。如果不填,默认为当前应用。
groupId: 对象群组 id。当 type 为 ‘group’ 时,groupId 为必填。
messageId: 要撤回的消息 id。

示例

JMessage.retractMessage({type: 'single', username: 'username', appKey: 'appKey',
  messageId: 'target_msg_id'},
  () => {
   // do something.

  }, (error) => {
    var code = error.code
    var desc = error.description
  })

(绝伦独舞) #2

这个username和appkey 是对方的username还是我自己的?应该是我自己的吧。只能撤回自己发的消息才对


(绝伦独舞) #3

当我把username和appkey 设置成对方的时候就报out of time的错误


(12) #4

Android 还是 iOS 出现

给出你上述操作产生的客户端日志信息,日志里面会有你实际传的参数信息和返回信息


(绝伦独舞) #5

Android
11-27 14:00:47.664 17446-22338/com.merchant E/JIGUANG-JMessage: [InternalConversation] The retract message can not be null.
11-27 14:00:47.700 17446-22337/com.merchant W/ReactNativeJS: {“description”:“Invalid parameters.”,“code”:871301}


(绝伦独舞) #6

我没有enterConversation 还需要先进行这步操作吗


(绝伦独舞) #7

The retract message can not be null.不可能为空呀,我的msgid都取到了


(12) #8

提供完整的日志信息


(绝伦独舞) #10

11-27 14:00:47.664 17446-22338/com.merchant E/JIGUANG-JMessage: [InternalConversation] The retract message can not be null.
11-27 14:00:47.700 17446-22337/com.merchant W/ReactNativeJS: {“description”:“Invalid parameters.”,“code”:871301}

就这么多。。再没看到相关的了


(Josh Lipan) #11

不是写了是对方的username和appkey吗


(绝伦独舞) #12

如果是对方的话。我撤回自己的消息,报错返回out of time code:855001.当撤回对方的消息时,返回request user is not a message sender code :85502 @JoshLipan


(绝伦独舞) #13

这么设置返回是对的,谢谢。out of time 什么原因呢 @JoshLipan


(Josh Lipan) #14

1.855001 超出撤回时间,时长为三分钟内有效
2.85502 只有消息发出者才有撤回权限
3.使用插件请参考官方文档,你现在好多问题都是官方文档有写的。


(绝伦独舞) #16

明白了,感谢


(绝伦独舞) #17
175/com.merchant E/unknown:React: Exception in native call
                                                         java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String com.facebook.react.bridge.ReadableMap.getString(java.lang.String)' on a null object reference
                                                             at cn.jiguang.imui.messagelist.AuroraIMUIModule.configMessage(AuroraIMUIModule.java:139)
                                                             at cn.jiguang.imui.messagelist.AuroraIMUIModule.insertMessagesToTop(AuroraIMUIModule.java:126)
                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                             at com.facebook.react.bridge.BaseJavaModule$JavaMethod.invoke(BaseJavaModule.java:368)
                                                             at com.facebook.react.cxxbridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:138)
                                                             at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
                                                             at android.os.Handler.handleCallback(Handler.java:739)
                                                             at android.os.Handler.dispatchMessage(Handler.java:95)
                                                             at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
                                                             at android.os.Looper.loop(Looper.java:179)
                                                             at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:208)
                                                             at java.lang.Thread.run(Thread.java:818)

我点击 撤回 报错了


(绝伦独舞) #18
onMsgLongClick = (message) => {
    var msg = {}
    msg.type = 'group'
    msg.groupId = this.conversation.groupId
    msg.messageId = message.msgId
    Alert.alert('撤回消息','撤回消息')
    JMessage.retractMessage(msg, (success) => {
      var eventMsg = {}
      eventMsg.msgId = message.msgId
      eventMsg.msgType = "event"
      eventMsg.text = "撤回的消息"
      AuroraIController.updateMessage(message)
    }, (error) => {

    })
    
  }

JMessage.retractMessage这里面是按照文档写的 AuroraIController.updateMessage(message)


(绝伦独舞) #19

我找到了问题,是和获取历史消息AuroraIMUIController.insertMessagesToTop(auroraMessages)发生了冲突。因为我点击撤销,页面无反应,再点击一次,提示已撤销。我返回再进去这个页面,所有的历史消息都没了。


(Josh Lipan) #20

按你这里的代码不是应该传 AuroraIController.updateMessage(eventMsg)?


(绝伦独舞) #22

这是官方文档 demo里的 我是按照您的代码测试的 :joy: 这是你写的 我也纳闷呢 我试了下 您再仔细看看


(Josh Lipan) #23

demo 的撤回逻辑确实写错了,你改成 AuroraIController.updateMessage(eventMsg) 试下