集成融雲遇到的問題合集

1.集成融雲的時候,如何提供用戶頭像和羣組頭像

通過實現內容提供者。調用自己服務器的接口來獲取。
文檔地址如下:http://www.rongcloud.cn/docs/android.html#user_info

代碼如下:在MainActivity中。

設置羣組信息提供者。和用戶信息提供者。用戶信息提供者回調接口getUserInfo(String s)s是用戶的融雲id。然後調用接口獲取。獲取之後根據數據提供UserInfo對象。然後刷新緩存,則用戶信息更新。羣組信息同理。

設置用戶信息代碼如下(在onCreate方法中調用初始化融雲的方法)

private void initRongCloud(){
		final Conversation.ConversationType[] conversationTypes = {
				Conversation.ConversationType.PRIVATE,
				Conversation.ConversationType.GROUP, Conversation.ConversationType.SYSTEM,
				Conversation.ConversationType.PUBLIC_SERVICE, Conversation.ConversationType.APP_PUBLIC_SERVICE
		};
		RongIM.getInstance().addUnReadMessageCountChangedObserver(this, conversationTypes);
//提供個人信息提供者 和羣組用戶提供者
		RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() {
			@Override
			public UserInfo getUserInfo(String s) {
				//從本地或者服務器獲取userInfo對象。s是 融雲的id。也是本地賬戶對應的融雲id  //後期獲取到了,刷新一下列表
				getUserDataFromWeb(s);
				return null;

			}
		}, true);
		RongIM.setGroupInfoProvider(new RongIM.GroupInfoProvider() {
			@Override
			public Group getGroupInfo(String s) {
				//調用接口獲取groupInfo信息。然後刷新 refreshGroupInfoCache(group);
//				Group group=new Group(s,"羣組名稱",null);
				getRongCloudGroupInfo(s);

				return null;
			}
		},true);
	}



獲取用戶信息,刷新緩存代碼,其中的entity是調用本地接口返回的對象

	UserInfo userInfo = new UserInfo(entity.getUid(),name, Uri.parse(AppConfig.PICURL + url));
	//刷新一下緩存
	RongIM.getInstance().refreshUserInfoCache(userInfo);

2.多個聯繫人發送來消息,收到通知。點擊通知跳轉不到消息列表。

是什麼原因。 原因是清單文件的配置問題。

需要在清單文件中的消息列表的activity中加上intent-filter的配置,代碼如下,記得改爲自己的包名

<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>




3.底部新消息提示的紅點。有時候會突然變得很大。(各別現象)解決辦法。在佈局文件對控件做了改動

多加了

 android:maxLines="1"
                android:visibility="invisible"



<com.jianzhile.app.ui.rongcloud.DragPointView
                android:id="@+id/seal_num"
                android:layout_width="19dp"
                android:layout_height="19dp"
                android:layout_gravity="right"
                android:layout_marginTop="2dp"
                android:layout_toRightOf="@+id/ll"
                android:textColor="@android:color/white"
                android:textSize="12sp"
                android:ellipsize="end"
                android:maxLines="1"
                android:visibility="invisible" />



4.多人聊天。第一次進入頭像都正常。然後上下滑動的時候。頭像就會出現錯位。但是id是正確的。頭像發生錯位。

出現原因是本地接口的問題。沒有頭像和暱稱。沒有返回數據。所以拿不到這個用戶的id,沒有做這個uid的刷新。所以頭像的位置放的是之前控件存放的頭像。解決辦法。就是計算沒有頭像和暱稱也要返回uid。可以設置默認頭像。然後刷新緩存數據。


5.如何進入聊天界面自動觸發自定義plugin的點擊事情,在會話頁面

 代碼如下。這個如果寫錯。之前出現過一個bug就是表情發送不出去了。別的都正常。MyPlugin是自定義的plugin,實現的IPluginModule接口。onClick是實現的接口。我們主動調用一下MyPlugin的onClick接口,難點在於如何獲取RongExtension對象。這個是重點。

ConversationFragment  fragment = (ConversationFragment) getSupportFragmentManager().findFragmentById(R.id.conversation);

        Uri uri = Uri.parse("rong://" + getApplicationInfo().packageName).buildUpon()
                .appendPath("conversation").appendPath(mConversationType.getName().toLowerCase())
                .appendQueryParameter("targetId", mTargetId).build();

        fragment.setUri(uri);
        //TODO  主動調用自定義的plugin的onClick方法。觸發自定義職位鏈接的點擊事件,判斷職位id不爲空的情況下發送。
        if(!TextUtils.isEmpty(jobs_name)) {

            RongExtension rongExtension = (RongExtension) fragment.getView().findViewById(R.id.rc_extension);
            if(rongExtension!=null) {
                rongExtension.setConversation(mConversationType, mTargetId);
                MyPlugin.getPlugin().onClick(fragment, rongExtension);
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章