有奖捉虫:行业应用 & 管理与支持文档专题 HOT
本文主要介绍如何快速将腾讯云即时通信 IM SDK 集成到您的 iOS 项目中。

开发环境要求

Xcode 9.0+。
iOS 8.0 以上的 iPhone 或者 iPad 真机。
项目已配置有效的开发者签名。

集成 IM SDK

您可以选择使用 CocoaPods 自动加载的方式,或者先 下载 SDK,再将其导入到您当前的工程项目中。

CocoaPods 自动加载

1. 安装 CocoaPods

在终端窗口中输入如下命令(需要提前在 Mac 中安装 Ruby 环境):
sudo gem install cocoapods

2. 创建 Podfile 文件

进入项目所在路径输入以下命令行,之后项目路径下会出现一个 Podfile 文件。
pod init

3. 编辑 Podfile 文件

请您按照如下方式设置 Podfile 文件:
platform :ios, '8.0'
source 'https://github.com/CocoaPods/Specs.git'
?
target 'App' do
# 添加 IM SDK
pod 'TXIMSDK_Plus_iOS'
# pod 'TXIMSDK_Plus_iOS_XCFramework'
# pod 'TXIMSDK_Plus_Swift_iOS_XCFramework'
?
# 如果您需要添加 Quic 插件,请取消下一行的注释
# 注意:
# - 这个插件必须搭配 TXIMSDK_Plus_iOS 或 TXIMSDK_Plus_iOS_XCFramework 版本的 IM SDK 使用,并且插件版本号必须和 IM SDK 版本号相同
# - 对于 TXIMSDK_Plus_Swift_iOS_XCFramework 版本,不需要添加这个插件,如果您需要在这个版本中使用 Quic 功能,请您联系我们
# pod 'TXIMSDK_Plus_QuicPlugin'
end

4. 更新并安装 SDK

在终端窗口中输入如下命令以更新本地库文件,并安装 TXIMSDK:
pod install
或使用以下命令更新本地库版本:
pod update
pod 命令执行完后,会生成集成了 SDK 的 .xcworkspace 后缀的工程文件,双击打开即可。
说明:
若 pod 搜索失败,建议尝试更新 pod 的本地 repo 缓存。更新命令如下:
pod setup
pod repo update
rm ~/Library/Caches/CocoaPods/search_index.json
Quic 插件,提供 axp-quic 多路传输协议,弱网抗性更优,网络丢包率达到 70% 的条件下,仍然可以提供服务。仅对旗舰版用户开放,对于非旗舰版,请购买旗舰版套餐包,详见 价格说明。为确保功能正常使用,请将终端 SDK 更新至 7.7.5282 及其以上的版本。
如果您需要在 Swift 版本的 IMSDK 中使用 Quic 功能,请您联系我们
注意:
若您进行上述操作后仍遇到问题,欢迎查阅 Xcode 15 常见问题

手动集成

1. 下载 SDK

Github 下载最新版本 SDK。
ImSDK_Plus.framework 是 IM SDK 的核心动态库文件。
包名
介绍
ImSDK_Plus.framework
增强版 IM 功能包

2. 创建工程

创建一个新工程
?
填入工程名(例如 IMDemo):
?
?

3. 集成 IM SDK

添加依赖库:选中 IMDemo 的 Target,在 General 面板中的 Embedded Binaries Linked Frameworks and Libraries 添加依赖库 ImSDK_Plus.framework。
?
设置链接参数:Build Setting > Other Linker Flags 添加 -ObjC
说明:
手动集成需要在 TARGET > General > Frameworks > Libraries and Embedded Content,将 ImSDK_Plus.framework 修改为 Embed&Sing。
如果您需要添加 Quic 插件,请参考前面的步骤,手动下载集成 Quic 插件。

引用 IM SDK

项目代码中使用 SDK 有两种方式:

方式一

在 Xcode > Build Setting > Header Search Paths 设置 SDK 头文件的路径,然后在项目需要使用 SDK API 的文件里,引入具体的头文件。
#import "ImSDK_Plus.h"

方式二

在项目需要使用 SDK API 的文件里,引入具体的头文件。
#import <ImSDK_Plus/ImSDK_Plus.h>

Xcode15 集成常见问题

1. [Xcodeproj] Unknown object version (60). (RuntimeError)

?
?
?
使用Xcode15创建新工程来集成 SDK 时,输入pod install 后,可能会遇到此问题,原因是使用了较旧版本的CocoaPods ,此时有两种解决办法:
解决方式一: 修改 Xcode 工程的 Project Format 版本。
?
?
?
解决方式二: 升级本地的 CocoaPods 版本,升级方式本文不再赘述。
您可以在终端输入 pod --version 查看当前的 Pods 版本。

2. Xcode 15 开发者沙盒选项问题

Sandbox: bash(xxx) deny(1) file-write-create
?
image.png
?
?
当您使用 Xcode 15 创建一个新工程时, 可能会因为此选项导致编译运行失败,建议您关闭此选项。

?
?
?

其他常见问题

1. 上架 Appstore 时打包失败,提示 Unsupported Architectures。

问题现象如下图,打包时提示 ImSDK_Plus.framework 中包含了 Appstore 不支持的 x86_64 模拟器版本。该问题是由于 IMSDK 为了方便开发者调试,发布时会默认带上模拟器版本。
?
?
?
您可以按照下面的步骤,在打包时去掉模拟器版本:
1. 选中您工程的 Target,并点击 Build Phases 选项,在当前面板中添加 Run Script
?
2. 在新增的 Run Script 中,添加如下脚本:
#!/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
?
?


http://www.vxiaotou.com