记录集成融云即时通讯笔记(二)——好友聊天

2.1、会话列表:

自定义会话列表界面

    @Override
    public void initView() {
        // 融云的权限相关
        // RongYPermission.requestEasePermission(this);
        // 加入自定义会话列表
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .add(R.id.fragment_container, initConversationList())
                .commit();
    }

    /**
     * 自定义会话列表
     * @return
     */
private Fragment initConversationList() {
        ConversationListFragment listFragment = new ConversationListFragment();
        listFragment.setAdapter(new ConversationListAdapter(RongContext.getInstance()));
        Uri uri = Uri.parse("rong://" + getApplicationInfo().packageName).buildUpon()
                .appendPath("conversationlist")
                //设置私聊会话是否聚合显示
                .appendQueryParameter(Conversation.ConversationType.PRIVATE.getName(), "false")
                //系统
                // .appendQueryParameter(Conversation.ConversationType.SYSTEM.getName(), "true")
                .build();
        listFragment.setUri(uri);
        return listFragment;
    }

打开会话界面

/**
 * 启动会话界面
 */
RongIM.getInstance().startPrivateChat(Context context, String targetUserId, String title);
2.2、会话页面:

只需要配置布局文件即可

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

  <fragment
      android:id="@+id/conversation"
      android:name="io.rong.imkit.fragment.ConversationFragment"
      android:layout_width="match_parent"
      android:layout_height="match_parent" />
</LinearLayout>

AndroidManifest.xml文件下注册:
注意:android:host 为您应用的包名

        <!--会话列表-->
        <activity
            android:name=".XXActivity"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateHidden|adjustResize">

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />

                <data
                    android:host="应用包名"
                    android:pathPrefix="/conversationlist"
                    android:scheme="rong" />
            </intent-filter>
        </activity>

        <!--会话界面-->
        <activity
            android:name=".XXActivity"
            android:screenOrientation="portrait"
            android:launchMode="singleTask"
            android:windowSoftInputMode="stateHidden|adjustResize">

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />

                <data
                    android:host="应用包名"
                    android:pathPrefix="/conversation/"
                    android:scheme="rong" />
            </intent-filter>
        </activity>
2.3、监听消息个数

先继承IUnReadMessageObserver,在分别注册和反注册

    @Override
    protected void onResume() {
        super.onResume();
        RongIM.getInstance().addUnReadMessageCountChangedObserver(this,
                Conversation.ConversationType.PRIVATE);
    }

    @Override
    protected void onStop() {
        super.onStop();
        RongIM.getInstance().removeUnReadMessageCountChangedObserver(this);
    }
2.4、高德地图使用注意**

注意:项目中已经继承的高德地图要换成融云的,版本最好也不要更改,不然用融云继承好的地图模块会有问题。

2.5、添加好友与删除好友

添加好友与删除好友这块是由我们自己来维护的,A删除好友B,A应用里和B相关的信息立即删除,但是B可能不能立即收到这个被删除的通知,在会话列表界面还要相关记录,可以继续和A聊天,这样没法实现真正的删除啊。于是我想出A删除好友B后,直接拉入黑名单的小点子。这样,B那边有A的相关记录,也无法发送信息给A了。当然这些都是交给后台来做啦,虽然前台也能做,因为交给后台来做性价比更高。

可以修改IMKit中string资源文件下的

    <!--<string name="rc_rejected_by_blacklist_prompt">您的消息已经发出,但被对方拒收</string>-->
    <string name="rc_rejected_by_blacklist_prompt">消息发送失败,你还不是对方好友</string>
2.6、打包问题

混淆代码

# RongCloud SDK
-keepattributes Exceptions,InnerClasses

-keepattributes Signature

-keep class io.rong.** {*;}
-keep class * implements io.rong.imlib.model.MessageContent {*;}
-dontwarn io.rong.push.**
-dontnote com.xiaomi.**
-dontnote com.google.android.gms.gcm.**
-dontnote io.rong.**

# VoIP
-keep class io.agora.rtc.** {*;}

# Location
-keep class com.amap.api.**{*;}
-keep class com.amap.api.services.**{*;}

# 红包
-keep class com.google.gson.** { *; }
-keep class com.uuhelper.Application.** {*;}
-keep class net.sourceforge.zbar.** { *; }
-keep class com.google.android.gms.** { *; }
-keep class com.alipay.** {*;}
-keep class com.jrmf360.rylib.** {*;}

-ignorewarnings
# Location
-keep class com.amap.api.**{*;}
-keep class com.amap.api.services.**{*;}
#要成自己项目接受器的路径
-keep class com.eeesys.dtwjw_patient.rongyun.NotificationReceiver {*;}

注意:签名方式,单设置v2签名打包没有问题,但是融云部分功能无法使用,比如消息无法发送。

 v1SigningEnabled true
 v2SigningEnabled true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值