日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

可視對講移動端SDK接口說明-[iOS]

更新時間:

1. 概述

1.1 編寫目的

本文是可視對講設備云對講和呼手機功能SDK接口說明。

1.2 名詞解釋

名詞

解釋

IoT

物聯網

2. 介紹

通過集成對接SDK可以使門禁設備快速實現包括門禁機呼叫APP、APP調看門禁機、門禁機呼叫?機號等對講功能。本?旨在描述該SDK的集成?式及主要業務代碼。

限制條件:

推薦使用Xcode版本:V12.5.1及以上

iOS版本:iOS9.0及以上

3. SDK集成方法

3.1 導入所需文件

  1. 新建或打開已有工程

  2. 導入EVVideoVoipSDK.framework和EVVideoVoipSDK.bundle

  1. 將工程配置->TARGETS->Build Settings中的bitcode設置為NO

image

  1. 在需要用到的類中導入頭文件EVideoVoipSDK.h,調用各接口,使用SDK相關功能

#import <EVideoVoipSDK/EVideoVoipSDK.h>

3.2 權限要求

麥克風權限

相冊權限(抓拍使用)

4. 類及接口列表

4.1 類說明

類名

說明

EVVoipManager

負責登錄SIP

EVVoipAccount

SIP會話

EVVoipCall

負責SIP通話

EVVideoView

負責視頻顯示

EVVoipCallParams

通話參數

4.2 接口說明

4.2.1流程關鍵接口

名稱

類名

方法名

初始化

EVVoipManager

- (void)setupWithCompletion:(void(^)())completion;

反初始化

EVVoipManager

- (void)teardown;

登錄SIP服務器

EVVoipManager

- (EVVoipAccount *)loginWithSipNumber:(NSString* )sipnum

displayName:(NSString* )displayName

password:(NSString* )password

domain:(NSString* )domain

port:(NSInteger)port;

設置調看視頻view

EVVoipManager

- (void)setVideoView:(UIView *)videoView;

安靜模式,不響鈴

EVVoipManager

- (void)enableSilentMode:(BOOL)silent;

呼叫APP

EVVoipManager

- (EVVoipCall *)callWithSipNumber:(NSString* )sipnum

videoView:(UIView* )videoView

error:(EVVoipError** )error;

來電監聽

EVVoipManager

@property (nonatomic,copy) void (^onCallDidIncoming)(EVVoipCall *call);

賬號狀態監聽

EVVoipAccount

@property (nonatomic,copy) void (^onStateDidChanged)(EVVoipAccountState state);

退出登錄

EVVoipAccount

- (BOOL)logout;

移除賬號

EVVoipAccount

- (void)remove;

消息通知

EVVoipManager

onMessageDidReceived

接聽并掛斷其它

EVVoipCall

- (EVVoipError *)acceptWithVideoView:(UIView* )videoView;

接聽并暫停其它

EVVoipCall

- (EVVoipError* )acceptAndPauseOhterWithVideoView:(UIView* )videoView;

視頻接聽

EVVoipCall

- (EVVoipError *)acceptVideo;

接聽并掛斷其它通話

EVVoipCall

- (EVVoipError *)acceptWithVideoView:(UIView* )videoView;

接聽并暫停其它通話

EVVoipCall

- (EVVoipError* )acceptAndPauseOhterWithVideoView:(UIView* )videoView;

設置媒體視圖

EVVoipCall

- (void)setNativeVideoView:(UIView *)videoView;

(和acceptWithVideoView的videoView有什么區別)

音頻接聽

EVVoipCall

- (EVVoipError *)acceptAudio;

暫停

EVVoipCall

- (void)pause;

恢復

EVVoipCall

- (void)resume;

掛斷

EVVoipCall

- (EVVoipError* )hangup;

呼叫狀態監聽

EVVoipCall

@property (nonatomic, copy) void (^onStateDidChanged)(EVVoipCallState state, EVVoipCallEndReason reason);

視頻狀態改變

EVVoipCall

@property (nonatomic, copy) void (^onVideoStateDidChanged)(EVVoipVideoState state);

開鎖結果回調

EVVoipCall

@property (nonatomic, copy) void (^onUnlockStateDidChanged)(EVVoipError *error, NSInteger unlockCode);

開鎖

EVVoipCall

- (int)unlock;

截圖

EVVoipCall

- (void)snapshot:(void(^)(UIImage* image, EVVoipError* error))completion;

搶麥

EVVoipCall

- (void)applyRemoteMicrophone:(void(^)(BOOL successed))completion;

搶麥,當有多端監視時,默認第一個監視可以說話,其他若要說話需要進行搶麥

釋放搶麥

EVVoipCall

- (BOOL)cancelRemoteMicrophone;

是否靜麥

EVVoipCall

- (BOOL)microphoneEnabled;

是否支持揚聲器

EVVoipCall

- (BOOL)speakerEnabled;

是否關閉視頻

EVVoipCall

- (BOOL)videoEnabled;

切換到揚聲器

EVVoipCall

- (void)switchToSpeaker;

切換到聽筒

EVVoipCall

- (void)switchToReceiver;

5. 主要業務流程

5.1 初始化

在進?對講業務之前,需要先初始化該SDK,才能保證后續業務正常,后續的所有API調?都必須在SDK初始化成功的情況下執?。在應?的?命周期內,?般只進??次初始化。

[[EVVoipManager defaultManager] setupWithCompletion:^{
 NSLog(@"初始化完成");
}];

當不再使?對講業務時,可以調?deInit進?SDK反初始化。

// 反初始化對講SDK
[[EVVoipManager defaultManager] teardown]

5.2 登入SIP服務器

在對講SDK初始化成功之后,需要進?SIP服務器登入,登入成功后可以得到EVVoipAccount對象。

EVVoipAccount *account = [[EVVoipManager defaultManager] 
         loginWithSipNumber:@"SIP賬號" 
            displayName:@"顯示名" 
            password:@"密碼" 
               domain:@"域名" 
                 port:80//端口
               transport:@"傳輸方式,默認UDP"];

為了能夠實時顯示賬號狀態,本SDK提供 onStateDidChanged 接?實時監聽當前賬號狀態。

account.onStateDidChanged = ^(EVVoipAccountState state){
    ...
    EVVoipAccountStateUnknown = 0,  /** 未知 */
    EVVoipAccountStateLogging,      /** 登入中 */
    EVVoipAccountStateLogouting,    /** 登出中 */
    EVVoipAccountStateOnline,       /** 在線 */
    EVVoipAccountStateOffline,      /** 離線 */
    EVVoipAccountStateLoggedout,    /** 已登出 */
    ...
};

當不再使?對講業務,可以通過以下接?進?登出操作。

[account logout];

5.3 呼叫監聽

為了使APP能夠響應設備通話請求,需要注冊?個來電回調監聽接?。

[EVVoipManager defaultManager].onCallDidIncoming = ^(EVVoipCall * _Nonnull call) {
 // 新來電
 }

為了能夠實時獲取當前的通話狀態,可以在EVVoipCall對象上設置?個通話狀態回調接?。

call.onStateDidChanged = ^(EVVoipCallState state, EVVoipCallEndReason reason) {

}

/** 呼叫狀態 */
typedef NS_ENUM(NSUInteger, EVVoipCallState) {
    EVVoipCallStateUnknown = 0,     /** 未知 */
    EVVoipCallStateIncoming,        /** 呼入中 */
    EVVoipCallStateOutgoing,        /** 呼出中 */
    EVVoipCallStateConnected,       /** 已接通 */
    EVVoipCallStatePaused,          /** 已掛起 */
    EVVoipCallStateEnd,             /** 結束 */
};

/** 電話結束原因 */
typedef NS_ENUM(NSUInteger, EVVoipCallEndReason) {
    EVVoipCallEndReasonNone         = 3000, /** 無 */
    EVVoipCallEndReasonHangupByUser = 3003, /** 掛斷 */
    EVVoipCallEndReasonNotFound     = 3004, /** 未找到對方賬號 */
    EVVoipCallEndReasonNotAnswered  = 3005, /** 未接聽 */
    EVVoipCallEndReasonBusy         = 3006, /** 對方忙 */
};

5.4 通話接聽

為了顯示設備的對講畫面,需要提供?個UIView作為視頻容器,如果不提供則為?頻通話。

視頻接聽

[call acceptWithVideoView:self.playView];

音頻接聽

[call acceptWithVideoView:nil];

5.5 通話掛斷

[call hangup];

5.6 開門

通話中可以發送開門指令,在發送開門指令前先設置監聽器,通過監聽獲取開門指令執行結果。

[call unlock];

5.7 開關視頻

打開視頻

call.videoEnabled = YES;
[call setNativeVideoView:self.playView];

關閉視頻

call.videoEnabled = NO;
[call setNativeVideoView:nil];

5.8 APP調看門禁機

設置調看UIView

[[EVVoipManager defaultManager] setVideoView:self.playView];

開始調看,可通過EVVoipError對象查看調看失敗原因

self.currentCall =
[[EVVoipManager defaultManager] callWithSipNumber:self.sipNumber videoView:nil error:&error];
if (error) {
 [self showToastWithMsg:[NSString stringWithFormat:@"errorCode = %d",error.errorCode]];
    [self.navigationController popViewControllerAnimated:YES];
    return;
}

設置調看狀態監聽

self.currentCall.onStateDidChanged = ^(EVVoipCallState state, EVVoipCallEndReason reason) {

}