首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

硅谷社交項目實戰(一):環信 SDK 集成與 EaseUI 模塊接入完整指南

     編輯:Java 綜合教學

環信 SDK 介紹與準備

  1. 官網:www.easemob.com
  2. 註冊賬號、閱讀集成文檔(平台架構、後台數據、數據傳遞)
  3. 下載 SDK

Demo 運行環境檢查

Gradle 版本一致性

項目 build.gradle:

buildscript {
    repositories { jcenter() }
    dependencies {
        // classpath 'com.android.tools.build:gradle:2.1.2'
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

gradle/wrapper/gradle-wrapper.properties:

# Fri May 20 14:56:58 CST 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip

依賴衝突解決

若編譯仍失敗,調整 build.gradle 依賴:

dependencies {
    compile project(':redpacketlibrary')
    compile project(':EaseUI')
    compile fileTree(dir: 'libs', include: '*.jar', exclude: 'android-support-multidex.jar')
    
    // 移除 v7 中的 v4 避免衝突
    compile ('com.android.support:appcompat-v7:23.4.0') {
        exclude module: 'support-v4'
    }
}

集成 EaseUI 模塊

1. 導入模塊並關聯主項目

File → New → Import Module 選擇 EaseUI,完成後在 settings.gradle 中確認包含:include ':app', ':EaseUI'

2. 配置 AndroidManifest.xml 權限與組件

<!-- 權限配置 -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

<!-- 環信 AppKey -->
<meta-data android:name="EASEMOB_APPKEY" android:value="atguigudemo#demo" />

<!-- SDK 服務與廣播 -->
<service android:name="com.hyphenate.chat.EMChatService" android:exported="true" />
<receiver android:name="com.hyphenate.chat.EMMonitorReceiver">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_REMOVED"/>
        <data android:scheme="package"/>
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="android.intent.action.USER_PRESENT" />
    </intent-filter>
</receiver>

3. 環信後台創建應用獲取 AppKey

登錄環信管理後台,創建應用,將 AppKey 填入上述 meta-data。

4. 創建 Application 類初始化 EaseUI

public class IMApplication extends Application {
    private static Context mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        EMOptions options = new EMOptions();
        options.setAutoAcceptGroupInvitation(false);
        options.setAcceptInvitationAlways(false);
        
        // 初始化 EaseUI
        EaseUI.getInstance().init(this, options);
        
        // 初始化模型層
        Model.getInstance().init(this);
        mContext = this;
    }

    public static Context getApplication() {
        return mContext;
    }
}

在 AndroidManifest.xml 的 <application> 標籤指定:android:name=".IMApplication"

5. 編譯錯誤排查:Dex 錯誤

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: ... exit value 2

原因:EaseUI 內含 support-v4,主項目引用 appcompat-v7(含 v4)導致重複。

解決:主項目 build.gradle 排除 v7 中的 v4:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile ('com.android.support:appcompat-v7:23.4.0') {
        exclude module: 'support-v4'
    }
    compile project(':easeui')
}

參考資源

環信官方集成文檔:CSDN 專欄

下一步預告

下一節將講解:聯系人列表頁面開發、標題欄加號跳轉添加好友、ListView 頭布局添加等 UI 實現。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved