OpenIM 文档 • OpenIM 服务器 • openim-sdk-ios • openim-sdk-core
OpenIM iOS Demo是一套基于Open-IM SDK实现的UI组件,包含对话、聊天、关系链、群组等功能。基于UI组件,您可以快速构建自己的业务逻辑。
开发环境要求
Xcode 15 及以上版本
最低部署目标是 iOS 13.0。
git 克隆:
https :/ / github . com / OpenIMSDK / Open - IM - iOS - Demo . git
在终端执行以下命令安装依赖库。
cd Open - IM - iOS - Demo / Example
pod install
如果安装失败,执行以下命令更新本地CocoaPods仓库列表。
pod repo update
编译运行:进入Open-IM-iOS-Demo/Example文件夹,打开OpenIMSDKUIKit.xcworkspace进行编译运行。
体验自己的服务器 6.1 如果您自己部署了 OpenIM Server,可以修改 AppDelegate.swift 文件中的服务器地址为自己搭建的服务器地址;
6.2 下载App后,在【登录】页面点击“欢迎使用OpenIM”进入设置页面,进行相关设置,保存后重新启动即可使用。
开始开发! ?
常用的聊天软件都是由会话列表、聊天窗口、好友列表、音视频通话等几个基本界面组成,参考以下步骤,只需要几行代码就可以在项目。
第一步:修改自己的服务器IP地址:
AppDelegate.swift
// Default IP address to be used
let defaultHost = "" ; // Replace with the desired host
第2步:登录
- 登录自己的业务服务器获取userID和token;
- 使用1.获取登录IM服务器的userID和token;
// 1 : Log in to your own business server to obtain userID and token ;
static func loginDemo ( phone : String , pwd : String , completionHandler : @escaping ( ( _ errMsg : String? ) -> Void ) ) {
let body = JsonTool . toJson ( fromObject : Request . init ( phoneNumber : phone , pwd : pwd ) ) . data ( using : . utf8 )
var req = try! URLRequest . init ( url : "your login api" , method : . post )
req . httpBody = body
Alamofire . request ( req ) . responseString { ( response : DataResponse < String > ) in
switch response . result {
case . success ( let result ) :
if let res = JsonTool . fromJson ( result , toClass : Response . self ) {
if res . errCode == 0 {
completionHandler ( nil )
// log in to the IM server
loginIM ( uid : res . data . userID , token : res . data . token , completionHandler : completionHandler )
} else {
completionHandler ( res . errMsg )
}
} else {
let err = JsonTool . fromJson ( result , toClass : DemoError . self )
completionHandler ( err? . errMsg )
}
case . failure ( let err ) :
completionHandler ( err . localizedDescription )
}
}
}
static func loginIM ( uid : String , token : String , completionHandler : @escaping ( ( _ errMsg : String? ) -> Void ) ) {
IMController . shared . login ( uid : uid , token : token ) { resp in
print ( "login onSuccess ( String(describing: resp))" )
completionHandler ( nil )
} onFail : { ( code : Int , msg : String? ) in
let reason = "login onFail: code ( code), reason ( String(describing: msg))"
completionHandler ( reason )
}
}
第三步:构建对话列表、聊天窗口、通讯录界面、设置:
// session list
let chat = ChatListViewController ( )
// chat window
let message = MessageListViewController ( )
// address book
let contactVC = ContactsViewController ( )
// set up
let mineNav = MineViewController ( )
我们希望任何人都参与我们的社区并贡献代码,我们提供礼物和奖励,我们欢迎您每周四晚上加入我们。
我们的会议在 OpenIM Slack 中,那么您可以搜索 Open-IM-Server pipeline 加入
我们在 GitHub 讨论中记录每两周一次的会议记录,我们的历史会议记录以及会议重播可在 Google Docs 上找到。
查看我们的用户案例研究页面,获取项目用户列表。请随时发表评论并分享您的用例。
此存储库根据 GNU Affero 通用公共许可证版本 3 (AGPL-3.0) 获得许可,并受以下附加条款的约束。详情请参阅此处。