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);
}
}