Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android集成環信步驟

android集成環信步驟

編輯:關於Android編程

前一陣時間一直以為環信不能被個人用戶注冊,結果現在想試試結果真的注冊進來了,各種打臉。今天趁著晚上有時間把環信繼承的步驟做一個記錄,方便以後的童鞋們能夠快速的集成。

1.第一步:肯定是創建應用喽

那麼具體步驟為了避免大家看的煩躁,我就不一一截圖了,而是將官網的連接地址給大家po過來

http://docs.easemob.com/im/000quickstart/10register

當然從這個連接中可以清楚的看到

 

\

 

感覺這一巴掌真痛!!!

當然官方的文檔多少有點出入,沒關系,只需要創建好自己的應用就可以了。

第一步so easy

2.第二步:下載sdk

不用多說,照著文檔下載就行。po上網址:

http://www.easemob.com/download/im

 

\

 

解壓後是這樣的。

考慮到開發者需求不一樣,在下載的 SDK 中,提供了兩個不同的 jar 包:

一個是 libs 下帶實時語音功能和實時視頻功能的 jar 包和 so 文件。

如果你不需要實時語音、實時視頻功能,那就直接用 libs.without.audio 文件夾下的 jar 包及 so 文件。

在這裡主要介紹後面四個文件夾內容:

doc 文件夾:SDK 相關API文檔

examples 文件夾:ChatDemoUI3.0(Demo,依賴 EaseUI 庫)、EaseUI

libs 文件夾:包含IM和實時音視頻功能所需要的 jar 和 so 文件

libs.without.audio 文件夾:無實時語音、實時視頻功能的 SDK 包,如果項目中只用到聊天功能,可以把項目裡的 jar 和 so 文件替換成此文件夾裡的 3.第三步:配置工程環境

簡單的說,就是往你的項目中去粘貼東西就行了。

在自行開發的應用中,集成環信聊天需要把 libs 文件夾下的 jar 及 so 文件復制到你的項目的 libs 文件夾相應位置,如果不需要語音和視頻通話功能,導入libs.without.audio 下的文件即可。

如圖:

 

\

 

引入so文件有兩種方法:

方法一:

· 在“src/main”目錄中新建名為“jniLibs”的目錄;

· 將so文件復制、粘貼到“jniLibs”目錄內。

注:如果沒有引用so文件,可能會在程序執行的時候加載類庫失敗,有類似如下的DEBUG提示:

java.lang.UnsatisfiedLinkError: Couldn't load library xxxx from loader dalvik.system.PathClassLoader

 

\

 

方法二:

· 把so文件拷貝到libs文件夾下

· 在build.gradle文件中配置

 

\

 

 

\

 

好啦,這樣就可以輕松的把so文件引入到你的工程中了。

4.第四步,配置代碼環境

在清單文件 AndroidManifest.xml 裡加入以下權限,以及寫上你注冊的 AppKey。

權限配置(實際開發中可能需要更多的權限,可參考 Demo):

android:name="app.MyApp"

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:supportsRtl="true"

android:theme="@style/AppTheme">

android:name=".ChatActivity"

android:windowSoftInputMode="adjustResize|stateHidden">

關於 EASEMOB_APPKEY 對應的 value 獲取,在創建應用後,申請 AppKey 並進行相關配置。(環信 Demo 中 AppKey 為 easemob-demo#chatdemoui)

接下來是對自己創建的application進行初始化配置:

packageapp;

importandroid.app.ActivityManager;

importandroid.app.Application;

importandroid.content.Context;

importcom.hyphenate.chat.EMClient;

importcom.hyphenate.chat.EMOptions;

importjava.util.Iterator;

importjava.util.List;

/**

*Createdbyguajuon2016/9/12.

*/

publicclassMyAppextendsApplication{

//上下文菜單

privateContextmContext;

//記錄是否已經初始化

privatebooleanisInit=false;

@Override

publicvoidonCreate(){

super.onCreate();

mContext=this;

//初始化環信SDK

initEasemob();

}

/**

*

*/

privatevoidinitEasemob(){

//獲取當前進程id並取得進程名

intpid=android.os.Process.myPid();

StringprocessAppName=getAppName(pid);

/**

*如果app啟用了遠程的service,此application:onCreate會被調用2次

*為了防止環信SDK被初始化2次,加此判斷會保證SDK被初始化1次

*默認的app會在以包名為默認的processname下運行,如果查到的processname不是app的processname就立即返回

*/

if(processAppName==null||!processAppName.equalsIgnoreCase(mContext.getPackageName())){

//則此application的onCreate是被service調用的,直接返回

return;

}

if(isInit){

return;

}

/**

*SDK初始化的一些配置

*關於EMOptions可以參考官方的API文檔

*http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1_e_m_options.html

*/

EMOptionsoptions=newEMOptions();

//設置Appkey,如果配置文件已經配置,這裡可以不用設置

//options.setAppKey("guaju");

//設置自動登錄

options.setAutoLogin(true);

//設置是否需要發送已讀回執

options.setRequireAck(true);

//設置是否需要發送回執,TODO這個暫時有bug,上層收不到發送回執

options.setRequireDeliveryAck(true);

//設置是否需要服務器收到消息確認

options.setRequireServerAck(true);

//收到好友申請是否自動同意,如果是自動同意就不會收到好友請求的回調,因為sdk會自動處理,默認為true

options.setAcceptInvitationAlways(false);

//設置是否自動接收加群邀請,如果設置了當收到群邀請會自動同意加入

options.setAutoAcceptGroupInvitation(false);

//設置(主動或被動)退出群組時,是否刪除群聊聊天記錄

options.setDeleteMessagesAsExitGroup(false);

//設置是否允許聊天室的Owner離開並刪除聊天室的會話

options.allowChatroomOwnerLeave(true);

//設置googleGCM推送id,國內可以不用設置

//options.setGCMNumber(MLConstants.ML_GCM_NUMBER);

//設置集成小米推送的appid和appkey

//options.setMipushConfig(MLConstants.ML_MI_APP_ID,MLConstants.ML_MI_APP_KEY);

//調用初始化方法初始化sdk

EMClient.getInstance().init(mContext,options);

//設置開啟debug模式

EMClient.getInstance().setDebugMode(true);

//設置初始化已經完成

isInit=true;

}

/**

*根據Pid獲取當前進程的名字,一般就是當前app的包名

*

*@parampid進程的id

*@return返回進程的名字

*/

privateStringgetAppName(intpid){

StringprocessName=null;

ActivityManageractivityManager=(ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);

Listlist=activityManager.getRunningAppProcesses();

Iteratori=list.iterator();

while(i.hasNext()){

ActivityManager.RunningAppProcessInfoinfo=(ActivityManager.RunningAppProcessInfo)(i.next());

try{

if(info.pid==pid){

//根據進程的信息獲取當前進程的名字

processName=info.processName;

//返回當前進程名

returnprocessName;

}

}catch(Exceptione){

e.printStackTrace();

}

}

//沒有匹配的項,返回為null

returnnull;

}

}

 

錨點
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved