iOS開發融雲即時通訊整合詳細步驟,ios即時通訊

來源:互聯網
上載者:User

iOS開發融雲即時通訊整合詳細步驟,ios即時通訊
iOS開發融雲即時通訊整合詳細步驟

1.融雲即時通訊iOS SDK  http://rongcloud.cn/downloads  選擇iOS  SDK下載

2.進行應用開發之前,需要先在融雲開發人員平台建立應用,如果您已經註冊了融雲開發人員帳號,請前往 融雲開發人員平台 建立應用;如果您還沒有註冊融雲開發人員帳號,請前往 融雲官方網站 首先註冊開發人員帳號,註冊後建立應用。登入位址  https://developer.rongcloud.cn/signup

3.登陸融雲開發人員平台 https://developer.rongcloud.cn/signin 建立應用

4.進入後台之後點擊建立應用,進入這樣一個建立介面

圖1

5.最後點擊建立 點擊我的應用程式 然後在左邊點擊我的應用程式名稱

圖2

6.點擊AppKey進入

圖3

7.手動安裝融雲即時通訊SDK

7.1將下載好的最新的融雲SDK匯入到自己的項目中

7.2添加依賴庫 在Build Phases中第三個選項link中點擊左下角+號添加依賴庫

所需的依賴庫

圖4

 

8.擷取Token

和第五步一樣,進入融雲後台點擊我的應用程式—>自己的應用程式名稱—>IM服務—>API調試

右邊會進入一個介面,在這裡擷取調試Token

圖5

 

使用者 Id:

userId = "1" // 使用者在融雲系統中唯一的身份 Id,可為任一數字或字串,但必須保證全域唯一。

使用者名稱稱:

name = "韓梅梅" // 使用者的顯示名稱,用來在 Push 推送時,或者用戶端沒有提供使用者資訊時,顯示使用者的名稱。

帳戶圖片圖片:

portraitUri = "http://rongcloud-web.qiniudn.com/docs_demo_rongcloud_logo.png"

現在我們獲得了AppKey和Token了

9.下面就開始快速整合了

9.1在自己的項目中AppDelegate.h檔案中匯入標頭檔

#import<RongIMLib/RongIMLib.h>

#impor<RongIMKit/RongIMKit.h>

然後遵守RCIMConnectionStatusDelegate這個代理方法,即變成這樣@interface AppDelegate : UIResponder<UIApplicationDelegate,RCIMConnectionStatusDelegate>

9.2在AppDelegate.m檔案中匯入標頭檔

//融雲即時通訊

#import<RongIMKit/RongIMKit.h>

#import<RongIMLib/RongIMLib.h>

#import<UIKit/UIKit.h>

然後將獲得的融雲的AppKey 寫成一個宏  如下  將自己的AppKey 替換即可\

k51hidwq1bbcdds4b將這個換成自己的即可

//融雲即時通訊AppKey

#define RONGCLOUD_IM_APPKEY @"k51hidwq1bbcdds4b"

10.在AppDelegate.m的檔案中的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

}

方法中加入以下代碼

//融雲即時通訊

//初始化融雲SDK。

[[RCIM sharedRCIM] initWithAppKey:RONGCLOUD_IM_APPKEY];

/**

* 推送處理1

*/

if ([application

respondsToSelector:@selector(registerUserNotificationSettings:)]) {

//註冊推送, iOS 8

UIUserNotificationSettings *settings = [UIUserNotificationSettings

settingsForTypes:(UIUserNotificationTypeBadge |

UIUserNotificationTypeSound |

UIUserNotificationTypeAlert)

categories:nil];

[application registerUserNotificationSettings:settings];

} else {

UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge |

UIRemoteNotificationTypeAlert |

UIRemoteNotificationTypeSound;

[application registerForRemoteNotificationTypes:myTypes];

}

//融雲即時通訊

[[NSNotificationCenter defaultCenter]

addObserver:self

selector:@selector(didReceiveMessageNotification:)

name:RCKitDispatchMessageNotification

object:nil];

[[RCIM sharedRCIM] setConnectionStatusDelegate:self];

加入到方法中的代碼到這裡

下面是單獨的方法  直接加在AppDelegate.m的檔案中即可

/**

*  將得到的devicetoken 傳給融雲用於離線狀態接收push ,您的app後台要上傳推送認證

*

*  @param application <#application description#>

*  @param deviceToken <#deviceToken description#>

*/

- (void)application:(UIApplication *)application

didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

NSString *token =

[[[[deviceToken description] stringByReplacingOccurrencesOfString:@"<"

withString:@""]

stringByReplacingOccurrencesOfString:@">"

withString:@""]

stringByReplacingOccurrencesOfString:@" "

withString:@""];

[[RCIMClient sharedRCIMClient] setDeviceToken:token];

}

/**

*  網路狀態變化。

*

*  @param status 網路狀態。

*/

- (void)onRCIMConnectionStatusChanged:(RCConnectionStatus)status {

if (status == ConnectionStatus_KICKED_OFFLINE_BY_OTHER_CLIENT) {

UIAlertView *alert = [[UIAlertView alloc]

initWithTitle:@"提示"

message:@"您"

@"的帳號在別的裝置上登入,您被迫下線!"

delegate:nil

cancelButtonTitle:@"知道了"

otherButtonTitles:nil, nil];

[alert show];

//注意這裡下面的4行,根據自己需要修改  也可以注釋了,但是只能注釋這4行,網路狀態變化這個方法一定要實現

ViewController *loginVC = [[ViewController alloc] init];

UINavigationController *_navi =

[[UINavigationController alloc] initWithRootViewController:loginVC];

self.window.rootViewController = _navi;

}

}

- (void)didReceiveMessageNotification:(NSNotification *)notification {

[UIApplication sharedApplication].applicationIconBadgeNumber =

[UIApplication sharedApplication].applicationIconBadgeNumber + 1;

}

11.開始建立會話先建立一個繼承RCConversationListViewController名為ChatListViewController的控制器建立之後的控制器.h檔案即為

#import<UIKit/UIKit.h>

#import<RongIMKit/RongIMKit.h>

@interface ChatListViewController : RCConversationListViewController

@end

這樣的樣式

在你要建立即時會話的介面的控制器的.h檔案中匯入標頭檔//融雲即時通訊

#import<RongIMKit/RongIMKit.h>

並遵守資料來源方法RCIMUserInfoDataSource即變成了

#import<RongIMKit/RongIMKit.h>

@interface ViewController : UIViewController<RCIMUserInfoDataSource>

在.m檔案中匯入標頭檔

//融雲即時通訊

#import "ChatListViewController.h"

#import<RongIMKit/RCConversationViewController.h>

將我們擷取的Token定義成宏 就像這樣的格式  換成自己的Token即可

//融雲即時通訊Token

#define RONGCLOUD_IM_Token @"LU0IpXzEeYXUxuJi5n9hAwNcet2QRQu/IRxLhvshFhvLm8f3gdUu+y4TIhufZfJ/fIXRJrQyBu8cJAN2bcAolA=="

比如在我所在的控制器我有一個開始回答按鈕

我想在這個控制器點擊開始回答按鈕就想讓他建立即時會話

這樣來實現,點擊開始回答按鈕

/**

*  點擊開始回答執行的方法

*/

-(void)startAnswer

{

//登陸融雲

//登入融雲端服務器,開始階段可以先從融Cloud API調試網站擷取,之後token需要通過伺服器到融雲端服務器取。

NSString *token=RONGCLOUD_IM_Token;

[[RCIM sharedRCIM] connectWithToken:token success:^(NSString *userId) {

//設定使用者資訊提供者,頁面展現的帳戶圖片及暱稱都會從此代理取 這裡會跳到會話列表介面  就是我們平常QQ聊天都有一個

會話的列表  如果想直接跳到聊天介面 下面再說

[[RCIM sharedRCIM] setUserInfoDataSource:self];

NSLog(@"Login successfully with userId: %@.", userId);

dispatch_async(dispatch_get_main_queue(), ^{

ChatListViewController *chatListViewController = [[ChatListViewController alloc]init];

[self.navigationController pushViewController:chatListViewController animated:YES];

});

} error:^(RCConnectErrorCode status) {

NSLog(@"login error status: %ld.", (long)status);

} tokenIncorrect:^{

NSLog(@"token 無效 ,請確保產生token 使用的appkey 和初始化時的appkey 一致");

}];

} error:^(RCConnectErrorCode status) {

NSLog(@"login error status: %ld.", (long)status);

} tokenIncorrect:^{

NSLog(@"token 無效 ,請確保產生token 使用的appkey 和初始化時的appkey 一致");

}];

YYCLog(@"點擊了開始回答");

}

然後在這個控制器再實現一個方法  就是下面這個方法

/**

*此方法中要提供給融雲使用者的資訊,建議緩衝到本地,然後改方法每次從您的緩衝返回

*/

- (void)getUserInfoWithUserId:(NSString *)userId completion:(void(^)(RCUserInfo* userInfo))completion

{

//此處為了示範寫了一個使用者資訊

if ([@"1" isEqual:userId]) {

RCUserInfo *user = [[RCUserInfo alloc]init];

user.userId = @"1";

user.name = @"測試1";

user.portraitUri = @"https://ss0.baidu.com/73t1bjeh1BF3odCf/it/u=1756054607,4047938258&fm=96&s=94D712D20AA1875519EB37BE0300C008";

return completion(user);

}else if([@"2" isEqual:userId]) {

RCUserInfo *user = [[RCUserInfo alloc]init];

user.userId = @"2";

user.name = @"測試2";

user.portraitUri = @"https://ss0.baidu.com/73t1bjeh1BF3odCf/it/u=1756054607,4047938258&fm=96&s=94D712D20AA1875519EB37BE0300C008";

return completion(user);

}

}

這個方法也要在這個.m檔案中實現

這裡都是測試 先這樣寫  我到後面再寫怎麼具體實現

下面代碼都一樣

下面就是在我們的ChatListViewController.h檔案中

#import<RongIMKit/RongIMKit.h>

#import<RongIMKit/RongIMKit.h>

@interface ChatListViewController : RCConversationListViewController

@end

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.