集成方式
下载并导入SDK
首先在网易云信SDK下载页面获取Unity SDK,参照下图将unitypackage导入到自己的项目中:
导入时,选择里面所有的文件(如果之前使用过旧版本,请务必先删除旧版本相关的文件)。
注意: unitypackage后缀文件不支持中文路径,请将文件放在全英文路径下。
Android 项目设置
网易云信Unity SDK支持的 Andorid 系统版本: 4.0 及以上。
导入 SDK 后,在 Plugins/Android/ 目录下,可以看到 AndroidManifest里SDK 所需权限:
<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"/>
开发者需要将这些SDK权限添加到自己APP的AndroidManifest里。
iOS 项目设置
1. iOS 项目配置
支持 iOS 系统版本:iOS 8.0及以上。
导出iOS项目时,必须修改如下设置项才能正常使用。不发布到iOS平台可略过此部分。
1.1 在Unity中修改项目的编译设置(Build Settings)
按下Ctrl+Shift+B打开Build Settings面板,点击Player Settings ...,切换到Setting for iOS选项卡,选择Other Settings栏, 修改Optimization配置项Script Call Optimization的值为Slow and Safe
1.2 在Xcode中修改导出的iOS工程的编译配置
- 添加Other Linker Flags配置:-lstdc++ -ObjC
添加系统库:
Security.framework
CoreTelephony.framework
SystemConfiguration.framework
JavaScriptCore.framework
libz.tbd
libsqlite3.tbd
注意: 如果项目中已有某些系统库,就不需要重复添加了
修改NVS.framework的设置
1)在General->Embedded Binaries 中 添加NVS.framework 2) 在Build Phases->Linked Framework and Libaries 中将NVS.framework在列表中的顺序调整到最后项,如果存在多个NVS.framework,则只保留一个。 3)由于库包含模拟器版本,会导致打包失败。所以如果Enable Bitcode 为YES时,打包时需要将此部分移除,如果Enable Bitcode为NO,则不需要任何处理。Enable Bitcode 为YES时,可如下处理(仅做参考):
- 在工程里创建strip_archs.sh脚本到置顶目录,如 Supporting Files里
- 在Build Phases中增加过程,类型为New Run Script Phase
- 在工程里添加内容:/bin/sh 您的脚本路径,如
/bin/sh "${SRCROOT}/NIMDemo/Supporting Files/nim_strip_archs.sh"
将以下内容复制到脚本文件
#!/bin/sh # Strip invalid architectures strip_invalid_archs() { binary="$1" echo "current binary ${binary}" # Get architectures for current file archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" stripped="" for arch in $archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then if [ -f "$binary" ]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 stripped="$stripped $arch" fi fi done if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi } APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" # This script loops through the frameworks embedded in the application and # removes unused architectures. find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK do FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable) FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME" echo "Executable is $FRAMEWORK_EXECUTABLE_PATH" strip_invalid_archs "$FRAMEWORK_EXECUTABLE_PATH" done
修改Build Settings设置
在TARGETS下选择编译的目标配置,切换到Build Settings选项卡,修改配置如下:
注意: 在使用旧版本的Unity工具,Windows下生成的Xcode工程,可能会出现下面的问题: Build Settings选项卡, Search Paths -> Library Search Paths 其中一个路径分隔符,是"\", 需要修改为"/"。
修改如下:
2. 注意事项
如果Unity SDK是手动配置的话,下面还有几个问题需要注意:
2.1 Bitcode
如果在编译Xcode时,提示bitcode问题,则关闭bitcode或者在Unity里也配置好支持bitcode。
Unity 4.6.9之前的版本不支持bitcode的设置,但是生成的Xcode工程,使用Xcode7打开就会提示bitcode的错误,因为Xcode7默认是开启bitcode的。
3 隐私权限及相关设置
iOS 10要求开发者添加权限申请的描述,否则程序在iOS 10上会出现崩溃。开发者需要用到语音消息,那么就应该添加麦克风权限申请的描述。有两种方式可以添加:
在Unity的最新版本中,Player Settings页面中就可以添加描述信息。
在Xcode项目中找到info.plist,打开并添加以下键值对:
key:Privacy - Microphone Usage Description
value: 是否允许此app使用麦克风?