腾讯IM即时通讯(2.4.1)

来源:互联网 发布:苹果实用软件推荐 编辑:程序博客网 时间:2024/05/18 02:40

可以参考另外两篇博客(另外感谢)

http://blog.csdn.net/chenshuaiforwork/article/details/52910974

http://blog.csdn.net/chenshuaiforwork/article/details/52710341


在https://www.qcloud.com/product/im中下载SDK、查看集成文档

ImSDK 支持 JDK 1.6 和 Android SDK version 14 以上系统。

导入jar、so,添加权限、注册IM广播服务

libs/bugly_1.3.0_imsdk_release.jarlibs/imsdk.jarlibs/mobilepb.jarlibs/qalsdk.jarlibs/tls_sdk.jarlibs/wup-1.0.0-SNAPSHOT.jarlibs/soload.jarlibs/armeabi/lib_imcore_jni_gyp.solibs/armeabi/libBugly.solibs/armeabi/libqalcodecwrapper.solibs/armeabi/libqalmsfboot.solibs/armeabi/libwtcrypto.solibs/armeabi-v7a/lib_imcore_jni_gyp.solibs/armeabi-v7a/libBugly.solibs/armeabi-v7a/libqalcodecwrapper.solibs/armeabi-v7a/libqalmsfboot.solibs/armeabi-v7a/libwtcrypto.solibs/arm64-v8a/lib_imcore_jni_gyp.solibs/arm64-v8a/libBugly.solibs/arm64-v8a/libqalcodecwrapper.solibs/arm64-v8a/libqalmsfboot.solibs/arm64-v8a/libwtcrypto.solibs/x86/lib_imcore_jni_gyp.solibs/x86/libBugly.solibs/x86/libqalcodecwrapper.solibs/x86/libqalmsfboot.solibs/x86/libwtcrypto.solibs/x86_64/lib_imcore_jni_gyp.solibs/x86_64/libBugly.solibs/x86_64/libqalcodecwrapper.solibs/x86_64/libqalmsfboot.solibs/x86_64/libwtcrypto.so
bugly_1.3.0_imsdk_release.jarcrash上报jar包, 如不需要可删除,并调用TIMManager中的disableCrashReport进行禁用imsdk.jarIMSDK的jar包mobilepb.jarprotobuffer处理相关jar包qalsdk.jarSDK网络层jar包tls_sdk.jar帐号系统jar包wup-1.0.0-SNAPSHOT.jar无线统一协议jar包soload.jar提高imsdk so库的加载成功率

<uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.CAMERA" />    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />    <uses-permission android:name="android.permission.GET_TASKS" />    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />    <uses-permission android:name="android.permission.READ_LOGS" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />    <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_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

 <!--腾讯IM-->        <!--  消息收发service -->        <service            android:name="com.tencent.qalsdk.service.QalService"            android:exported="false"            android:process=":QALSERVICE" />        <!--  消息收发辅助service -->        <service            android:name="com.tencent.qalsdk.service.QalAssistService"            android:exported="false"            android:process=":QALSERVICE" />        <!--  离线消息广播接收器 -->        <receiver            android:name="com.tencent.qalsdk.QALBroadcastReceiver"            android:exported="false">            <intent-filter>                <action android:name="com.tencent.qalsdk.broadcast.qal" />            </intent-filter>        </receiver>        <!--  系统消息广播接收器 -->        <receiver            android:name="com.tencent.qalsdk.core.NetConnInfoCenter"            android:process=":QALSERVICE">            <intent-filter>                <action android:name="android.intent.action.BOOT_COMPLETED" />            </intent-filter>            <intent-filter>                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />            </intent-filter>            <intent-filter>                <action android:name="android.intent.action.TIME_SET" />            </intent-filter>            <intent-filter>                <action android:name="android.intent.action.TIMEZONE_CHANGED" />            </intent-filter>        </receiver>
在Application

 //设置用户状态变更监听器,在回调中进行相应的处理        TIMManager.getInstance().setUserStatusListener(new TIMUserStatusListener() {            @Override            public void onForceOffline() {                ToastUtil.showToast(CONTEXT, "账号在其他设备登陆");            }            @Override            public void onUserSigExpired() {                //票据过期,需要换票后重新登录                ToastUtil.showToast(CONTEXT, "请重新登陆");            }        });
if (MsfSdkUtils.isMainProcess(CONTEXT)) {            TIMManager.getInstance().setOfflinePushListener(new TIMOfflinePushListener() {                @Override                public void handleNotification(TIMOfflinePushNotification notification) {                    if (notification.getGroupReceiveMsgOpt() == TIMGroupReceiveMessageOpt.ReceiveAndNotify) {                        //消息被设置为需要提醒,暂时没有做点击后的处理                        notification.doNotify(getApplicationContext(), R.mipmap.ic_launcher);                    }                }            });        }

初始化IMSdk(获取SDK版本似乎仅在Eclipse有效)

 TIMManager.getInstance(); TIMManager.getInstance().init(this);
通过后台接口获取userSig(这是独立模式,托管模式看文档吧)

登陆SDK

/**     * 登陆IMSDK     */    public static void loginSig(final Context context, String userSig, final String userName) {        TIMUser user = new TIMUser();        user.setIdentifier(userName);//userName用户名(id)        user.setAccountType(API.AccountType);//账号类型、由腾讯分配        user.setAppIdAt3rd(API.sdkAppId + "");//与AppId相同的字符串        //发起登录请求        TIMManager.getInstance().login(                API.sdkAppId, //sdkAppId,由腾讯分配                user,                userSig,//用户帐号签名,由私钥加密获得,具体请参考文档                new TIMCallBack() {//回调接口                    @Override                    public void onSuccess() {//登录成功                        ToastUtil.showToast(context, "userSig登陆成功,用戶名:" + TIMManager.getInstance().getLoginUser());                    }                    @Override                    public void onError(int code, String desc) {//登录失败                        CodeToa(context, code);                    }                });    }


创建房间

 ArrayList<String> list = new ArrayList<>();        list.add("");//被邀请人用户名        TIMGroupManager.getInstance().createGroup(                "Private",          //群组类型: 目前仅支持私有群                list,               //待加入群组的用户列表                RoomName,       //群组名称                cb);//创建房间回调    TIMValueCallBack<String> cb = new TIMValueCallBack<String>() {        @Override        public void onError(int code, String desc) {            AbLogUtil.e("创建", "create group failed: " + code + " desc");            ILVBSDK.CodeToa(getActivity(), code);        }        @Override        public void onSuccess(String s) { //回调返回创建的群组Id            Bundle bundle = new Bundle();            bundle.putString("RoomId", s);            MyApplication.openActivity(getActivity(), InterviewRoomActivity.class, bundle);            SharedPreferencesUtil.putSharePre(getActivity(), "RoomId", s);            AbLogUtil.e("房间Id", s);            ToastUtil.showToast(getActivity(), "创建成功,房间id:" + s);        }    };

进入房间


</有时间补充>


0 0