iOS环信3.0集成 (一)SDK的集成

一、准备工作

1、注册环信帐号

注册一个环信账号之后,我们用注册的帐号登陆。然后创建一个应用,会得到一个对应的AppKey,这个AppKey在初始化环信SDK的时候需要用到。

点击查看注册环信帐号教程

2、制作推送证书

如果需要做离线推送的功能,需要制作一个推送证书。如果只是需要实现单聊、群聊等功能,可以跳过此步骤。个人建议刚开始接触环信的开发者可以忽略此步骤。

点击查看制作推送证书教程

3、下载环信SDK

点击下载环信iOS版的SDK

二、集成环信的SDK

1、把环信SDK添加到工程中

从环信官网下载下来的是一个压缩包,解压之后,把我们需要的环信SDK,即HyphenateSDK这个文件夹,整个的拖入到我们的工程中。如下图:

在lib文件夹下面有两个静态库,只需要用到一个,根据你的需求选择。

libHyphenateSDK.a不包含实时语音功能,libHyphenateFullSDK.a包含所有功能。

2、添加对应的依赖库

2.1. 向Build Phases → Link Binary With Libraries 中添加依赖库

SDK依赖库有

  • CoreMedi.framework
  • AudioToolbox.framework
  • AVFoundation.framework
  • MobileCoreServices.framework
  • ImageIO.framework
  • SystemConfiguration.framework
  • libc++.dylib
  • libresolv.dylib
  • libz.dylib
  • libstdc++.6.0.9.dylib
  • libsqlite3.dylib

(如果使用的是xcode7,后缀为tbd)

SDK包含实时语音依赖库有

  • CoreMedia.framework
  • AudioToolbox.framework
  • AVFoundation.framework
  • MobileCoreServices.framework
  • ImageIO.framework
  • SystemConfiguration.framework
  • libc++.dylib
  • libresolv.dylib
  • libz.dylib
  • libstdc++.6.0.9.dylib
  • libsqlite3.dylib
  • libiconv.dylib

    温馨提示:注意不要添加错了,也不能添加少了,添加完毕之后,不要着急,先编译一下。编译成功,则说明没有问题;如果编译报错,则仔细对照上面例举的静态库进行添加,直到编译成功,再进行下一步。

    3、配置工程

    3.1 不包含语音静态库的配置方法

    (1) 删掉libHyphenateFullSDK.a,保留libHyphenateSDK.a;

    (2) 在Build Settings -> Other Linker Flags 添加”fore_load”和”libHyphenateSDK.a”的相对路径。

    如下图所示:

    3.2 包含语音静态库的配置方法

    (1) 删掉libHyphenateSDK.a,保留libHyphenateFullSDK.a;

    (2) 在Build Settings -> Other Linker Flags 添加”-ObjC”。

    如下图所示:

    4、验证SDK是否添加成功

    在AppDelegate.m文件中添加环信SDK初始化的方法,记得添加头文件”EaseMob.h”。下面提供了我用的测试AppKey,你可以替换成你自己申请的AppKey。编译成功,则说明你已经正确集成了环信的SDK了。

    如果编译有问题,可能存在的原因:

    (1) 静态库没有添加正确;

    (2) 静态库工程配置不正确;

    <code class="hljs objectivec has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">
    
    </code><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo;"><span style="font-variant-ligatures: no-common-ligatures">- (</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2">BOOL</span><span style="font-variant-ligatures: no-common-ligatures">)application:(</span><span style="font-variant-ligatures: no-common-ligatures; color: #703daa">UIApplication</span><span style="font-variant-ligatures: no-common-ligatures"> *)application didFinishLaunchingWithOptions:(</span><span style="font-variant-ligatures: no-common-ligatures; color: #703daa">NSDictionary</span><span style="font-variant-ligatures: no-common-ligatures"> *)launchOptions {</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);"><span style="font-variant-ligatures: no-common-ligatures; color: #000000">    </span><span style="font-variant-ligatures: no-common-ligatures">// Override point for customization after application launch.</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo;"><span style="font-variant-ligatures: no-common-ligatures">    </span><span style="font-variant-ligatures: no-common-ligatures; color: #4f8187">EMOptions</span><span style="font-variant-ligatures: no-common-ligatures"> *options = [</span><span style="font-variant-ligatures: no-common-ligatures; color: #4f8187">EMOptions</span><span style="font-variant-ligatures: no-common-ligatures"> </span><span style="font-variant-ligatures: no-common-ligatures; color: #31595d">optionsWithAppkey</span><span style="font-variant-ligatures: no-common-ligatures">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #d12f1b">@"chongwu#chongwu"</span><span style="font-variant-ligatures: no-common-ligatures">];</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);"><span style="font-variant-ligatures: no-common-ligatures; color: #000000">    </span><span style="font-variant-ligatures: no-common-ligatures">//    options.apnsCertName = @"";</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo; color: rgb(49, 89, 93);"><span style="font-variant-ligatures: no-common-ligatures; color: #000000">    [[</span><span style="font-variant-ligatures: no-common-ligatures; color: #4f8187">EMClient</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000"> </span><span style="font-variant-ligatures: no-common-ligatures">sharedClient</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">] </span><span style="font-variant-ligatures: no-common-ligatures">initializeSDKWithOptions</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">:options];</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo; min-height: 21px;"><span style="font-variant-ligatures: no-common-ligatures">    </span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo; color: rgb(49, 89, 93);"><span style="font-variant-ligatures: no-common-ligatures; color: #000000">    </span><span style="font-variant-ligatures: no-common-ligatures; color: #4f8187">EMError</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000"> *error1 = [[</span><span style="font-variant-ligatures: no-common-ligatures; color: #4f8187">EMClient</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000"> </span><span style="font-variant-ligatures: no-common-ligatures">sharedClient</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">] </span><span style="font-variant-ligatures: no-common-ligatures">registerWithUsername</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #d12f1b">@"easeuidemo"</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000"> </span><span style="font-variant-ligatures: no-common-ligatures">password</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #d12f1b">@"1"</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">];</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo;"><span style="font-variant-ligatures: no-common-ligatures">    </span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2">if</span><span style="font-variant-ligatures: no-common-ligatures"> (error1==</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2">nil</span><span style="font-variant-ligatures: no-common-ligatures">) {</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo;"><span style="font-variant-ligatures: no-common-ligatures">        </span><span style="font-variant-ligatures: no-common-ligatures; color: #3d1d81">NSLog</span><span style="font-variant-ligatures: no-common-ligatures">(</span><span style="font-variant-ligatures: no-common-ligatures; color: #d12f1b">@"</span><span style="line-height: normal; font-family: 'PingFang SC'; font-variant-ligatures: no-common-ligatures; color: rgb(209, 47, 27);">注册成功</span><span style="font-variant-ligatures: no-common-ligatures; color: #d12f1b">"</span><span style="font-variant-ligatures: no-common-ligatures">);</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo;"><span style="font-variant-ligatures: no-common-ligatures">    }</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo; min-height: 21px;"><span style="font-variant-ligatures: no-common-ligatures">    </span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo; min-height: 21px;"><span style="font-variant-ligatures: no-common-ligatures">    </span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo; min-height: 21px;"><span style="font-variant-ligatures: no-common-ligatures"></span>
    </p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo; color: rgb(49, 89, 93);"><span style="font-variant-ligatures: no-common-ligatures; color: #000000">    </span><span style="font-variant-ligatures: no-common-ligatures; color: #4f8187">EMError</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000"> *error2 = [[</span><span style="font-variant-ligatures: no-common-ligatures; color: #4f8187">EMClient</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000"> </span><span style="font-variant-ligatures: no-common-ligatures">sharedClient</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">] </span><span style="font-variant-ligatures: no-common-ligatures">loginWithUsername</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #d12f1b">@"easeuidemo"</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000"> </span><span style="font-variant-ligatures: no-common-ligatures">password</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #d12f1b">@"1"</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">];</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo;"><span style="font-variant-ligatures: no-common-ligatures">    </span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2">if</span><span style="font-variant-ligatures: no-common-ligatures"> (!error2) {</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo;"><span style="font-variant-ligatures: no-common-ligatures">        </span><span style="font-variant-ligatures: no-common-ligatures; color: #3d1d81">NSLog</span><span style="font-variant-ligatures: no-common-ligatures">(</span><span style="font-variant-ligatures: no-common-ligatures; color: #d12f1b">@"</span><span style="line-height: normal; font-family: 'PingFang SC'; font-variant-ligatures: no-common-ligatures; color: rgb(209, 47, 27);">登陆成功</span><span style="font-variant-ligatures: no-common-ligatures; color: #d12f1b">"</span><span style="font-variant-ligatures: no-common-ligatures">);</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; line-height: normal; font-family: Menlo;"><span style="font-variant-ligatures: no-common-ligatures">    }</span></p><div><span style="font-variant-ligatures: no-common-ligatures">
    </span></div>
    

时间: 2024-10-12 22:04:11

iOS环信3.0集成 (一)SDK的集成的相关文章

iOS环信即时聊天

一.注册登陆环形开发者账号,并且创建应用,获得对应的AppKey 二.根据实际情况制作并上传推送证书(开发环境推送证书sandbox,请选择 Apple Push Notification service SSL  / 生产环境证书production,请选择 Apple Push Notification service SSL ) 详细制作步骤属于iOS开发基本知识,这里不再做详细说明. 三.集成iOS 环信SDK.为了方便快速,这里我们直接使用Cocoapods集成 在终端cd到该工程跟目

iOS 环信集成问题(连文档都不说明的坑。。)

首先,关于环信SDK的下载和一些依赖库的添加,在此我就不做详细介绍,(http://www.easemob.com/download/im)附上环信官网文档,可以看一下,上面都可以下载,也有相关配置介绍. 今天主要说一下,环信集成遇到的各种坑,各种问题,有的连文档都不说明的坑..(主要是讲解完全集成环信,UI的聊天界面,单聊功能也是环信的这种情况) 各位可能刚在官网下载下来ChatDemo-UI3.0这个版本,会发现HyphenateFullSDK和官网文档有个不一样的地方,少了个文件(libH

iOS 环信 集成 详细步骤图文

环信的教程: 没有初始化SDK 去AppDelegate里面初始化 密码 User not exist         ?????????? 每一个应用都有自己的注册用户  去你的后台管理   去看你的注册的用户数 为什么demo的可以跑起来???????? 是在它的应用下注册的 怎么去注册用户  -注册用户 用户名字可以相同   不同的应用 那个打印的loginInfo 是这个字典的也就是用户的登录信息 你会发现打印的loginInfo上面还有一坨恶心的东西,那个是环信SDK自己打印的日志信息

iOS环信离线推送

这几天项目里又用到了友盟的推送,虽然之前做过,但是很久不做还是有很多细节没有注意到,所以还是决定从头开始做一遍,把每一个环节都详细记录下来,同样的把每一个坑也记录下来.方便自己以后做的时候忘记哪个流程了可以在看一遍.我很能理解那种遇到问题网上百度一堆类似答案但是并不好使的情况,所以我会将我在项目中遇到的问题都贴出来,希望能给大家带来些许参考和帮助,文章原创为http://www.jianshu.com/p/389ff299dc75 一.推送的原理和流程(着急做推送的可以跳过这一步) 首先给大家推

iOS环信视频聊天

这是我自己利用环信写的一个单纯的视频聊天功能demo 首先需要去环信官网申请一个appkey,并将sdk集成到项目中 然后加入类库 APPDelegate.m // // AppDelegate.m // VideoChat // // Created by 小灰灰的pro on 16/8/31. // Copyright © 2016年 小灰灰. All rights reserved. // #import "AppDelegate.h" #import "EMSDK.h

iOS: 环信的推送

原文:http://m.blog.csdn.net/article/details?id=38824551 1.先创建一个apns证书,链接如下 http://developer.easemob.com/docs/emchat/ios/push/certificate.html 创建完证书后,将证书弄成p12文件,然后上传到环信后台 2.再创建真机调试证书,和描述文件,保证能进行真机调试.并且appid要又推送功能 3.绑定环信证书和appkey //注册 APNS文件的名字, 需要与后台上传证

iOS环信

工作近一个月,初出茅庐的我在这里写写这近一个月在编程遇到的问题,希望能帮到大家,如果有不对的地方也请大家帮忙指正,谢谢! 这次主要介绍一下环信,之前没有接触过,当分到这个任务的时候我并没有怂,如果认怂我想这一辈子也没法成功,既然老大相信我,我也要做出个样子来. 废话不过说,开始进入主题,首先遇到一个第三方的东西,第一反应就是下demo看文档http://docs.easemob.com/docs.php,demo对于第一次接触的人来说可能会看的很费劲,我建议先看文档,文档里的一些基础使用介绍的已

iOS 环信消息撤回

这两天在做环信的消息回撤,在网上找了许久没有这种案例,之后官方的一些方法,但是自己做,还是需要花点时间去整理,所以我决定等我把这个做好之后,分享给大家,如果做的不好多多指教,谢谢- 首先要实现消息撤回就是两个步骤,一个是发送要回撤的透传消息 .一个是接收透传信息,删除要回撤的消息. 第一步 : ChatViewController.m 自己定义一个 1 UIMenuItem *_messageRetracementMenuItem; 第二步 这个方法里面添加一下撤回字段,我把整段都复制过来了,你

iOS 环信集成单聊界面,出现消息重复问题

解决办法很简单,数据重复就是EaseMessageViewController和ChatViewController重复调用了这个吧?//通过会话管理者获取收发消息 [self tableViewDidTriggerHeaderRefresh]; 如果你修改了,还不行,可以告诉我一下,共同学习,共同寻找一下解决方法