浏览 SDKs · iOS
SDKsiOS

按运行环境接入

在 iOS 真机、模拟器和应用生命周期中配置并初始化 OpenIM SDK。

复制

运行环境选择

OpenIM iOS SDK 使用同一组 Objective-C API 支持 iPhone、iPad、真机和模拟器。不同环境的主要差异是网络地址、数据目录、系统权限和应用生命周期,而不是业务 API。

环境接入重点
模拟器服务地址必须能从模拟器访问;不能把服务端容器内地址当作客户端地址。
真机验证 Wi-Fi 与移动网络、TLS 证书、后台恢复和系统权限。
Objective-C 工程直接导入 OpenIMSDK 并调用公开 selector。
Swift 工程通过 Objective-C module 使用同一 SDK;delegate 方法遵循自动桥接名称。

配置并初始化 SDK

应用生命周期内只初始化一次。dataDir 不传时使用 SDK 默认目录;正式环境应降低日志输出并避免记录 Token。

OIMInitConfig *config = [OIMInitConfig new];
config.platform = iPhone;
config.apiAddr = apiAddr;
config.wsAddr = wsAddr;
config.logLevel = 4;
config.isLogStandardOutput = NO;

BOOL accepted = [[OIMManager manager]
    initSDKWithConfig:config
    onConnecting:nil
    onConnectFailure:nil
    onConnectSuccess:nil
    onKickedOffline:nil
    onUserTokenExpired:nil
    onUserTokenInvalid:nil];

此处以 nil 突出运行环境配置;正式应用应传入稳定 callback,并由应用级会话对象统一处理连接状态。accepted 只表示初始化请求是否被 SDK 接受;连接是否可用以 onConnectSuccess 为准。完整的连接与 Token callback 实现见认证与管理登录会话

参数说明

字段类型说明
platformOIMPlatform当前客户端平台,iPhone 使用 iPhone;iPad 使用 iPad
apiAddrNSString *OpenIMServer HTTP API 地址。
wsAddrNSString *OpenIMServer WebSocket 地址。
dataDirNSString *可选的本地数据目录。
logLevelNSIntegerSDK 日志级别。
isLogStandardOutputBOOL是否输出 SDK 核心日志。

生命周期边界

  • 不要在每个 View Controller 中重复初始化或登录;由应用级会话对象持有状态。
  • 页面出现和消失只负责添加、移除该页面拥有的业务 delegate,不应销毁 SDK。
  • 用户主动退出时调用 logoutWithOnSuccess:onFailure:;应用最终不再使用 SDK 时才调用 unInitSDK
  • OIMManager 已监听 UIApplicationDidEnterBackgroundNotificationUIApplicationWillEnterForegroundNotification 和网络可达性变化,并在内部调用 Open_im_sdkSetAppBackgroundStatusOpen_im_sdkNetworkStatusChanged
  • 业务层不需要重复监听同一组系统事件,也不应再次手动调用 Core 函数;重复上报可能让连接恢复与前后台状态难以排查。应用只需按自身产品逻辑管理页面任务、系统权限和连接状态展示。

验证与排查

  • 在模拟器和至少一台真机验证 apiAddrwsAddr 和 TLS 证书。
  • 确认初始化被接受,并在调用业务 API 前收到连接成功 callback。
  • 验证断网恢复、前后台切换、Token 过期和被踢下线场景。
  • 使用发布配置验证日志级别、数据目录和隐私权限。

下一步