av一区二区三区在线观看_久久久久国产一区二区三区_伊人春色在线播放_欧美亚洲国产一区_九九热在线免费视频_久久视频国产

初始化SDK及登錄

? 在程序入口初始化SDK并設置回調接口 — 初始化要在程序完全啟動(即Android Application 創建完成)之后才能調用。初始化及登錄建議在一個函數體中順序調用。

代碼可參考Demo中的SDKCoreHelper.java(所在的demo目錄:\app\src\main\java\com\yuntongxun\ecdemo\ui)

初始化及登陸過程分由以下四步組成:

(1) 初始化SDK

(2) 設置登錄參數

(3) 設置通知回調監聽

(4) 驗證參數是否正確,登陸SDK

特別提醒:設置登錄參數、通知回調監聽和驗證參數是否正確,登陸SDK,需要在SDK初始化成功的方法(onInitialized回調)后執行。

1、初始化SDK

初始化SDK 是調用其他功能(IM,實時音視頻,音視頻會議等)的前提,如果初始化不成功,后續的接口都無法調用。

初始化示例代碼如下:


//判斷SDK是否已經初始化
if(!ECDevice.isInitialized()) {
 /*  initial: ECSDK 初始化接口
            * 參數:
            *     inContext - Android應用上下文對象
            *     inListener - SDK初始化結果回調接口,ECDevice.InitListener
            *
            * 說明:示例在應用程序創建時初始化 SDK引用的是Application的上下文,
            *       開發者可根據開發需要調整。
            */
      ECDevice.initial(getApplicationContext(), new ECDevice.InitListener() {
           @Override
            public void onInitialized() {
            // SDK已經初始化成功
            Log.i("","初始化SDK成功");
            //設置登錄參數,可分為自定義方式和VoIP驗密方式,詳情點此查看>>
            //設置通知回調監聽包含登錄狀態監聽,接收消息監聽,VoIP呼叫事件回調監聽和
            //設置接收VoIP來電事件通知Intent等,詳情點此查看>>
            //驗證參數是否正確,登陸SDK,詳情點此查看>>        
            }
            @Override
            public void onError(Exception exception) {
            //在初始化錯誤的方法中打印錯誤原因
            Log.i("","初始化SDK失敗"+exception.getMessage());
       	 }
  	  	});
}
// 已經初始化成功,后續開發業務代碼。
Log.i(TAG, "初始化SDK及登陸代碼完成");


	

注意事項:

(1)初始化不要在application的onCreate方法中進行調用,因為如果android的application沒有創建完成時執行初始化方法,將會導致初始化無效,在后續的登錄和其他接口的調用中出現問題。

(2)如果調用初始化觸發初始化失敗onError回調??赡苁怯上铝性蛟斐桑?/p>

a、可能SDK已經處于初始化狀態(未做ECDevice.isInitialized判斷時出現)

b、SDK所聲明必要的權限未在清單文件(AndroidManifest.xml)里配置、或者未配置服務屬性android:exported="false";

c、當前手機設備系統版本低于SDK所支持的最低版本(當前SDK支持Android Build.VERSION_CODES.FROYO 以及以上版本)

2、設置登錄參數

初始化成功之后我們就可以進行登錄。登錄有兩種模式,我們選擇其中一種登錄方式即可:

(1)任意帳號體系(即自定義登錄方式)

(2)VoIP帳號體系(即VoIP驗密登錄方式)

注:推薦使用(1)自定義登錄方式。因為此方式下云通訊平臺不驗證用戶的登錄密碼,只進行應用級的驗證。提高客戶帳號創建的自由度和使用的便捷性。

示例代碼如下:

1)任意帳號體系(即自定義登錄方式)


    ECInitParams params = ECInitParams.createParams();
    params.setUserid("推薦使用客戶項目APP的登錄帳號,測試階段Userid可以填寫手機號"); 
    params.setAppKey("應用ID;登陸官網查看控制臺→應用列表→應用管理→APP ID");
    params.setToken("應用Token;登陸官網查看控制臺→應用列表→應用管理→APP TOKEN ");
    //設置登陸驗證模式:自定義登錄方式
    params.setAuthType(ECInitParams.LoginAuthType.NORMAL_AUTH);
    //LoginMode(強制上線:FORCE_LOGIN  默認登錄:AUTO。使用方式詳見注意事項)
    params.setMode(ECInitParams.LoginMode.FORCE_LOGIN);


	

2)固定VoIP帳號體系(即VoIP驗密登錄方式)


    ECInitParams params = ECInitParams.createParams();
    params.setUserid("VoIP帳號;通過創建子帳戶接口獲得");
    params.setPwd("VoIP密碼;通過創建子帳戶接口獲得");
    params.setAppKey("應用ID;登陸官網查看控制臺→應用列表→應用管理→APP ID ");
    //設置登陸驗證模式:VoIP驗密登錄方式
    params.setAuthType(ECInitParams.LoginAuthType.PASSWORD_AUTH);
	//LoginMode(強制上線:FORCE_LOGIN  默認登錄:AUTO)
    params.setMode(ECInitParams.LoginMode.FORCE_LOGIN);

	

注意事項:

(1)相同終端之間不可以登錄同一賬號,移動設備之間不可以登錄同一賬號。移動設備、平板、電腦設備、Web、PC之間可以登錄相同賬號。

(2)自定義方式(NORMAL_AUTH)登錄時候時Userid不可填VoIP帳號,否則會導致VoIP密碼失效。

(3)兩種登錄模式的使用:

a、FORCE_LOGIN :強制登錄,可以強制上線,踢掉已經在線的同終端設備。

b、AUTO:自動重連

建議在首次登陸時使用FORCE_LOGIN強制上線登錄模式,之后再次啟動APP時使用AUTO自動重連模式。

(4)SDK三種情況后會自動重連

a、登錄方式為FORCE_LOGIN類型并且登陸成功

b、客戶端使用AUTO登錄方式并登陸成功

c、手機網絡狀態改變

(5)自定義登錄方式和VoIP驗密登錄方式在開發者正式項目中只可選用一種。

3、設置通知回調監聽

登錄參數設置完成后,開發者可根據業務需要設置回調監聽。如下表所示:

監聽

說明

約束

OnECDeviceConnectListener

登錄回調監聽

必須設置

OnChatReceiveListener

IM接收消息監聽

使用IM功能時設置

OnVoIPListener

VoIP通話狀態監聽

使用VoIP功能時設置

OnMeetingListener

音視頻會議回調監聽

使用音視頻會議時設置

說明:

(1)登錄回調監聽將SDK登錄狀態反饋給APP層,是所有通訊功能的基礎,因此必須設置。

(2)其他關于IM、VoIP通話、音視頻功能的回調監聽可根據業務使用情況進行增減,相互之間沒有影響。

示例代碼如下:


    //設置登錄回調監聽
    ECDevice.setOnDeviceConnectListener(new ECDevice.OnECDeviceConnectListener() {
            public void onConnect() {
              //兼容舊版本的方法,不必處理
            }

            @Override
            public void onDisconnect(ECError error) {
            //兼容舊版本的方法,不必處理
            }
			
            @Override
            public void onConnectState(ECDevice.ECConnectState state, ECError error) {
                if(state == ECDevice.ECConnectState.CONNECT_FAILED ){
                   if(error.errorCode == SdkErrorCode.SDK_KICKED_OFF) {
				Log.i("","==帳號異地登陸");	
                   }
                   else
                   {
                       Log.i("","==其他登錄失敗,錯誤碼:"+ error.errorCode);
                   }
                    return ;
                }
                else if(state == ECDevice.ECConnectState.CONNECT_SUCCESS) {
                       Log.i("","==登陸成功");
                }
            }
        });

    //IM接收消息監聽,使用IM功能的開發者需要設置。
    ECDevice.setOnChatReceiveListener(new OnChatReceiveListener() {
        @Override
        public void OnReceivedMessage(ECMessage msg) {
        Log.i("","==收到新消息");
        }

        @Override
        public void OnReceiveGroupNoticeMessage(ECGroupNoticeMessage notice) {
        //收到群組通知消息,可以根據ECGroupNoticeMessage.ECGroupMessageType類型區分不同消息類型
        Log.i("","==收到群組通知消息(有人加入、退出...)");
        }

        @Override
        public void onOfflineMessageCount(int count) {
            // 登陸成功之后SDK回調該接口通知帳號離線消息數
        }

        @Override
        public void onReceiveOfflineMessage(List msgs) {
            // SDK根據應用設置的離線消息拉取規則通知應用離線消息
        }

        @Override
        public void onReceiveOfflineMessageCompletion() {
            // SDK通知應用離線消息拉取完成
        }

        @Override
        public void onServicePersonVersion(int version) {
            // SDK通知應用當前帳號的個人信息版本號
        }
    });
    
    // VoIP通話狀態監聽,使用VoIP通話功能的開發者需要設置。
    ECVoIPCallManager callInterface = ECDevice.getECVoIPCallManager();
    if(callInterface != null) {
        callInterface.setOnVoIPCallListener(new ECVoIPCallManager.OnVoIPListener() {
            @Override
            public void onCallEvents(ECVoIPCallManager.VoIPCall voipCall) {
                // 處理呼叫事件回調
                if(voipCall == null) {
                    Log.e("SDKCoreHelper", "handle call event error , voipCall null");
                    return ;
                 }
                 // 根據不同的事件通知類型來處理不同的業務
                 ECVoIPCallManager.ECCallState callState = voipCall.callState;
                switch (callState) {
                    case ECCALL_PROCEEDING:
                    Log.i("","正在連接服務器處理呼叫請求,callid:"+voipCall.callId);
                        break;
                    case ECCALL_ALERTING:
                    Log.i("","呼叫到達對方,正在振鈴,callid:"+voipCall.callId);
                        break;
                    case ECCALL_ANSWERED:
                    Log.i("","對方接聽本次呼叫,callid:"+voipCall.callId);
                        break;
                    case ECCALL_FAILED:
                        // 本次呼叫失敗,根據失敗原因進行業務處理或跳轉
                    Log.i("","called:"+voipCall.callId+",reason:"+ voipCall.reason);
                        break;
                    case ECCALL_RELEASED:
                        // 通話釋放[完成一次呼叫]
                        break;
                    default:
                        Log.e("SDKCoreHelper", "handle call event error , callState " + callState);
                        break;
                }
            }
        });
    } 

    //音視頻會議回調監聽,使用音視頻會議功能的開發者需要設置。
    if(ECDevice.getECMeetingManager() != null) {
            ECDevice.getECMeetingManager().setOnMeetingListener(new OnMeetingListener() {
                @Override
                Public void onReceiveInterPhoneMeetingMsg(ECInterPhoneMeetingMsg msg) {
                    // 處理實時對講消息Push
                }

                @Override
                public void onReceiveVoiceMeetingMsg(ECVoiceMeetingMsg msg) {
                    // 處理語音會議消息push
                }

                @Override
                public void onReceiveVideoMeetingMsg(ECVideoMeetingMsg msg) {
                    // 處理視頻會議消息Push(暫未提供)
                }
            });
        }

    // 接收來電時,需要設置接收VoIP來電事件通知Intent。用于SDK回調對應的activity。
    // 呼入activity在sdk初始化的回 調onInitialized中設置。
    // 呼入界面activity、開發者需創建或修改VoIPCallActivity類,可參考demo中的
    // VoIPCallActivity.java(demo中的目錄:\app\src\main\java\com\yuntongxun\ecdemo\ui\voip)
	Intent intent = new Intent(getInstance().mContext, VoIPCallActivity.class);
	intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	PendingIntent pendingIntent = PendingIntent.getActivity( getInstance().mContext, 0, intent, 
	PendingIntent.FLAG_UPDATE_CURRENT);
        ECDevice.setPendingIntent(pendingIntent);


	

注意事項:

回調監聽要放在初始化成功的onInitialized回調方法里面,這樣保證登錄成功之后就可以接收到他人的來電、消息、會議等。

4、登錄SDK

設置完成登錄參數和通知回調監聽,接下來調用驗證參數并登錄SDK。如果返回是true,則說明參數正確。

	
 //驗證參數是否正確
if(params.validate()) {
    // 登錄函數
    ECDevice.login(params);
}
	

接下來我們可以測試是否登錄成功。調試登錄回調監聽(ECDevice.OnECDeviceConnectListener)來判斷連接狀態。登錄成功的errorcode為200。

主站蜘蛛池模板: 国户精品久久久久久久久久久不卡 | 日本精品视频在线 | 日韩国产一区二区 | 福利av在线 | 日本不卡在线视频 | 久久久久久精 | 亚洲久久| 欧美xxxx做受欧美 | 99视频精品| 日韩av第一页 | 视频一区在线观看 | 亚洲欧美日韩电影 | 国产二区精品视频 | 亚洲欧洲成人av每日更新 | 一区二区视频在线观看 | 成人亚洲综合 | 中文字幕11页 | 国产精品久久久久久妇女6080 | 亚洲国产精品人人爽夜夜爽 | 欧美性网站 | 日韩精品一区二区三区免费视频 | 国内自拍真实伦在线观看 | 婷婷久久精品一区二区 | 精品视频一区二区三区 | 在线观看黄色电影 | 一区二区三区不卡视频 | 亚洲少妇综合网 | 一区二区国产精品 | 91国在线观看 | 国产亚洲精品久久午夜玫瑰园 | 在线免费观看欧美 | 亚洲乱码国产乱码精品精的特点 | 亚洲最大的成人网 | 日本久久黄色 | av中文字幕在线 | 国产综合久久久久久鬼色 | 天天操网 | 精品色 | 日韩在线看片 | 久久网亚洲 | 99精品在线观看 |