ios测试 发送自定义消息直接闪退崩溃了


(绝伦独舞) #1

我这边ios测试 发送自定义消息直接闪退崩溃了 安卓都正常 @Lris

    RCTAuroraIMUI was compiled with optimization - stepping may behave oddly; variables may not be available.
    warning: could not execute support code to read Objective-C class data in the process. This may reduce the quality of type information available.

报错信息


Jmessage发送自定义消息
#2

你这个是用了 IMUI 的 UI 库吗?

给下完整的客户端日志信息


(绝伦独舞) #3

对的。发送自定义的消息 就报这个。安卓的没问题。

2018-12-22 08:27:27.721 [info][tid:com.facebook.react.JavaScript] Sending custom message
RCTAuroraIMUI was compiled with optimization - stepping may behave oddly; variables may not be available.
warning: could not execute support code to read Objective-C class data in the process. This may reduce the quality of type information available.
(lldb) 

@Lris


(绝伦独舞) #4

貌似找到问题了,我打印了获取的历史消息的log.自定义的那条消息和别的消息的区别是:少了一个字段 severMessageId.是极光后台的问题吗? @Lris


(绝伦独舞) #5

已经确定了,应该是ios的这边sdk的问题。安卓的自定义的那条消息有severMessageId这个字段。而ios的没有。最后一条是自定义消息的log.是因为ios发送的时候得需要传某个参数吗?能显示说明发送成功了。但是它的severMessageId哪去了。。。
7862B2B9-AECB-4DDF-81F4-7B9C4486AA8D


(绝伦独舞) #6

我看了下打印的其他数据,自定义都能正常的消息格式是一致的。难道是IMUI 的 UI 库不支持自定义吗


(绝伦独舞) #7

this.convertJMessageToAuroraMsg(msg)已经定位到这个地方了。就是自定义消息转化ui的时候直接闪退。我看了很多遍,自定义的消息格式和其他的发送消息的格式都是正确的。因为安卓都是可以发自定义消息的。一摸一样的代码。ios不行。 @Lris 希望周一尽快答复呀,谢谢啦~~~ 感觉是发自定义消息的时候,IMUI的ios转化出现了错误。


(绝伦独舞) #8
2018-12-22 15:43:45.929 [info][tid:com.apple.root.default-qos][RCTImageLoader.m:653] [PERF ASSETS] Loading image at size {1500, 640}, which is larger than the screen size {640, 1136}
frameWidth :16.0  spaceWidth: 0.0
frameWidth :16.0  spaceWidth: 0.0
frameWidth :402.0  spaceWidth: 59.0
frameWidth :402.0  spaceWidth: 59.0
frameWidth :320.0  spaceWidth: 38.5
frameWidth :8.0  spaceWidth: -8.0
frameWidth :8.0  spaceWidth: -8.0
RCTAuroraIMUI was compiled with optimization - stepping may behave oddly; variables may not be available.
(lldb) 

弄了一天。。。这是完整的报错信息。 上面说的加载图片 我这个页面也没有图片呀。。是imui里的吗。这个地方应该不是闪退的主要原因吧。。


(HuminiOS) #9

传入消息的 json 数据提供一下


(绝伦独舞) #10

这两天有事,不好意思。稍等。


(绝伦独舞) #11
getNormalMessage() {
        var msg = {}
        msg.username = ""
        msg.type = 'single'
        return msg
    }          

            var message = this.getNormalMessage()
            message.customObject ={key: '订单消息 点击查看详情'}
            message.messageType = "custom"
            message.appKey = ""
            console.warn("32"+JSON.stringify(message))
            JMessage.createSendMessage(message, (msg) => {
            console.warn("22"+JSON.stringify(message))
                var auroraMsg = this.convertJMessageToAuroraMsg(msg)

就是到这里报错了。22log能打印出来。 @HuminiOS


(HuminiOS) #13

你这个数据也不全,我猜是this.convertJMessageToAuroraMsg 方法没有对 message.type === ‘custom’ 的情况做处理


(绝伦独舞) #14

我觉得也是。但是安卓却好用。哎~~


(绝伦独舞) #15

那我应该咋么办现在 :sweat_smile: @HuminiOS 是不是安卓ios有不一样的地方


(HuminiOS) #16

添加对 custom 的处理。你要根据 jmessage 的 message 格式 和 IMUI message 的格式做一个转换。


(绝伦独舞) #17

上面的那个log,唯独自定义消息那一个没有serverMessageID正常吗 @HuminiOS


(HuminiOS) #18

所以消息共用一套转换逻辑,custom 没有可能这是原生差异,不过这个不影响,serverMessageID 是用来排查问题的,真正用到的是 id 这个属性


(绝伦独舞) #19
        auroraMsg.msgType = 'custom'
        auroraMsg.content = jmessage.customObject.key
        // auroraMsg.text = jmessage.customObject.key

我好像知道了。当我把text换成content就不会报错,进入页面正常,但是那条自定义消息的内容不会显示出来。 @HuminiOS 内容是那个字段您那边知道吗 我看了jmessage的demo没有对custom的例子


(绝伦独舞) #20

我终于试验出来了。ios这边你得设置content的大小才能出来。然而参数还和安卓的不一样。我去。。。困扰了我好几天。 @Lris


#21

:+1:,我们来看看是不是在插件文档里面说明下,可以参加我们的征文活动写写接入心得,拿奖