融云SDK集成(一)集成SDK并连接成功

声明:此博客仅为个人学习记录使用。

最近无聊时浏览了一下各大招聘网站发现,招聘要求上都有写到有im经验或者是集成过融云环信的经验。
这里博主特意去了解一下XMPP协议以及使用OpenFire服务器搭建了简易的即时聊天demo下面是地址有兴趣的朋友可以看看,不喜勿喷哈,有建议或意见都可以留言相互交流。
XMPP博客地址

集成步骤融云官网都有,这里是本人根据个人集成的激励做一个记录,获取大家也有可能碰到的。

废话不多说,进入整体,首先登陆融云官网注册一个账号那是不用说的登陆融云官网
注册好以后可以先看看官网的文档和一些功能的相关介绍。也可以下载一个融云的demo自己跑跑,感受一下融云的功能,这里就不多介绍了。
这里写图片描述

这里下载好SDK后有这些内容。
这里写图片描述
这里现在做简单集成,只需要IMLib即可。
这里写图片描述
这里写图片描述

这里到这一步选择好后直接finish,导入IMLib以后可能你使用的编译环境的版本和这个会有所不同,需要大家自己去设置了。还有就是编译工具的版本要大于21

在您集成融云 SDK 前环境要求如下:

这里来自融云官方提示:

Android SDK Build-tools 请升级到 21 及以上版本。
JAVA 编译版本 JDK 1.7 及以上版本。
使用 IMKit 需要 Android Support V4 21 及以上版本。

刚刚我们下载好的sdk文件中有一个这个目录
这里写图片描述
点击进去后
这里写图片描述
这两个copy到项目APP的libs目录下
其中MiPush是小米的推送不用的话可以不添加,接下来就是目录:PushLib\pushDaemon下的libs下的个平台的的so文件都copy到libs下。如下图:

这里写图片描述
接下来就是目录:PushLib\pushDaemon\executable下的so文件夹全部拷贝到到项目app moudle下的main文件夹下的assets目录下,AndroidStudio下是没有这个文件夹的大家自己建一个放进去就行。
这里写图片描述

做到这里接下来就是配置我们的 build.gradle了,如下是我的gradle中的代码大家注意
这里写图片描述
这里写图片描述

注意:这里要注意的是,sourceSets下的配置要配对否则会报加载so的异常。
还有就是这里我集成了IMKit,这里是一些关于Im界面的包,这里只是说连接到融云,可以先不集成进去。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion '25.0.0'
    defaultConfig {
        applicationId "com.itnb.rongclouddemo"
        minSdkVersion 9
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main {
            jni.srcDirs = []
            jniLibs.srcDirs = ['libs']
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile project(':IMKit')
    compile project(':IMLib')
}

接下来就是配置我们App下的AndroidMainFest.xml文件了。
首先是添加一些权限,在这里本人偷懒,把下载的融云demo里的权限直接copy过来了,大家根据自己需要去添加哈。

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 获取机型信息权限 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />

    <!-- 查看 Wi-Fi 状态 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 查看网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <!-- 录音 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!-- 控制振动器 -->
    <uses-permission android:name="android.permission.VIBRATE" />
    <!-- 防止设备休眠 -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
    <!--获取联系人信息,demo中演示发送通讯录消息-->
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

接下来是添加一些固定的设置如下图:
这里写图片描述
其中标签meta-data 下的 Value的值是你在融云注册的账号创建项目的appkey。
这里写图片描述
这里写图片描述
接下来就是在你的项目中创建一个Application

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        RongIM.init(this);//初始化融云
    }
}


-------------------------------------------------------------------------------------
融云提示:
关于初始化的注意事项
融云的 SDK 使用了跨进程机制来进行通信,运行后您的 App 后您会发现以下三个进程: 1、您的应用进程;2、您的应用进程: ipc,这是融云的通信进程;3、io.rong.push,这是融云的推送进程。
您可以在任意进程使用 RongIM,我们推荐初次集成的用户在主进程使用。

接下来是链接了

/**
 * <p>连接服务器,在整个应用程序全局,只需要调用一次,需在 {@link #init(Context)} 之后调用。</p>
 * <p>如果调用此接口遇到连接失败,SDK 会自动启动重连机制进行最多10次重连,分别是1, 2, 4, 8, 16, 32, 64, 128, 256, 512秒后。
 * 在这之后如果仍没有连接成功,还会在当检测到设备网络状态变化时再次进行重连。</p>
 *
 * @param token    从服务端获取的用户身份令牌(Token)。
 * @param callback 连接回调。
 * @return RongIM  客户端核心类的实例。
 */
private void connect(String token) {

    if (getApplicationInfo().packageName.equals(App.getCurProcessName(getApplicationContext()))) {

        RongIM.connect(token, new RongIMClient.ConnectCallback() {

            /**
             * Token 错误。可以从下面两点检查 1.  Token 是否过期,如果过期您需要向 App Server 重新请求一个新的 Token
             *                  2.  token 对应的 appKey 和工程里设置的 appKey 是否一致
             */
            @Override
            public void onTokenIncorrect() {

            }

            /**
             * 连接融云成功
             * @param userid 当前 token 对应的用户 id
             */
            @Override
            public void onSuccess(String userid) {
                Log.d("LoginActivity", "--onSuccess" + userid);
                startActivity(new Intent(LoginActivity.this, MainActivity.class));
                finish();
            }

            /**
             * 连接融云失败
             * @param errorCode 错误码,可到官网 查看错误码对应的注释
             */
            @Override
            public void onError(RongIMClient.ErrorCode errorCode) {

            }
        });
    }
}
其中的getCurProcessName这个方法代码如下:

public  static String getCurProcessName(Context applicationContext) {
        ActivityManager activityManager = (ActivityManager) applicationContext.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> runningApps = activityManager.getRunningAppProcesses();
        if (runningApps == null) {
            return null;
        }
        int pid = android.os.Process.myPid();
        for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) {
            if (procInfo.pid == pid) {
                return procInfo.processName;
            }
        }
        return null;
    }

这里的connect方法需要一个Token,这里的话可以在你的融云上创建的项目中获取
这里写图片描述
这里写图片描述
在你的项目中调用connect方法传入token,这里没有根据官方的提示做请求因为这里只是为了记录连接服务器。一切步骤从简。
这里写图片描述
然后运行你的项目。
这里写图片描述
在logcat中看到此条日志表示你已经成功集成了融云Sdk并链接成功。这只是第一步当人,使用融云开发im肯定不止这些,本人会奋力挖掘下面的内容,整理成blog帮助那些可能和我犯过同样问题的亲们。未完待续,么么哒…

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值