最佳实践

记录实际应用中的最佳实践方法。

1. Q. 我们正在做红包功能,红包有已打开/未打开状态,能否修改IM消息中的已读/未读状态

A. 使用野火IM的一个原则就是:不能把业务逻辑强加于IM系统,需要保持IM服务的独立性。红包的已打开/未打开状态属于业务逻辑。应该把该状态保存在红包服务器,当红包消息显示时,如果本地没有该红包对应的状态,应该去红包服务器取回状态,取回之后判断如果已经打开,保存已打开状态下来,如果没有打开则不存储。之后每次显示红包消息时都根据本地保存的状态是否打开过,如果已经打开显示打开状态;如果未打开则再去红包服务器刷新。这样当多端登录或者更换手机后,状态也都能正确显示。(此逻辑仅供参考)

2. Q. 如何添加内置动态表情,如果收藏表情,还有如何开发应用商店。

A。 请参考小表情大世界

3. Q. 我们想做交友匹配,如何获取到所有人的在线状态。

A。 请参考在线匹配

4. Q. 多人音视频想做成微信那样,在群内显示正在通话中,可以点击加入。

A。 首先我们不认同微信的模式,当部分人在群内进行通话时,所有人都可以点击加入,带来隐私性的问题。其次如果客户坚持需要此种模式,是可以根据SDK来自定义开发的,具体实现步骤如下:

  1. 音视频通话的callsession有个发起者的属性,可以知道谁是发起者。当发起者离开时,音视频SDK也会自动选举一个发起者。
  2. 发起者可以在群内周期性的广播自定义消息,需要把消息定义为状态消息,内容是谁在通话,群内其它用户收到后可以显示正在通话中,可以点击。
  3. 当群内用户点击要求加入时,发送加入请求消息(同样需要定义为状态消息),发起者收到消息后弹出“通知XX要求加入,是否同意?”,用户点击同意调用邀请此人加入。

5. Q. 上线时要注意什么问题呢?

A. 野火IM为了让大家快速体验,所以引入了很多不需要的安装的组件,也有些配置不适合上线使用。因此需要做到以下处理:

  1. App Server把H2切换到MySQL。
  2. App Server引入redis,支持shrio session的redis缓存。
  3. App Server支持https,然后客户端使用https的appserver地址。
  4. App Server去掉super code或者设置为复杂密码。
  5. IM Server把H2切换到MySQL,如果是专业版,可以考虑使用MySQL+MongoDB混合存储。
  6. IM Server把内置测试文件服务,切换到七牛对象存储,如果是专业版可以是阿里云或野火IM私有存储。
  7. 对象存储服务(七牛/阿里云/野火私有)加上HTTPS下载支持
  8. IM Server把配置文件中的server.ip 改成域名,然后客户端也需要对于改成域名。专业版需要按照专业版的说明配置。
  9. IM Server修改配置文件中的token.key
  10. 修改IM服务的配置文件中的http.admin.secret_key,另外把http.admin.no_check_time 改为false,并设置18080端口的访问权限,仅限于appserver访问。
  11. Web部署改为HTTPS访问方式
  12. 调通并部署推送服务。

6. Q. 有种场景,需要给一个用户发消息,又不想让发送方接收到消息?

A. 这种情况下你可以定义一种自定义消息(包含是那一方要接收消息及消息的内容),如果接收用户肯定在线可以用状态消息,如果接收用户可能不在线还想收到,可以用不存储消息。然后当客户端收到后判断是那一方,如果不是接收方就抛弃,如果是接收方就调用客户端API插入想要发送的消息(文本/图标/或者其它存储类型自定义消息)并更新UI,这样就做到了给用户发消息,发送方接收不到的需求。

2018 © wildfirechat.cn 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2020-04-21 16:13:54

results matching ""

    No results matching ""