集成方式

开发准备

SDK内容

libs 目录根据平台存放云信动态库,nim 目录下是云信SDK对外提供的接口头文件。云信SDK提供 c 和 c++ 接口文件,c接口文件位于nim/c目录中,c++接口文件位于nim/cpp目录中,在cocos-2dx游戏中推荐使用c++ 接口,开发效率更高。接口根据功能模块存放在不同的目录中:

nim: 即时通信相关接口

nim_audio :语音功能相关接口

nim_chatroom: 聊天室相关接口

快速接入SDK

  1. 下载并导入SDK

    • 下载网易云信cocos-2dx SDK压缩包,目前仅支持c/c++。

    • 创建Cocos2d-x 工程

      使用 cocos 命令创建工程 cocos new -p <package name\> -l cpp <project name\>,创建工程目录。 如:

      cocos new -p org.cocos2dx.nim_cocos2d -l cpp nim_cocos2d

    • 导入SDK

      将云信SDK压缩包解压后拷贝到创建的cocos项目内。

  2. Android 集成

    • 使用 Android Studio 打开创建的 cocos 项目中 proj.android-studio 目录

    • 导入jar包

      在运行SDK目录中libs/Android 目录下包含两个jar包:nim_sdk.jar 和 nim_audio.jar。nim_sdk.jar 是云信SDK必须的,需要确保正确引入项目中,nim_audio.jar 在使用语音功能时会用到。

    • 权限配置

      云信SDK需要使用以下权限:

        <!-- 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"/>

      需要在AndroidManifest.xml文件中确保已经配置了这些权限。

    • 编译链接

      修改 Android Studio工程目录中的Android.mk文件,将云信SDK引入工程,假设SDK目录为nim_cocos2d-x_sdk。

      加入预编译动态库:

        #import nim c library
        include $(CLEAR_VARS)
        include $(MY_ROOT_PATH)/nim_cocos2d-x_sdk/libs/Android/Android.mk

      编译云信SDK c++ 代码:

        # _NIM_CPP_LIBRARY_BEGIN
      
        include $(CLEAR_VARS)
        include $(MY_ROOT_PATH)/nim_cocos2d-x_sdk/nim/cpp/third_party/jsoncpp/Android.mk
      
        include $(CLEAR_VARS)
        include $(MY_ROOT_PATH)/nim_cocos2d-x_sdk/nim/cpp/nim/Android.mk
      
        include $(CLEAR_VARS)
        include $(MY_ROOT_PATH)/nim_cocos2d-x_sdk/nim/cpp/nim_chatroom/Android.mk
      
        include $(CLEAR_VARS)
        include $(MY_ROOT_PATH)/nim_cocos2d-x_sdk/nim/cpp/nim_audio/Android.mk
      
        # _NIM_CPP_LIBRARY_END

      链接:

        LOCAL_STATIC_LIBRARIES += jsoncpp
        LOCAL_SHARED_LIBRARIES += nim
        LOCAL_SHARED_LIBRARIES += nim_chatroom
        LOCAL_SHARED_LIBRARIES += nim_audio
        LOCAL_SHARED_LIBRARIES += fjni_wrapper
        LOCAL_STATIC_LIBRARIES += nim_cpp nim_chatroom_cpp nim_audio_cpp

      以上代码中包含了即时通信、聊天室和语音模块,用户可以根据需要移除不需要的SDK功能。在开发时还需要设置LOCAL_C_INCLUDES 加入正确的头文件包含路径。

    • Proguard混淆配置

      请务必不要混淆网易云信SDK,如果工程设置了代码混淆,在工程的Proguard混淆文件proguard-rules.pro中加入以下配置:

      混淆配置

    • 添加初始化调用:

      修改 AppActivity.java 文件,在使用网易云信SDK之前,需要调用nim_sdk.jar包里的NIMSDK.init初始化接口进行必要的初始化工作,如下:

      SDK初始化

  3. Windows 集成

    • 引入云信SDK c++ 项目

      在cocos工程中添加nim\cpp目录中各功能模块的的项目文件,并在cocos主项目中添加对这些项目的引用。

      添加Windows项目

    • 配置正确的头文件包含目录

    • 在程序运行时需要将SDK目录libs\Windows\x86下的dll文件拷贝到程序执行目录,可以根据功能模块选择需要的dll,不需要的模块可以不拷贝。

  4. iOS 集成

    SDK 只支持 Xcode7.x,不支持 Xcode6.x ,支持 iOS 7.0 以上版本。

    • 集成 SDK

      1) 将压缩包解压后,将nim_cocos2d-x_sdk目录拷贝到相应Cocos2d-x工程目录,找到~/nim_cocos2d-x_sdk/libs/iOS,拖到工程的 FrameWorks下,同时添加下系统库:libz.tbd(或libz.dylib)分别将~/nim_cocos2d_sdk/nim/cpp各子文件夹(nim、nim_audio、nim_chatroom)下找到需要的Xcode project,并将其拖入到Cocos Workspace中。若不需要音频和聊天室相关的功能,则不必添加其相应project.如图

      在cocos工程中链接相应的library。

      2) 设置相应的Header Search Paths,如图:

      3) 设置相应的Library Search Paths,如图:

      编译通过则集成工作就完成了。