跑通1对1娱乐社交(iOS)
更新时间: 2024/08/23 16:20:50
网易云信为您提供 1 对 1 娱乐社交场景的开源示例项目,您可以参考本文档快速跑通示例项目,体验 1 对 1 娱乐社交场景的最佳效果。
开发环境
在开始运行示例项目之前,请确保运行环境满足以下要求:
环境要求 | 说明 |
---|---|
iOS 版本 | 11.0 及以上的 iPhone 或者 iPad 真机 |
CPU 架构 | ARM64、ARMV7 |
IDE | XCode |
其他 | 安装 CocoaPods。 |
前提条件
请确认您已完成以下操作:
-
已配置RTC 和 IM 的消息抄送地址(http://yiyong-sg.netease.im/nemo/socialChat/nim/notify)
因为国内和海外的服务端地址不一样,所以消息抄送地址需要区分海外和国内。在出海场景中,请配置为
http://yiyong-sg.netease.im/nemo/socialChat/nim/notify
。
运行示例项目
-
1 对 1 娱乐社交的示例源码仅供开发者接入参考,实际应用开发场景中,请结合具体业务需求修改使用。
-
若您计划将源码用于生产环境,请确保应用正式上线前已经过全面测试,以免因兼容性等问题造成损失。
-
以下源码跑通无须部署服务端即可体验,请按照以下步骤设置客户端源码配置。
-
克隆示例项目源码仓库至您本地工程。
示例项目源码请存放至全英文的路径下。
-
打开终端,在
Podfile
所在文件夹中执行如下命令进行安装:pod install
-
完成安装后,通过 Xcode 打开
xxx.xcworkspace
工程。 -
在
OneOnOneSample/OneOnOneSample/AppKey.swift
中,替换您自己的 AppKey 和 AppSecret,设置服务区域(IS_OVERSEA) 。// MARK: 请填写您的AppKey和AppSecret let APP_KEY: String = "your appKey" // 请填写应用对应的AppKey,可在云信控制台的”AppKey管理“页面获取 let APP_SECRET: String = "your appSecret" // 请填写应用对应的AppSecret,可在云信控制台的”AppKey管理“页面获取 // MARK: 如果您的AppKey为海外,填ture;如果您的AppKey为中国国内,填false let IS_OVERSEA = true // MARK: 默认的BASE_URL地址仅用于跑通体验Demo,请勿用于正式产品上线。在产品上线前,请换为您自己实际的服务端地址 let BASE_URL: String = "https://yiyong.netease.im" //云信派对服务端国内的体验地址 let BASE_URL_OVERSEA: String = "http://yiyong-sg.netease.im" //云信派对服务端海外的体验地址
- 获取 AppKey 和 AppSecret 的方法请参见获取 AppKey。
IS_OVERSEA
的值请设置为ture
。- BASE_URL_OVERSEA 地址
https://yiyong-sg.netease.im
为云信派对服务端海外的体验地址,该地址仅用于体验 Demo,单次最大体验时长为1小时,请勿用于生产环境。
-
运行工程。
请使用两个手机运行工程,Demo 上才能显示用户列表,体验 1 对 1 聊天等功能。
示例项目结构
OneOnOne # 1V1 文件夹
├── OneOnOneSample # 1V1 示例工程文件夹
│ └── OneOnOneSample # 主工程文件夹
│ ├── Category # 主工程入口配置
│ └──AppKey # 主工程项目配置
│
├── OneOnOneKit # 1V1 基于NERTCCallkit的封装
│ ├── Engine # 引擎文件夹
│ │ ├── NEOneOnOne # 单例对象
│ │ ├── NEOneOnOne+Auth # 单例对象拓展登录接口相关
│ │ ├── NEOneOnOneKit+Rtc # 单例对象拓展RTC相关接口
│ │ ├── NEOneOnOneKit+Room # 单例对象拓展房间相关接口
│ │ └── NEOneOnOneKit+Message # 单例对象拓展消息相关接口
│ ├── Common # 内部通用工具文件夹
│ │ ├── NEOneOnOneKitConfig # 配置对象
│ │ ├── NEOneOnOneErrorCode # 错误码
│ │ ├── NEOneOnOneCommon # 枚举定义
│ │ └── NEOneOnOneCallback # 回调定义
│ ├── Public # 公开文件夹
│ │ ├── NEOneOnOneListener # 监听对象
│ │ └── NEOneOnOneAuthListener # 登录监听对象
│ ├── Log # 日志文件夹
│ │ └── NEOneOnOneLog # 日志处理
│ └──Private #私有文件夹
│ ├── NEOneOnOnePrivateModels # 模型定义
│ ├── Judge # 通用前置处理
│ ├── NSPointerArray+Extension # 数组分类
│ ├── NEOneOnOneRoomService # 房间服务
│ ├── NEOneOnOneMessageService # 消息服务
│ ├── NEOneOnOneDecoder # 解码文件
│ ├── NEOneOnOne+Codable # 编码文件
│ └── NEOneOnOneNetwork # 网络处理
├── OneOnOneUIKit # 1V1 UI层处理
│ ├── ViewModel # 模型定义
│ │ └── NEOneOnOneRoomListViewModel # 列表数据viewmodel
│ ├── NEOneOnOneUIManager # UI层管理入口
│ ├── Macro # 模型定义
│ │ └── NEOneOnOneUIKitMacro # 宏定义
│ ├── Engine # 模型定义
│ │ └── NEOneOnOneUIKitEngine # UI层引擎
│ ├── Utils # 工具类
│ ├── ViewController # 模型定义
│ NEOneOnOneCallViewController
│ │ ├── NEOneOnOneCallViewController # 1V1 主视图控制
│ │ └── NEOneOnOneRoomListViewController # 列表视图控制器
│ └── View # 视图层
│ ├── NEOneOnOneBottomPresentView # 底部弹出视图
│ ├── NEOneOnOneUserBusyView # 用户忙碌视图
│ ├── NEOneOnOneVideoConnectedView # 视频通话连接后视图
│ ├── NEOneOnOneVideoButtomView # 视频通话底部控制视图
│ ├── NEOneOnOneUILiveListCell # 列表Cell
│ ├── NEOneOnOneEmptyListView # 列表空数据视图
│ ├── NEOneOnOneConnectingView # 呼叫中视图/音频通话中视图
│ ├── NEOneOnOneAudioButtomView # 音频通话底部控制视图
│ └── NEOneOnOneCustomButtonView # 自定义按钮视图
│ └── OneOnOneUIKit # 1V1 UI层处理
│
└── OneOnOneChatUIKit # 1V1 消息系统
├── Engine # 引擎定义
│ ├── NEOneOnOneChatRegisterEngine # 1V1 消息系统 单例对象以及路由跳转控制器
│ └── NEOneOnOneCustomAttachment # 1V1 消息系统 自定义对象解析器
├── View # 视图定义
│ ├── NEOneOnOneCustomMsgView # 1V1 消息系统 自定义消息页面View
│ ├── NEOneOnOneNavigationItemView # 1V1 消息系统 自定义导航中心视图UI
│ ├── NEOneOnOneAudioInputingView # 1V1 消息系统 自定义音频输入页面
│ ├── NEOneOnOnePushSettingView # 1V1 消息系统 自定义消息通知UI
│ ├── NEOneOnOneChatHotTopicsView # 1V1 消息系统 热聊话题UI
│ ├── NEOneOnOneCustomChatCell # 1V1 消息系统 自定义消息Cell :对于自定义UIView NEOneOnOneCustomMsgView 封装一层
│ ├── NEOneOnOneConversionCell # 1V1 消息系统 自定义消息列表Cell
│ ├── NEOneOnOneBottomCustomView # 1V1 消息系统 自定义底部视图
│ ├── NEOneOnOneReportView # 1V1 消息系统 自定义举报视图
│ └── NEOneOnOneHeaderView # 1V1 消息系统 自定义导航栏
├── Controller # 控制器定义
│ ├── NEOneOnOneAlertViewController # 1V1 消息系统 警告框
│ ├── NEOneOnOneChatP2PViewController # 1V1 消息系统 聊天详情页
│ └── NEOneOnOneConversationsViewController # 1V1 消息系统 聊天列表页
└── Utils # 工具定义
├── NEOneOnOneChatUtils # 1V1 消息系统 文本,图片加载方法定义
├── NEOneOnOneChatMacro # 1V1 消息系统 宏定义
└── NEOneOnOneMessageUtil # 1V1 消息系统 消息内容处理方法
常见问题处理
install 时提示 “Compiling for iOS 11.0, but module SnapKit has a minimum deployment target of iOS 13.0”
问题现象
使用 Xcode 14.3 版本,执行 pod install
导入库文件时,提示类似如下错误。
编译时,提示 file not found
。
问题解决
-
在终端执行如下命令进入 Xcode 的安装目录。
cd /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/
-
在终端执行如下命令创建 arc 文件夹,并克隆
Libarclite-Files.git
文件到arc。sudo mkdir arc cd arc sudo git clone https://github.com/kamyarelyasi/Libarclite-Files.git .
-
设置 arc 文件夹的文件权限。
sudo chmod +x *
-
通过 Xcode 打开 Pods > Target Support Files > Pods-Runner 或 Pods-App > Pods-Runner-frameworks.sh 或 Pods-App-frameworks.sh,将
source="$(readlink "${source}")"
替换为source="$(readlink -f "${source}")"
。