• unity手游之聊天SDK集成与使用二


    集成思路

    如果是自己的小游戏的话,可以把好友等信息直接保存在亲加服务器上,通过调用api来操作。

    我们游戏只使用sdk的通信功能,好友等信息保存在自己的服务器上。

    用户在登陆游戏的时候,通过算法用用户的唯一ID去登陆 亲加SDK。(去登陆聊天SDK的用户ID或创建群时的ID可以 通过用户ID/公会ID 再用算法加工变换一下生成一个,避免重复)

    游戏服务器不集成亲加SDK,只有前端集成。

    下面SDK指亲加聊天SDK API接口

    服务器通知前端 游戏登陆成功: 前端-调用聊天sdk api登陆 ,前端-从服务器获取聊天室列表,通过sdk进入世界聊天室、(公会)聊天群(如果有公会的话)
    服务器通知前端 创建公会成功: 前端-sdk 创建(公会)聊天群【公开群】
    服务器通知前端 加入公会成功: 前端-调用sdk 加入(公会)聊天群
    服务器通知前端 公会踢出玩家/玩家退出公会 成功: 前端-调用sdk 退出(公会)聊天群 等。

     
    语音API使用
     注:如果在PC上测试,发送语音,需要插上带麦克的耳机,或者话筒,才能发语音成功。必须监听ChatListener,否则无法收到回调。
     
    创建语音
    1.开始录音
    api.StartTalk (new GotyeUser(talkToName),GotyeWhineMode.GotyeWhineModeDefault,false,600000);

    2.结束录音

    api.StopTalk();

    3.在StopTalk的回调里,发送语音

    public void onStopTalk(GotyeStatusCode code, bool realtime, GotyeMessage message)
    {
       //StartTalk里参数是否是实时语音必须为false,否则message为null
      //发送语音
      api.SendMessage(message); }

    接收语音
    接收消息(文本/图片/语音)

    public override void onReceiveMessage(GotyeMessage message)
      {
            if (message.Type == GotyeMessageType.Text) {
    
            }
            else if(message.Type == GotyeMessageType.Audio)
            {
                if(File.Exists(message.Media.Path))//如果本地有这个语音文件,直接播放这个消息
                {
                    api.PlayMessage(message);
                }
                else
                {
                    //下载语音文件
                    api.DownloadMediaInMessage(message);
                }
            }
        }    

    下载语音/图片文件,并播放

    public void onDownloadMediaInMessage(GotyeStatusCode code, GotyeMessage message)
        {
            if (code == GotyeStatusCode.CodeOK) {
                if (message.Type == GotyeMessageType.Image) {
                     Debug.Log ("下载消息中的图片成功!");                
                } else if (message.Type == GotyeMessageType.Audio) {
               Debug.Log ("下载消息中的音频成功!");
                     GotyeMedia media = message.Media;
              //播放语音
                     api.PlayMessage(message);
                }            
            }
        }
  • 相关阅读:
    ThreadLocal的原理和使用场景
    sleep wait yield join方法的区别
    GC如何判断对象可以被回收
    双亲委派
    ConcurrentHashMap原理,jdk7和jdk8版本
    hashCode和equals
    接口和抽象类区别
    为什么局部内部类和匿名内部类只能访问局部final变量
    【GAN】基础GAN代码解析
    TF相关codna常用命令整理
  • 原文地址:https://www.cnblogs.com/rentianlong/p/4943523.html
Copyright © 2020-2023  润新知