記錄集成融雲即時通訊筆記(二)——好友聊天

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章