IM 即时通讯
iOS
产品介绍
简介
主要功能
产品优势
功能介绍
帐号集成与登录
基础消息功能
群组功能
聊天室功能
聊天室标签功能
圈组功能
多端登录与互踢策略
质量数据监控台
海外数据中心
IM平滑迁移方案
接口及业务限制
更新日志
IM UIKit 更新日志
NIM SDK 开发版更新日志
NIM SDK 稳定版更新日志
体验 Demo
下载 SDK 与 Demo 源码
快速开始
跑通 IM Demo 源码
跑通圈组 Demo 源码
实现单聊消息收发(不含 UI)
实现圈组消息收发(不含 UI)
含 UI 集成
什么是 IM UIKit
IM UIKit 功能概览
快速集成 IM UIKit
组件导入
初始化与登录
界面跳转
自定义用户信息
会话列表相关
集成会话列表界面
自定义会话列表 UI
会话列表 API 概览
会话消息相关
集成会话消息界面
实现地理位置消息功能
实现音视频通话
实现自定义消息收发
自定义会话消息 UI
会话消息 API 概览
通讯录相关
集成通讯录界面
自定义通讯录 UI
通讯录 API 概览
IM UIKit API 概览
不含 UI 集成
集成 SDK
初始化
登录相关
登录 IM
多端登录与互踢
登出 IM
消息相关
消息概述
消息收发
自定义消息收发
消息配置选项
NOS 资源场景
广播消息收发
消息已读回执
消息撤回
消息重发与转发
消息更新
消息过滤
语音消息处理
本地消息插入
历史消息
最近会话
服务端会话服务
用户资料
用户关系
在线状态订阅
系统通知
离线推送
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
聊天室
圈组功能
圈组概述
登录管理
服务器相关
服务器概述
服务器管理
服务器成员管理
游客功能
服务器未读数管理
频道相关
频道概述
频道管理
频道黑白名单
实时互动频道
频道分组
频道分组黑白名单
频道未读数管理
搜索服务器与频道
身份组相关
身份组概述
身份组应用场景
服务器身份组
频道身份组
频道分组身份组
用户定制权限
自定义权限项
成员权限查询与判定
身份组相关查询
圈组订阅机制
圈组消息相关
图解圈组消息流转
圈组消息收发
圈组消息撤回
圈组消息更新
圈组消息删除
消息正在输入
会话消息回复(Thread)
圈组快捷评论
圈组消息缓存
圈组消息搜索
查询历史消息
查询@我的消息
圈组系统通知相关
圈组系统通知概述
圈组系统通知收发
圈组系统通知更新
圈组离线推送
圈组内容审核
圈组第三方回调
圈组相关抄送
圈组各端接口命名差异
反垃圾
聊天扩展
其他
最佳实践
IM 登录最佳实践
聊天室重要消息投递
参考文档
iOS PushKit 配置
iOS苹果推送配置
API 参考
iOS SDK API
iOS SDK 状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
开通聊天室功能
配置客户端应用标识
常见问题
FAQ
错题集
iOS 推送问题排查
服务协议

集成 SDK

更新时间: 2023/02/13 17:02:33

本文介绍如何快速将网易云信 IM SDK(NetEase Instant Messaging SDK,NIM SDK)集成到您的 iOS 项目中。

开发环境要求

开发环境需满足 iOS 8.0 及以上版本,可使用 iPhone/iPad 真机或模拟器。

集成步骤

步骤 1:新建项目(可选)

点击查看如何新建项目,若需集成到已有项目,可忽略此步骤 1. 启动 Xcode,在左上角选择File > New > Project
2. 在出现的工作表中,选择 iOS 平台,并在 Application 下选择 App
3. 配置新建项目,完成后,单击 Next
必须填写 Product NameOrganization Identifier
4. 选择项目存储路径,单击 Create 创建项目。
新建项目

步骤2:集成 SDK

云信即时通讯 NIM SDK 支持以下两种集成方式,您可按需选择。

  • 通过 CocoaPods 自动集成 NIM SDK(推荐)。

  • 手动集成 NIM SDK。

CocoaPods 集成

  1. 安装 CocoaPods 后,在项目所在目录下执行以下命令,创建 Podfile 文件。

    pod init
    
  2. 在 Podfile 文件中添加对应的资源。

    CocoaPods集成资源关键词说明:

    关键词 所含资源
    NIMSDK_LITE IM 即时通讯,默认引入网易对象存储(NetEase Object Storage,NOS)文件存储能力
    NIMSDK_LIET/FCS IM 即时通讯,默认引入 AWS S3 文件存储能力
    NIMKit NIMSDK_LITE+NIM_iOS_UIKit+特定版本的第三方依赖库
    NIMKit/Lite_Free NIMSDK_LITE+NIM_iOS_UIKit+不限制版本的第三方依赖库

    如只需要即时通讯功能(NOS),且不需NIM_iOS_UIKit组件,可在Podfile中写入:

        pod 'NIMSDK_LITE' 
    
  3. 执行以下命令更新本地仓库,查看版本信息。最新版本信息请参见更新日志

        pod search NIMSDK_LITE   //本地仓库中查询资源的版本信息
        pod repo update          //更新本地仓库
    
  4. 执行以下命令安装 SDK:

        pod install
    

手动集成

  1. 下载对应的 SDK。

    Framework 说明
    NIMSDK IM 即时通讯基础功能
    NIMNOS NOS 文件存储能力,需要与 NIMSDK 一起使用(不能与 NIMFCS 一起使用)
    NIMFCS AWS S3 文件存储能力,需要与 NIMSDK 一起使用(不能与 NIMNOS 一起使用)
    • NIMSDK 需要与 NIMNOS 或者 NIMFCS 搭配使用,无法单独使用。
      • 若开发者服务的对象在国内,则使用 NIMSDK 和 NIMNOS Frameworks。
      • 若开发者服务的对象在海外,需要 AWS S3 文件存储能力,那么使用 NIMSDK 和 NIMFCS Frameworks。
    • NIMNOS 和 NIMFCS 无法同时使用。
  2. 将解压得到的 framework 文件拷贝到工程项目文件夹下。

  3. 选择 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content 菜单,添加对应的 framework 文件,并将 Embed 属性设置为 Embed & Sign,以使得 SDK 动态库和应用签名保持一致。至此,SDK 导入完成。

后续步骤

完成 SDK 集成后,需进行初始化

相关参考

Demo 参考

云信在 Github 上提供了开源的 IM Demo,为您后续的 IM 集成提供参考。

核心 API 列表

您可在 iOS SDK API 了解 SDK API 的调用方式和通知方式,并查看核心 API 列表和核心类列表。

常见问题

为什么打包失败?

手动集成 SDK 时,由于库包含模拟器版本,可能会导致打包失败。所以需要在打包之前去掉模拟器版本。

  1. 在工程里创建 nim_strip_archs.sh 脚本到指定目录,如 Supporting Files
  2. Build Phases 中增加过程,类型为 New Run Script Phase
  3. 在工程里添加以下内容。如/bin/sh "${SRCROOT}/NIMDemo/Supporting Files/nim_strip_archs.sh"
    /bin/sh 您的脚本路径
    
  4. 将以下内容复制到脚本中。
    #!/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
    
此文档是否对你有帮助?
有帮助
我要吐槽
  • 开发环境要求
  • 集成步骤
  • 步骤 1:新建项目(可选)
  • 步骤2:集成 SDK
  • CocoaPods 集成
  • 手动集成
  • 后续步骤
  • 相关参考
  • Demo 参考
  • 核心 API 列表
  • 常见问题
  • 为什么打包失败?