Giter Site home page Giter Site logo

easemob-demo-ios's Introduction

产品介绍

环信新版本UIKit Demo:打造卓越聊天体验的强大工具

全面功能,产品化体验

环信UIKit Demo为您提供全面的聊天功能,助力您轻松构建功能强大、产品化的聊天体验。从基本的文字消息到高级的群组互动,我们的Demo涵盖了所有市场通用能力,让您能够满足用户的各种聊天需求。

开箱即用,快速集成

我们的Demo经过精心设计,可轻松集成到您的现有应用程序中。清晰的代码结构和详尽的文档让您能够快速上手,无需繁琐的配置和开发工作。

应用服务器示例代码,简化集成

为了进一步简化集成过程,我们提供了完整的应用服务器示例代码,展示了如何将您的应用程序连接到环信IM后端。这将帮助您轻松实现聊天功能的部署和运行。

功能亮点:

流畅的实时消息传递 语音和视频通话 文件共享 群组聊天 线程讨论 群组成员管理 消息提醒 可定制界面 预配置的聊天功能 应用服务器示例代码

立即体验环信新版本UIKit Demo,开始构建您的梦想聊天应用程序吧!

产品体验

前置环境需求

  • Xcode 15.0及以上版本 原因是UIKit中使用了部分检测音频AVAudioApplication api适配iOS17以上系统
  • 最低支持系统:iOS 13.0
  • 请确保您的项目已设置有效的开发者签名

可以使用 CocoaPods 安装 EaseChatUIKit 作为 Xcode 项目的依赖项。

在podfile中添加如下依赖

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '13.0'

target 'YourTarget' do
  use_frameworks!

  pod 'EaseChatUIKit'
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
    end
  end
end

然后cd到终端下podfile所在文件夹目录执行

    pod install

⚠️Xcode15编译报错 Sandbox: rsync.samba(47334) deny(1) file-write-create...

解决方法: Build Setting里搜索 ENABLE_USER_SCRIPT_SANDBOXINGUser Script Sandboxing改为NO

跑通Demo

  1. 注册环信应用

  2. 将Appkey填入PublicFiles.swift文件中的AppKey

  3. 需要将服务端源码部署后填入PublicFiles.swift文件中的ServerHost中,手机号验证码暂时可以跳过,可以使用手机号后六位当验证码,服务端中的Appkey 要跟客户端的Appkey保持一致。Appserver主要提供了手机号验证码登录接口以及上传用户头像的接口,此接口主要的职能是根据用户的信息注册并生成EaseChatUIKit登录所需的token或者使用已注册的用户信息生成EaseChatUIKit登录所需的token,上传头像是一个普通的通用功能在此不过多赘述。

  4. 点击运行至目标设备上(注意:不支持arm模拟器,需要选择Rosetta模拟器或者真机)

EaseChatUIKit在Demo中的使用

1. 初始化

详情参见didFinishLaunchingWithOptions方法中步骤。

2. 登录

详情参见loginRequest方法后续步骤

3. Provider使用及其最佳示例用法

如果您的App中已经有完备的用户体系以及可供展示的用户信息(例如头像昵称等。)可以实现EaseChatProfileProvider协议来提供给UIKit要展示的数据。

3.1 Provider初始化详情参见viewDidLoad方法中

3.2 实现Provider协议对MainViewController类的扩展参见下述示例代码

extension MainViewController: EaseProfileProvider,EaseGroupProfileProvider {

}

4.集成EaseChatUIKit中的类进行二次开发

4.1 如何继承EaseChatUIKit中的可自定义的类

参见IntegratedFromEaseChatUIKit文件夹

4.2 如何将继承EaseChatUIKit中子类注册进EaseChatUIKit中替换父类

详情参见didFinishLaunchingWithOptions方法

Demo设计

浏览器中打开如下链接 https://www.figma.com/community/file/1327193019424263350/chat-uikit-for-mobile

已知问题

  1. callkit 群聊呼叫用户会产生一条单聊消息,即便对方不是您的好友,后续会改进,也可以用户自己使用群聊中的定向消息自己做信令。

  2. 会话列表、联系人列表是单独的模块,如果想要监听好友事件需要初始化ContactViewModel后调用registerListener方法监听。

  3. UserProvider以及GroupProvider需要用户自己实现,用于获取用户的展示信息以及群组的简要展示信息,如果不实现默认用id以及默认头像。

  4. 换设备或者多设备登录,漫游的会话列表,环信SDK中没有本地存储的群头像名称等显示信息,需要用户使用Provider提供给UIKit才能正常显示。

  5. 由于Provider的机制是停止滚动或者第一页不满10条数据时触发,所以更新会话列表以及联系人列表UI显示的昵称头像需要滑动后Provider提供给UIKit数据后,UIKit会刷新UI。

  6. 不支持arm模拟器,因为音频录制库使用libffmpeg的wav转amr的库。

Q&A

如有问题请联系环信技术支持或者发邮件到[email protected]

推送角标后台更新以及推送达到率统计

easemob-demo-ios's People

Contributors

zjc19891106 avatar lixm1988 avatar

Stargazers

HJ7118 avatar StevieJiang avatar 张超 avatar 王峰 avatar  avatar LiuYimin avatar ngn999 avatar Geek Duan avatar  avatar Fan'小柒 avatar brownfeng avatar  avatar  avatar 秋叶红-90 avatar will avatar legendakangr avatar  avatar kernel avatar Geek__Lee avatar 么了 avatar 张冲 avatar 赵亮 avatar

Watchers

赵贵斌 avatar James Cloos avatar Alex Chen (陈小弟) avatar 杜洁鹏 avatar Johnson avatar 崔永强 avatar 李玉召 avatar 赵亮 avatar 徐正礼 avatar 不回头的倔强 avatar 刘吉南 avatar  avatar

easemob-demo-ios's Issues

swift两协议方法冲突

swift 同时遵守EMMultiDevicesDelegate,EMClientDelegate协议,添加代理的时候,都是调用EMClient.shared().add(self, delegateQueue: nil) ,导致报错Ambiguous use of 'add(_:delegateQueue:)'

xcode14 m1 头文件报错

截屏2023-04-26 17 31 37

一直报'EaseIMKit/EaseIMKit.h' file not found 这个错误 可以点进去文件 我看他们的回答试了一下不行 希望可以得到回答解决一下

语言可以转换成中文吗?

我允行demo之后发现语言环境是英文的,我在info中修改成中文,也没有成功。所以我想咨询一下,demo中是只支持英文环境的吗?还是可以改成中文环境?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.