iOS 整合環信(三)

來源:互聯網
上載者:User

標籤:

部分轉載於環信官網

整合SDK基礎功能

這節文章主要介紹了環信初始化、註冊和登陸等功能。因為環信demo確實做得比較好,但是功能太多,想從裡面提取部分功能比較困難,所以寫這篇文章記錄下整合環信的過程。

EaseUI使用指南

EaseUI封裝了IM功能常用的控制項(如聊天會話,會話列表,連絡人清單),旨在協助開發人員快速整合環信SDK。EaseUI裡面的代碼都是開源的,我們如果有興趣可以研究下EaseUI的代碼,看下他們是怎麼封裝代碼的。

快速整合

在我們從官方下載下載好的SDK中,有一個檔案夾叫EaseUI,我們可以直接把這個檔案夾拖到我們的項目中,:

把這個EaseUI拖到我們的項目中,注意勾選 Copy items if needed 這個選項。

將EaseUI的資源檔 EaseUIResource.bundle 拖到我們的項目中,EaseUIResource.bundle裡面放著介面所需要的圖片檔案。:

至此,整合完了EaseUI和EaseUIResource.bundle後,我們的快速整合這一環節也就完成了,我們可以試著編譯下,command + B ,編譯下項目,如果按照上面的步驟走的話,我們是可以編譯成功的。

初始化環信SDK

如我們使用其他公司的SDK一樣,在我們開啟應用的時候,都得初始化我們整合的SDK,環信SDK也不意外。

添加標頭檔到pch中

首先,我們需要在自己的項目中建立一個pch檔案,然後將SDK中經常使用的標頭檔放到pch檔案裡。我們暫時需要把 EaseUI.h 和 SDK中 EMSDKFull.h 匯入到pch檔案中。代碼如下所示:

#import <Availability.h>#ifndef __IPHONE_3_0#warning "This project uses features only available in iOS SDK 3.0 and later."#endif#ifdef __OBJC__#import <UIKit/UIKit.h>#import <Foundation/Foundation.h>#import "EMSDKFull.h"#import "EaseUI.h"#define DEMO_CALL 1#endif
初始化SDK

在環信 chatDemo-UI3.0中,他們是把初始化和推送等操作放在了 AppDelegate + EaseMob這個檔案中,這樣做的好處是簡化了AppDelegate的代碼,因為我們在做項目的時候,經常是要在 AppDelegate裡做很多初始化的操作,比如百度地圖SDK初始化,雷射推送SDK初始化等,如果都在這裡面做的話,會造成代碼異常臃腫且難讀。所以,我們也建立AppDelegate的類別檔案,將初始化和推送的代碼寫在這個類別中。部分代碼如下:

#import "AppDelegate+EaseMob.h"#import "AppDelegate+EaseMobDebug.h"/** *  本類中做了EaseMob初始化和推送等操作 */@implementation AppDelegate (EaseMob)- (void)easemobApplication:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions                    appkey:(NSString *)appkey              apnsCertName:(NSString *)apnsCertName               otherConfig:(NSDictionary *)otherConfig{    //註冊登入狀態監聽    [[NSNotificationCenter defaultCenter] addObserver:self                                             selector:@selector(loginStateChange:)                                                 name:KNOTIFICATION_LOGINCHANGE                                               object:nil];    [[EaseSDKHelper shareHelper] easemobApplication:application                      didFinishLaunchingWithOptions:launchOptions                                             appkey:appkey                                       apnsCertName:apnsCertName                                        otherConfig:@{kSDKConfigEnableConsoleLogger:[NSNumber numberWithBool:YES],@"easeSandBox":[NSNumber numberWithBool:[self isSpecifyServer]]}];//    [ChatDemoHelper shareHelper];    BOOL isAutoLogin = [EMClient sharedClient].isAutoLogin;    if (isAutoLogin){        [[NSNotificationCenter defaultCenter] postNotificationName:KNOTIFICATION_LOGINCHANGE object:@YES];    }    else    {        [[NSNotificationCenter defaultCenter] postNotificationName:KNOTIFICATION_LOGINCHANGE object:@NO];    }}#pragma mark - App Delegate// 將得到的deviceToken傳給SDK- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{        [[EMClient sharedClient] bindDeviceToken:deviceToken];    });}// 註冊deviceToken失敗,此處失敗,與環信SDK無關,一般是您的環境配置或者認證配置有誤- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"apns.failToRegisterApns", Fail to register apns)                                                    message:error.description                                                   delegate:nil                                          cancelButtonTitle:NSLocalizedString(@"ok", @"OK")                                          otherButtonTitles:nil];    [alert show];}

iOS 整合環信(三)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.