這里的集成是帶語音的
1.導(dǎo)入我整理過JoanKing環(huán)信整理文件 密碼: 29m8
2.在pch文件導(dǎo)入
#ifdef __OBJC__
/**
* 環(huán)信的設(shè)置
*/
#import "EMSDKFull.h"
#import "EaseUI.h"
#import "ChatViewController.h"
#endif
3.導(dǎo)入庫
1.SDK 包含實(shí)時(shí)語音依賴庫有:
CoreMedia.framework
AudioToolbox.framework
AVFoundation.framework
MobileCoreServices.framework
ImageIO.framework
libc++.dylib
libz.dylib
libstdc++.6.0.9.dylib
libsqlite3.dylib
libiconv.dylib
(如果使用的是 xcode7簿废,后綴為 tbd晴裹。)
第 2 步:SDK 不支持 bitcode煮纵,設(shè)置:Xcodeproj->Build Settings->Enable Bitcode 設(shè)置為 NO。
4.代碼配置
-
1.先說AppDelegate.m里面
/* 環(huán)信 */ #import "EMSDK.h"
下面的兩個(gè)變量你們需要注冊(cè)環(huán)信的開發(fā)者平臺(tái)賬號(hào),再創(chuàng)建應(yīng)用來獲取
appkey:@"注冊(cè)相應(yīng)應(yīng)用的APPkey"
apnsCertName:@"推送證書的名字"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//AppKey:注冊(cè)的AppKey,詳細(xì)見下面注釋。
//apnsCertName:推送證書名(不需要加后綴),詳細(xì)見下面注釋积担。
EMOptions *options = [EMOptions optionsWithAppkey:@"注冊(cè)相應(yīng)應(yīng)用的APPkey"];
options.apnsCertName = @"推送證書的名字";
[[EMClient sharedClient] initializeSDKWithOptions:options];
//設(shè)置回調(diào)監(jiān)聽代理(設(shè)置自動(dòng)登錄之后才能在退出后臺(tái)進(jìn)行獲取聊天的列表)
[[EMClient sharedClient] addDelegate:self delegateQueue:nil];
BOOL isAutoLogin = [EMClient sharedClient].options.isAutoLogin;
if (isAutoLogin) {
NSLog(@"123==重新登錄成功");
}
/*
EaseUI的使用
*/
[[EaseSDKHelper shareHelper] hyphenateApplication:application
didFinishLaunchingWithOptions:launchOptions
appkey:@"注冊(cè)相應(yīng)應(yīng)用的APPkey"
apnsCertName:@"推送證書的名字"
otherConfig:@{kSDKConfigEnableConsoleLogger:[NSNumber numberWithBool:YES]}];
//代碼注冊(cè)離線推送
//iOS8 注冊(cè)APNS
if ([application respondsToSelector:@selector(registerForRemoteNotifications)]) {
[application registerForRemoteNotifications];
UIUserNotificationType notificationTypes = UIUserNotificationTypeBadge |
UIUserNotificationTypeSound |
UIUserNotificationTypeAlert;
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:notificationTypes categories:nil];
[application registerUserNotificationSettings:settings];
}
else{
UIRemoteNotificationType notificationTypes = UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:notificationTypes];
}
/*
* 推送的方法: - (void)didReceiveMessages:(NSArray *)aMessages{}
*/
}
// 將得到的deviceToken傳給SDK
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
/**
* 環(huán)信的離線推送
*/
[[EMClient sharedClient] bindDeviceToken:deviceToken];
}
// APP進(jìn)入后臺(tái)
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[EMClient sharedClient] applicationDidEnterBackground:application];
}
// APP將要從后臺(tái)返回
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[[EMClient sharedClient] applicationWillEnterForeground:application];
}
- 2.注冊(cè)方法
EMError *error = [[EMClient sharedClient] registerWithUsername:@"注冊(cè)的賬號(hào)" password:@"注冊(cè)的秘密"];
if (error==nil)
{
NSLog(@"注冊(cè)成功");
}
-
3.登陸
/** * 環(huán)信登陸成功才算成功 */ EMError *error = [[EMClient sharedClient] loginWithUsername:myId password:@"dft"]; if (!error) { NSLog(@"登錄成功); //設(shè)置自動(dòng)登錄 [[EMClient sharedClient].options setIsAutoLogin:YES]; // 成功后跳轉(zhuǎn)頁面 }
-
4.與指定用戶進(jìn)行聊天
導(dǎo)入#import "ChatViewController.h" #pragma mark 與個(gè)人的聊天 -(void)clicKPerson { NSString *zy_id = @"62"; //以用戶名字來進(jìn)行聊天 /* * 設(shè)置商家的單聊模式 */ ChatViewController *chatViewController = [[ChatViewController alloc]initWithConversationChatter:zy_id conversationType:EMConversationTypeChat]; chatViewController.title =zy_id; [self.navigationController pushViewController:chatViewController animated:YES]; }
5.獲取聊天列表(跳轉(zhuǎn)進(jìn)入)
#pragma mark 聊天列表的轉(zhuǎn)入
-(void)clicKchat{
EaseConversationListViewController *easeConversationListViewController = [EaseConversationListViewController new];
[self.navigationController pushViewController:easeConversationListViewController animated:YES];
}
到這里你就完成一個(gè)聊天的流程以及推送的功能