多多调试
多多调试
  • 发布:2022-10-28 12:21
  • 更新:2022-10-28 12:21
  • 阅读:876

Uniapp中用GoEasy集成IM过程中常见问题的处理

分类:uni-app
IM

1. 调用了GoEasy connect接口后,怎么日志中一直在打印connecting呢?

答:调用了connect接口之后,GoEasy sdk会自动尝试重连直到连接成功,如果出现一直连接中,你需要检查你的网络是否稳定,是否有防火墙限制等,最简单的方式则是切换到手机移动数据热点来看看是否可以连接成功。

2. GoEasy connect 接口返回code:401,error:Sorry, your application is a Basic Edition and does not support IM APIs, please upgrade to the Enhanced Edition if you need to invoke IM APIs,怎么回事?

答:这个错误是因为你创建的应用的类型不支持im 模块,只有增强型才可以使用im 模块,所以只需要重新创建一个免费的增强型就可以使用了。增强型是既支持pubsub模块又支持im模块,但基础型只支持pubsub模块。两个类型都有免费应用可以创建,所以不影响我们试用。

3. GoEasy connect 接口返回code:408,error:It is already connected, don't try again until disconnect() is called, 怎么回事?

答:这个就是客户端已经建立goeasy连接了,又在尝试调用connect接口就会报这个错。处理方式很简单,在连接时加上状态判断,只有当连接断开时才调用connect接口。这个goEasy.getConnectionStatus()接口在goeasy的官方文档中没有描述,但是在goeasy提供的im demo中有使用范例。

 // 因为已经连接过GoEasy的客户端,在未断开重连的前提下,是不能再次调用connect接口的,  
            //所以这里需要判断,只有当连接断开,才需要调用connect接口  
            if(this.goEasy.getConnectionStatus() === 'disconnected') {  
                this.connectGoEasy();  //连接goeasy  
                this.subscribeGroup(); //建立连接后,就应该订阅群聊消息,避免漏掉  
            }

4. GoEasy 参数或方法Undefined的问题,比如goEasy is undefined, im is undefined 等

答:这个undefined 的问题,不多说了,多数情况是没有挂载到全局导致其他页面无法获取到您要的goeasy参数。遇到这种问题,需要逐步看看参数的定义情况,具体的就不多说了,前端程序员的基本排查能力要具备吧。

5. GoEasy connect接口中的data属性是干什么的?

答:data可以带上当前用户的一些用户信息,比如常见的有昵称和头像,这个data属性会在多个接口中作为用户的附加信息返回给我们,比如会话列表接口、历史消息接口,这样可以省去我们再次从数据裤中读取这些信息。

6. GoEasy消息监听器中只能监听到好友或群组其他成员的消息,自己发送的消息不能被自己监听吗?

答:是的,自己发送的无论是私聊还是群聊消息,在消息创建成功后,就可以将创建好的message对象直接push到消息列表。

sendMessage(message){  
                this.messages.push(message);  
                this.scrollToBottom();  
                this.goEasy.im.sendMessage({  
                    message: message,  
                    onSuccess: function (message) {  
                        console.log('发送成功.', message);  
                    },  
                    onFailed: function (error) {  
                        if(error.code === 507){  
                            console.log('发送语音/图片/视频/文件失败,没有配置OSS存储,详情参考:https://www.goeasy.io/cn/docs/goeasy-2.x/im/message/media/send-media-message.html');  
                        }else{  
                            console.log('发送失败:',error);  
                        }  
                    }  
                });  
            },  

7. GoEasy IM的history接口返回的消息有遗漏,怎么回事呢?

答:调用history接口时,首次调用时lastTimestamp必须传null ,第二次查询时(加载更多历史消息时),lastTimestamp为上次查询结果里最后一条消息的时间戳。出现这个问题,多半是首次调用时传的不是null。 (我当时就没有仔细看文档传了当前时间)

8. 发送了消息,但goeasy的私聊监听器中没有收到监听消息,是什么原因呢?

答:询问goeasy在线客服得知,监听器中的代码如果报错了,那么有新消息时是不会触发监听器的;或者满足消息渲染的条件导致看起来没有收到消息。你可以注释掉监听器中的所有代码,只留一句打印收到的消息,看看是否可以打印出新收到的消息。(我当时就是因为监听器中if (friendId === this.friend.uuid)的条件不满足导致消息没有渲染到页面,根本原因是 “12”===12返回了false,所以这些细节都需要注意)

9. 集成了GoEasy的原生插件后,iOS收不到离线通知,如何排查呢?这里我引用GoEasy客服的回复。

请排查以下几点:

  1. app在后台运行是否可以收到通知栏提醒
  2. 发送消息时是否有带notification的相关参数,具体参考文档进行排查
  3. 如果是付费应用,排查是否购买了通知栏推送服务
  4. 手机里app的通知权限是否打开
  5. 是否添加了原生插件并按文档要求打包自定义基座(特别是是须勾选了push模块且不能勾选unipush)
  6. 确认iOS推送证书是否配置正确
    a. 请确认是否在GoEasy后台上传时的iOS的推送证书, iOS推送证书跟iOS的开发打包证书是两个完全不同的证书
    b. ios推送证书与开发证书的bundle id是否一致
    c. 推送证书是否是测试环境跟正式环境通用的证书
    d. 如果您选择的运行证书的环境为正式环境,您的app是否已经上架app store
  7. 如果以上6点都没有问题,请运行一下咱们的IM 的demo,看是否是您的代码有问题

没有你遇到的问题?GoEasy官网www.goeasy.io找在线客服啊,哈哈哈哈

0 关注 分享

要回复文章请先登录注册