ios 集成html5 sdk,iOS SDK 快速集成
iOS SDK 快速集成
在您阅读此文档时,我们假定您已经具备了基础的 iOS 应用开发经验,并能够理解相关基础概念,最新版本的SDK 只支持 iOS9 及以上 iOS 系统版本。
注:此文档对之前的文档进行了优化,结构更清晰,帮助您更快的集成环信 iOS SDK,且对UI进行了改版优化。如果您已集成环信 iOS SDK ,并习惯于之前文档的结构,希望再次了解其集成方式,可参考之前的旧文档。
特殊提示:如果使用的是xcode11打包,那么需要先将环信SDK内的模拟器框架去掉,否则会报“IPA processing failed
“的错误。 (如何剔除SDK内的模拟器框架,见iOS SDK 快速集成中的'集成动态库上传AppStore')
DEMO 体验
注:更多Demo体验,请前往下载页
注册并创建应用
注册环信开发者账号并创建后台应用
Appkey:一个 APP 的唯一标识
IM 用户:一个 appkey 下的唯一标识用户,用来登录环信服务器进行收发消息的用户。
可以在创建好的应用内注册两个 IM 用户(也可以称为环信 id),例如: 账号:user1,密码:123 ; 账号:user2,密码:123,用来通过 SDK 登录环信服务器,收发消息测试。
在环信 Console 后台,点击创建好的应用 → IM 用户 → 创建 IM 用户
建议创建两个 IM 用户,用于后面集成 SDK 之后聊天使用。例如登录 user1 ,在初始化聊天页面时传入 user2 ,user1 给 user2 发消息测试。
iOS SDK 介绍
环信 SDK 为用户开发 IM 相关的应用提供的一套完善的开发框架。包括以下几个部分:
SDK_Core: 为核心的消息同步协议实现,完成与服务器之间的信息交换。
SDK: 是基于核心协议实现的完整的 IM 功能,实现了不同类型消息的收发、会话管理、群组、好友、聊天室等功能。
用户可以基于我们提供的 Demo 实现自己的应用,也可以基于 SDK 开发自己应用。
SDK 采用模块化设计,每一模块的功能相对独立和完善,用户可以根据自己的需求选择使用下面的模块:
EMClient: 是 SDK 的入口,主要完成登录、退出、连接管理等功能。也是获取其他模块的入口。
EMChatManager: 管理消息的收发,完成会话管理等功能。
EMContactManager: 负责好友的添加删除,黑名单的管理。
EMGroupManager: 负责群组的管理,创建、删除群组,管理群组成员等功能。
EMChatroomManager: 负责聊天室的管理。
注意:如果您是从 SDK2.x 升级到 3.0,可以参考环信 SDK 2.x到3.0升级文档。
集成 SDK
环信 SDK 支持pod 方式导入,手动导入两种方式任选其一即可,下面分别介绍两种导入方式。
从3.6.0版本开始,sdk只支持ios9.0及以上版本。
Pod 导入SDK
推荐使用 Cocoapods 集成环信 SDK。 Cocoapods 提供了一个简单的依赖管理系统,避免手动导入产生的错误(首先需要确认已经安装了 Cocoapods,如果没有安装过Cocoapods,参考安装使用指南:https://www.cnblogs.com/wangluochong/p/5567082.html)。
sudo gem install cocoapods
pod setup
在 Xcode 项目的根目录下,新建一个空文件,命名为 Podfile,向此文件添加以下行:
pod 'HyphenateChat'
在 Podfile 目录下,执行以下指令:
pod install --repo-update
执行完pod install,打开工程目录,找到.xcworkspace文件运行即可。
手动导入 SDK
HyphenateChat 开发使用SDK
开发者最开始集成,如果选择手动导入文件集成的方式,只需要向工程中添HyphenateChat就可以,下面会介绍具体的集成方式。
demo 中的SDK文件夹为Hyphenate SDK,将SDK 文件夹拖入到工程中,并勾选截图中标注的三项。
设置工程属性
Xcode中,向 General → Embedded Binaries 中添加依赖库。
注意要将'Do Not Embed'改成'Embed & Sign'
Demo 目录介绍
目录 EaseIM —>Class 中的 Demo 目录介绍
Account:主要是 demo 的注册,登录
AppDelegate:主要是 demo 中初始化环信SDK,注册推送等
Communicate:demo 的语音视频通话功能页面(包含 1v1 实时通话以及多人实时通话的功能)
Chat:demo 的聊天功能页面
Contact:demo 的好友功能页面
Conversation:demo 的会话列表功能页面
EaseIMHelper:demo 的单例类,主要是全局监听接收消息,好友,群组,聊天室等相关事件的回调,从而进行对应的处理
Group:demo 的群组功能页面
Helper:demo 的功能性文件,全局通用的配置
Home:demo 的根控制器页面
Notification:demo 的好友,群组相关请求通知的页面
Settings:demo 的功能设置页面
集成 UI
环信的 UI 模块在 demo 中的该路径下 EaseIM—Class
demo 中有几大 UI 功能模块,在集成时将对应的模块添加到工程中即可。
Helper——自定义库和页面,第三方库,全局通用模块
Chat——聊天模块
Conversation——会话列表模块
Communicate——实时音视频模块(包含 1v1 实时通话以及多人实时通话的功能)
Contact——好友列表模块
Group——群组模块
Chatroom——聊天室模块
在集成时,必须要先向自己的工程中导入 Helper 模块,然后在根据自己的需求导入其他模块。
环信的 UI 模块依赖于以下三方库:
Masonry
MJRefresh
MBProgressHUD
SDWebImage
FLAnimatedImage
保证这些三方库在自己的工程中存在。
注意:三方推荐使用 pod 方式导入,手动导入需要修改 info.plist 重复等报错。
增加隐私权限
在工程info.plist文件中增加隐私权限
用于 Chat 聊天模块中发送图片,语音,视频,位置消息使用,如您的工程中已经添加过请忽略:
Privacy - Photo Library Usage Description 需要访问您的相册
Privacy - Microphone Usage Description 需要访问您的麦克风
Privacy - Camera Usage Description 需要访问您的摄像机
Privacy - Location Always Usage Description 需要您的同意,才能在使用期间访问位置
Privacy - Location When In Use Usage Description 需要您的同意,才能始终访问位置
添加SDK以及UI头文件
建议在 PCH 文件中引入 SDK 以及 UI 的头文件。如果工程中没有 pch 文件,需要新建一个,并在 Build Settings 中设置 Prefix Header 为该 pch 文件,例如:iOS/PrefixHeader.pch。
在 pch 文件文件中添加如下代码:
#ifdef __OBJC__
#import
// UI 头文件
#import "EMHeaders.h"
#endif
如果自己工程中的 pch 文件还引入了其他的头文件,那么所有的头文件都需要放到。
#ifdef __OBJC__
// 存放 pch 文件中所有的头文件
#endif 的内部
初始化及登录
初始化 SDK 以及登录环信服务器
初始化 SDK
在工程的 AppDelegate 中的以下方法中,调用 SDK 对应方法。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// appkey替换成自己在环信管理后台注册应用中的appkey
EMOptions *options = [EMOptions optionsWithAppkey:@"appkey"];
// apnsCertName是证书名称,可以先传nil,等后期配置apns推送时在传入证书名称
options.apnsCertName = nil;
[[EMClient sharedClient] initializeSDKWithOptions:options];
return YES;
}
登录环信服务器
建议使用异步登录方法,防止网络不好的情况下,出现卡UI主线程的情况出现。
// 传入在应用(appkey)下注册的IM用户user1,密码123,用于登录环信服务器
[[EMClient sharedClient] loginWithUsername:@"user1" password:@"123" completion:^(NSString *aUsername, EMError *aError) {
if (!aError) {
NSLog(@"登录成功");
} else {
NSLog(@"登录失败的原因---%@", aError.errorDescription);
}
}];如果在集成调试阶段,可以在初始化环信 SDK 完成之后,就调用登录方法。
如果项目上线,建议开发者在登录自己服务器成功之后,再调用环信 SDK 登录方法使用用户绑定的环信id登录环信服务器(开发者给自己用户在自己服务器创建账号的同时,调用环信的 rest 接口在给用户授权注册一个环信 id,一起返回给 app 端,app 端拿到用户的账号密码以及环信 id 密码分别登录自己的服务器以及环信服务器)。
初始化聊天页面
向工程中导入 Chat 文件
// ConversationId接收消息方的环信ID:@"user2"
// type聊天类型:EMConversationTypeChat 单聊类型
// createIfNotExist 如果会话不存在是否创建会话:YES
EMChatViewController *chatController = [[EMChatViewController alloc] initWithConversationId:@"user2" conversationType:EMConversationTypeChat createIfNotExist:YES];
[self.navigationController pushViewController:chatController animated:YES];
有导航的话,可以用 push 方式跳转到聊天页面发消息测试,也就是用登录的 user1 给 user2 发消息,没有导航的话,可以用 present 方式跳转到聊天页面。
集成实时音视频通话
向工程中导入 Communicate 文件
在初始化 SDK 完成之后,在初始化SDK所在的类引入头文件:
#import "SingleCallController.h" // 1v1实时通话功能的头文件
#import "ConferenceController.h" // 多人实时通话功能的头文件
添加:
[SingleCallController sharedManager]; // 初始化1v1实时通话功能的单例
[ConferenceController sharedManager]; // 初始化多人实时通话功能的单例
在聊天页面中下方,点击视频通话图标按钮即可使用。
集成其他模块
集成这些模块,涉及到一些回调方法的监听与页面的跳转,需要在初始化环信SDK之后,添加 [EMDemoHelper shareHelper];
会话列表
向工程中导入 Conversation 文件
头文件:#import “EMConversationsViewController.h”
初始化页面跳转(导航跳转示例):
EMConversationsViewController *conversationVC = [[EMConversationsViewController alloc] init];
[self.navigationController pushViewController:conversationVC animated:YES];
好友列表
向工程中导入 Contact 文件
头文件:#import “EMContactsViewController.h”
初始化页面跳转(导航跳转示例):
EMContactsViewController *contactVC= [[EMContactsViewController alloc] init];
[self.navigationController pushViewController:contactVC animated:YES];
群组
向工程中导入 Group 文件
头文件:#import “EMGroupsViewController.h”
初始化页面跳转(导航跳转示例):
EMGroupsViewController *groupVC= [[EMContactsViewController alloc] init];
[self.navigationController pushViewController:groupVC animated:YES];
聊天室
向工程中导入 Chatroom 文件
头文件:#import “EMChatroomsViewController.h”
初始化页面跳转(导航跳转示例):
EMChatroomsViewController *chatRoomVC= [[EMChatroomsViewController alloc] init];
[self.navigationController pushViewController:chatRoomVC animated:YES];
集成动态库上传AppStore
从3.7.4版本SDK开始支持bitcode打包,并且不再支持armv7,i386指令集,打包时需去除armv7指令。
Xcode11需在Build Settings - Valid Architectures 设置项去除armv7指令;
Xcode12需在Build Settings - Excluded Architectures 设置项添加armv7指令,若是iOS11以上无需此操作;
由于 iOS 编译的特殊性,为了方便开发者使用,我们将x86_64,arm64 两个平台都合并到了一起,所以使用动态库上传 appstore 时需要将x86_64 平台删除后,才能正常提交审核。
首先将SDK进行备份。因为剔除过SDK的项目只能真机运行,要想继续模拟器运行,要换回未剔除的SDK。
然后进入到Launchpad中,找到其他—打开终端,然后cd到SDK的所在目录。
简单的方式就是找到项目中的环信SDK,然后终端先输入cd,然后按空格键,将环信SDK拖拽到终端内,会自动生成SDK的路径,然后环信SDK名称.framework删除掉,不要cd到环信SDK,只cd到SDK所在的目录下即可。
示例:
比如环信SDK的路径是
/Users/easemob-dn0164/Desktop/iOS_IM_SDK_V3.6.0/HyphenateFullSDK/Hyphenate.framework
那么只需要cd到
/Users/easemob-dn0164/Desktop/iOS_IM_SDK_V3.6.0/HyphenateFullSDK/
就可以了。
后续在 SDK 当前路径下执行以下命令删除x86_64平台
实时音视频版本Hyphenate.framework
【首先进入Hyphenate.framework所在目录】
// 移除支持x86_64的二进制文件
lipo Hyphenate.framework/Hyphenate -remove x86_64 -output Hyphenate
//替换framwork内部二进制文件
mv Hyphenate Hyphenate.framework/Hyphenate
//查看剥离后的二进制文件支持的CPU架构,如果显示arm64,就完成剥离,可上传AppStore
lipo -info Hyphenate.framework/Hyphenate
不包含实时音视频版本 HyphenateLite.framework
【首先进入HyphenateLite.framework所在目录】
// 移除支持x86_64的二进制文件
lipo HyphenateLite.framework/HyphenateLite -remove x86_64 -output HyphenateLite
//替换framwork内部二进制文件[记得备份]
mv HyphenateLite HyphenateLite.framework/HyphenateLite
//查看剥离后的二进制文件支持的CPU架构,如果显示arm64,就完成剥离,可上传AppStore
lipo -info HyphenateLite.framework/HyphenateLite
ios 集成html5 sdk,iOS SDK 快速集成相关推荐
- 智能生活 App 垂直品类- IPC SDK 架构及快速集成配置(安卓版)
除了通用设备功能的应用开发,针对部分常见的全屋智能场景设备,智能生活 App SDK 提供了单独的垂直品类 SDK.包括智能摄像机 SDK.智能门锁 SDK.扫地机机器人 SDK.智能照明控制 SDK ...
- iOS:融云即时通讯快速集成
一.介绍 即时通讯在众多社交软件.生活软件以及教育软件中已经是必备的功能了,在当前国内,即时通讯SDK做的比较不错的有那么几家,例如环信SDK.融云SDK...,这两家做的都很不错,各有千秋吧,要是真 ...
- ios html5上架,iOS原生集成H5+详细流程
iOS原生集成H5+ 集成方式 独立应用方式集成 Widget方式集成 WebView方式集成 可以打开官方链接: 选择 5+SDK -> 5+SDK集成 -> 平台 下查看集成方式 独立 ...
- android sdk 封装html5,Android平台以WebView方式集成HTML5+SDK方法
HTML5+ SDK 可以按照"独立应用"和"单页面"两种种方式进行集成,两种集成方式各有优点. 独立应用集成方式:即Widget集成方式,开发者在集成后可在需 ...
- 快速集成iOS基于RTMP的视频推流
http://www.jianshu.com/p/8ea016b2720e 效果图 iTools有点卡, 但是推到服务器倒是很快的. 推流 前言 这篇blog是iOS视频直播初窥:<喵播APP& ...
- Android Studio快速集成讯飞SDK实现文字朗读功能
今天,我们来学习一下怎么在Android Studio快速集成讯飞SDK实现文字朗读功能,先看一下效果图: 第一步 :了解TTS语音服务 TTS的全称为Text To Speech,即"从文 ...
- 直播美颜技术:视频美颜sdk的快速集成与开发实践
视频美颜sdk则是直播美颜技术的重要组成部分,它可以帮助开发者快速集成美颜功能,实现直播美颜.目前已经被广大平台.主播.平台用户所应用,在近几年甚至成了一个极其热门的讨论话题,毕竟它与人们的日常拍摄生 ...
- Android(9) 环信sdk手动集成(非添加easeui依赖快速集成)
@先看看效果是不是自己想要的吧@ 准备:参考官方文档,先注册并创建应用 (这里再分享一下利用easeui快速集成的方法吧 ---> https://blog.csdn.net/qq_38 ...
- MobTech ShareSDK iOS端快速集成
开发工具:Xcode 集成方式:手动导入SDK或者Pod集成 SDK版本支持:SDK支持Xcode 9.1.0, iOS8.0+及以上版本 集成前准备 注册账号 使用ShareSDK之前,需要先在Mo ...
最新文章
- Web前端——字体规范
- 华人首位!清华学子尤洋 荣升新加坡国立大学“校长青年教授”
- android下调试声卡驱动之概述
- 盖茨:即使收购雅虎失败也要对决谷歌
- (020)java后台开发之JAVA集合中的List接口
- UVa 242 邮票和信封(完全背包)
- C语言实现Floyd-Warshall(弗洛伊德算法)(附完整源码)
- 深入理解javascript原型和闭包(15)——闭包
- java 马士兵 io 代码分析_学习笔记-马士兵java- (IO初步)流
- axios请求拦截 做Loading加载
- c语言 char转int_第三章、C语言中的数据类型
- word 2007导出pdf格式(含下载地址)
- Word文件打开的时候需要输入密码?
- 区块链开发中使用的最流行的编程语言
- JavaSE之面向对象
- Hash算法解决冲突的方法
- 【OpenCV 例程300篇】208. Photoshop 对比度自动调整算法
- 移动安全规范 — 2 -蓝牙安全规范
- Java模拟拨打电话程序_java_编写android拨打电话apk应用实例代码,android 实现拨打电话的app,代 - phpStudy...
- 数字藏品叠加元宇宙热潮,数字艺术会迎来怎样的发展