写在前面:本人是个新手程序,很多问题可能都是我太菜导致的,这里只做个人记录。如果有大佬有更好的解决方案的话也希望能帮小弟我解惑。

1.Unity崩溃

可能是因为我没做 捕获异常的原因,但凡是初始化了 云信SDK后,只要因为Unity报错或者其他问题导致 程序无法正常退出的时候,Unity就会直接卡死。

2.使用SDK有什么需要注意的问题?

SDK提供的接口都是异步接口,通过回调函数接收执行结果,在回调函数中不能直接操作UI对象,可以将结果保存起来在update函数中更新游戏,或者通过其他方式进行更新。(在demo中提供了Loom类实现这个功能。)

3.网络消息拆箱问题

云信SDK的网络消息基类是 NIMIMMessage 类,其他类型的网络消息基本上都是 由它派生出来的,例如 NIMAudioMessage,NIMTextMessage,NIMImageMessage,NIMTipMessage 等等。然而消息接受的回调参数中返回来的是一个 NIMIMMessage 类型的对象。

// 消息接受的回调public void OnMessageReceived( object sender, NIMReceiveMessageEventArgs args )
// 这是消息回调中,回调回来的参数 NIMReceiveMessageEventArgs 类的定义。public class NIMReceiveMessageEventArgs : EventArgs{public NIMReceiveMessageEventArgs(NIMReceivedMessage msg){Message = msg;}public NIMReceivedMessage Message { get; set; }}
// 这是 NIMReceivedMessage 类的定义public class NIMReceivedMessage : NimJsonObject<NIMReceivedMessage>{internal const string MessageContentPath = "content";...[JsonProperty(MessageContentPath)]public NIMIMMessage MessageContent { get; set; }...
// 安卓工程 manifests 权限<!-- Enable internet for app!!!. --><uses-permission android:name="android.permission.INTERNET" /><!-- Getting the state of internet for app!!!. --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- write or read user data file for app!!!. --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_LOGS" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.VIBRATE" /><uses-permission android:name="android.permission.GET_ACCOUNTS" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.CAMERA" />

4.Android 权限获取问题

一开始打包成出安卓工程真机测试时,初始化SDK时报错,提示无法Create_path。然后换了一台测试机,发现可以正常初始化。然后就去查权限获取的问题。

5.Android Manifests 中的坑

正常来说 Unity 导出安卓工程后,工程中的 manifests.xml 中 作为应用程序启动入口的 Activity 应该是 Unity 生成的 UnityPlayerActivity,然而接入了云信SDK后的 导出的安卓工程中的 manifests 应该是修改了原本 Unity 生成的
// 以下是接入云信SDK后的安卓工程的 manifests.xml 中活动的声明<activity// 主要是 name 这里的区别 **android:name="com.netease.nimlib.MainActivity"** android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density"android:hardwareAccelerated="false"android:label="@string/app_name"android:launchMode="singleTask"android:screenOrientation="fullSensor"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /><category android:name="android.intent.category.LEANBACK_LAUNCHER" /></intent-filter><meta-dataandroid:name="unityplayer.UnityActivity"android:value="true" /><meta-dataandroid:name="unityplayer.ForwardNativeEventsToDalvik"android:value="false" /></activity>
        <activityandroid:name="com.netease.nimlib.MainActivity"android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"android:label="@string/app_name"android:launchMode="singleTask"android:screenOrientation="fullSensor"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><meta-dataandroid:name="unityplayer.UnityActivity"android:value="true" /><meta-dataandroid:name="unityplayer.ForwardNativeEventsToDalvik"android:value="false" /></activity>

6.录制音频路径和发送本地音频路径

I/Unity: 音频信息:StopCapture rescode:200
file_path:/sdcard/com.netease.nim_unity_android_demo/NIM/audio/181366001.aac
file_ext:aac

上面这个是 录制完成后输入的部分音频信息。 file_path 是音频的路径。

//如果是发送本地文件,请给LocalFilePath赋值
msg.LocalFilePath="c:\\audio.aac";

而发送音频网络消息 需要文件绝对路径,如上图这种。具体原因猜测可能是 Unity识别不了 “/”这样的文件路径吧。

7.消息中附件的本地路径

这个接口并没有在Unity集成的文档中提到,如果是第一次接入此SDK并且首先接Unity的话,很容易就不知道附件下载到哪里去了。

        /// <summary>/// 从消息的中获取附件(图片、语音、视频等)的本地路径/// </summary>/// <param name="msg">消息对象</param>/// <returns>消息如果有附件,不管是否已下载,返回附件的本地路径;消息如果没有附件,返回空字符串""</returns>public static string GetAttachmentPathFromMsg(NIMIMMessage msg){var jsonMsg = msg.Serialize();var ptr = TalkNativeMethods.nim_talk_get_attachment_path_from_msg(jsonMsg);NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler();var path = marshaler.MarshalNativeToManaged(ptr) as string;GlobalAPI.FreeBuffer(ptr);return path;}

8.云信服务端API问题

聊天室的创建需要调用到云信服务端的API,云信服务器那边只接受 Http Post 请求,下载了云信提供的服务端API调用demo示例,发现C#的demo好像并没有写出如何在请求中添加参数,只有Java版本的。所以我用了我们项目引用的第三方工具——BestHttp,可以正常与云信服务器那边发送请求了。

未完,因为公司需要换一个即时通讯产品,所以此文章暂时告一段落了,如果以后有时间的话会再继续更新完善的。

记录一些目前 Unity接入网易云信SDK遇到的问题 和一些经验相关推荐

  1. Android 项目接入网易云信IM单聊,群聊

    首先需要去网易云信注册账号: https://app.yunxin.163.com/index?clueFrom=nim&from=nim#/create 账号注册成功后去新建项目拿到集成需要 ...

  2. Unity接入微信支付SDK

    最近1年转了UE开发,博客更新的比较少,技术栈宽了不少,以后有空尽量多更新,也方便总结记忆 Unity接入微信支付整个过程坑比较多,网上之前的教程要么比较老,要么比较零碎,只能东拼西凑摸索,跑通后还是 ...

  3. 网易云信SDK V3.1.0版本发布啦

    最近天气渐冷,小伙伴们要注意保暖:有女朋友的抱紧女朋友,没女朋友的就抱紧主机. -from 贴心的云小信 10月26日,网易云信SDK V3.1.0版发布,本次版本主要发布功能为:群组聊天室禁言,聊天 ...

  4. 6月2日,网易云信SDK全面支持IPv6

    2016年5月初,Apple公司官方发文告知用户,6月1日之后提交的版本,必须支持 IPv6-only 的网络环境.为此,Apple还发布了官方指南告知用户如何兼容 IPv6-only 的环境. 而网 ...

  5. 静观接入网易云信IM的秀品,如何在圣诞让她们疯狂剁手

    自网易云信发布以来已有超过12332个产品接入,全面覆盖各个行业.我们的客户太优秀,忍不住给大家安利一下. 出场 接入网易云信客服功能的秀品,圣诞开始果断发力,日活biubiu上涨! 下面的图文,有女 ...

  6. php laravel lumen 快速接入网易云信 im

    第一部分 了解网易云信im 根据上图所示,在我们接入网易云信im时,我们所需要做的就是蓝色部分,并且客户端网易提供了一个完整的demo,我们的开发完全可以基于这个demo来改造,然后就是应用服务器的开 ...

  7. Unity接入穿山甲广告SDK(以及GroMoreDemo)

    Unity接入穿山甲广告SDK(以及GroMoreDemo) 下载安装 穿山甲官网SDK下载链接(https://www.csjplatform.com/union/media/union/downl ...

  8. 反向编译了子弹短信的 APK,核心功能为整合网易云信 SDK

    坚果 Pro2s 京东开卖两周,评论仅1.1万.TNT 预定数量不足100台.但是8月20日锤子科技的产品发布会上,「子弹短信」火了. 但是这个子弹短信到底好不好用呢?正所谓没有调查就没有发言权,作者 ...

  9. Unity C# 网易云信【短信服务】

    Unity C# 网易云信[短信服务] 一.注册登录网易云信,要实名认证,选择企业或者个人认证,等待通过审核: 二.审核通过后,可以看到有送20条短信验证码,还送了几条语音验证和其他认证,接下来的申请 ...

最新文章

  1. 某大厂程序员哀叹:千万不要从大厂往小厂跳,后悔死了!小厂只会逼迫压榨,刚来就一个劲要产出!...
  2. 一直记不住window下面的盘符切换
  3. php://input allow_url_include,php allow_url_include的应用和解释_PHP教程
  4. 【Pytorch神经网络实战案例】03 CIFAR-10数据集:Pytorch使用GPU训练CNN模版-测试方法
  5. 钱准备好了吗?中国移动将在10月公布5G套餐资费
  6. Create-React-App创建antd-mobile开发环境
  7. 给self.navigationItem.rightBarButtonItem设置字体颜色
  8. php_D3_“简易聊天室 ”实现的关键技术 详解
  9. STC学习:非易失存储器
  10. 【酱菜物联】微信小程序实现远程控制LED灯
  11. linux趋势防病毒软件进程,你了解linux的防病毒软件吗?你知道我说的不是防火墙...
  12. 线对 Line pairs度量空间频率
  13. VB类计算机专业毕业设计题目
  14. Jquery+flash在线图片裁剪
  15. ABeam Insight | 女性科技系列(3):国内外女性科技(FemTech)企业介绍
  16. 署任DS.ENOVIA.DMU.NAVIGATOR.V5-6R2017.GA.WIN64数字制造解决方案
  17. 字节-测试开发-面试
  18. 企业和团队如何创建高效实用的知识管理体系
  19. javascript之event对象
  20. 二叉树的度为2的节点和叶子节点的关系

热门文章

  1. 9s12zvm 初学者
  2. 利用ADO.NET处理数据的简单之处
  3. arcgis操作:解决空间连接所出现的问题
  4. 贝塞尔曲线介绍及一阶、二阶推导
  5. android 虚拟机键盘无法使用问题解决办法
  6. 运动耳机什么牌子好,运动耳机品牌排行
  7. 我把面试 ThreadLocal 能问的,都写了
  8. android 模拟器 2.0,Android模拟神器-Genymotion2.0发布,安卓的x86模拟器
  9. 【关于POJO类一文秒懂】
  10. Web开发种色系搭配方案和常用颜色码