在上一阶段工作中,我的任务是集成自定义友盟微社区,在做DEMO的过程中,上网搜了很多关于这方面的信息,然而并不尽人意.所以再次写一个自己总结的社区API
友盟微社区集成文档:
对于药信APP想要嵌入友盟第三方微社区的前期research工作判断:
1.自主登陆设定: ok
2.自主发布Feed: ok
3.自主获取最新Feed: ok
4.所有话题集成Feed: ok
5.用户的评论信息以及获得的赞信息: ok
6.关于某一个话题的所有Feed获取: ok
7.给他人的赞信息: ok
8.小红点效果,未读显示: ok
9.设置分页加载功能: ok
10. feed详情数据获取: ok
11. 发评论: ok
12. 回复评论: ok
友盟微社区官方文档地址: http://dev.umeng.com/wsq/android/errorcode
一. 自定义用户信息登录友盟微社区:
定义方法:
/**
* 自定义的登录信息注入
*/
privatevoidLoginData(){
CommUser user=newCommUser(); //获取CommUser操作实例化对象
user.name="药信测试"; //自定义的用户名字
user.id="18525304446"; //自定义的用户密码
/** 用户登录注入的状态监听器 */
mCommSDK.loginToUmengServer(this, user,newLoginListener(){
@Override
publicvoidonStart(){
}
@Override
publicvoidonComplete(int i,CommUser commUser){
Log.d("tag","login result is"+ i);//获取登录结果状态码
}
});
此方法要在进入首页Feed的跳转动作的时候注入信息进去
二. 获取当前最新的Feed列表信息(获取信息已JsonObject对象形式存在):
定义方法:
/** 实例化友盟微社区CommunitySDK的操作对象 */
CommunitySDK communitySDK=com.umeng.comm.core.impl.CommunityFactory
.getCommSDK(getApplicationContext());
/**
* 获取当前最新的Feed信息列表的监听器
* onComplete()方法中arg0是获取的结果返回值
*/
communitySDK.fetchLastestFeeds(newFetchListener<FeedsResponse>(){
@Override
publicvoidonStart(){
//TODO Auto-generatedmethod stub
}
@Override
publicvoidonComplete(FeedsResponse arg0){
//TODO Auto-generatedmethod stub
try{
JSONObject jsonObject=newJSONObject();
jsonObject = arg0.mJsonObject;
StringtextString = jsonObject.getString("");
}catch(Exception e){
//TODO: handleexception
e.printStackTrace();
}
}
});
此时我们获取的jsonObject是一个Json对象,
其格式分析:
{
"items": [
{
"status": 0,
"liked": false,
"seq": 266114,
"creator": { //发表Feed的用户信息字段
"status": 0,
"name": "心想事成", //用户名称
"icon_url": {}, //用户头像
"gender": 1,
"has_followed": false,
"atype": 0,
"id": "5643f80cee785035bd4d9e7d", //用户ID
"custom": null
},
"forward_count": 0,
"image_urls": [ //Feed的主体信息中的图片
{
"360": "http://static.social.umeng.com/image_befc37663068a4e0bbd4e51869238452@360h_50Q.jpeg",
"750": "http://static.social.umeng.com/image_befc37663068a4e0bbd4e51869238452@750w_90Q.jpeg",
"origin": "http://static.social.umeng.com/image_befc37663068a4e0bbd4e51869238452",
"format": "jpeg"
},
{}
],
"is_top": 0,
"create_time": "2015-11-16 10:18:17", //Feed的发布时间
"user_mark": 0,
"id": "56493ce9ee785072b0a1db0e", //FeedId
"likes_count": 0,
"has_collected": false,
"title": "",
"origin_feed": null, //转载的Feed的主体
"custom": "",
"content": "我发布一条消息用来测试", //Feed的信息Text
"comments_count": 0,
"location": null,
"parent_feed_id": "",
"related_user": [ ],
"is_recommended": false,
"type": 0,
"topics": [ ],
},
三. 即时发布Feed信息:
方法定义:
// 创建CommUser前必须先初始化CommunitySDK
FeedItem feedItem=newFeedItem();
feedItem.id="100";// Feed的id
feedItem.text="咱们说一个到一个,说到那个说那个";// Feed的文本信息
CommunitySDK communitySDK = com.umeng.comm.core.impl.CommunityFactory
.getCommSDK(getApplicationContext());
communitySDK.postFeed(feedItem,null);
把这个方法定义为一个PostFeed(),在Intent的时候注入信息
参数说明
- newFeed : 要发布的feed 文字、赞、话题、图片等数据都存储在该对象中,数据字典都为共有字段,每个字段的含义请参考api_docs中的文档。
- listener : 监听器,发布结果的回调
四. 获取当前社区所有可关注的话题信息列表(注:从第四条开始到第八条方法定义只写方法,具体实现请联想本文第二条)
方法定义:
Void fetchTopics(Listeners.FetchListener<TopicResponse> listener)
接口数据类型分析:
{
"items": [
{
"description": null,
"fan_count": 122,
"icon_url": "http://static.social.umeng.com/portal_bfbac3089594ecce9161a3a73b881d36@18-18-144-144a_80w_90Q.jpg", //话题的头像
"is_focused": false, //是否关注的返回值
"custom": "",
"create_time": "2015-09-21 17:13:19",
"icon_urls": {}, //话题的头像
"feed_count": 134,
"id": "55ffca2f41db1a17e9b60541", //话题的TopicId
"name": "测试话题集" //话题名称
},
],
"navigator": null
}
五. 获取当前话题的所有Feed信息列表:
方法定义:
Void fetchTopicFeed(String topicId,FeedOrderorder,Listeners.FetchListener<FeedsResponse> listener)
参数说明
- topicId : 要获取feed的话题id
- order : 排序。取值如下:
FeedOrder.DESC_COMMENT(按照评论降序排列)、
FeedOrder.ASC_COMMENT(按照评论数升序排列)、
FeedOrder.DESC_LIKE(按照点赞降序排列)、
FeedOrder.ASC_LIKE(按照点赞数升序排列)、
FeedOrder.DESC_FORWARD(按照转发降序排列)、
FeedOrder.ASC_FORWARD(按照转发数升序排列)、
FeedOrder.DESC_ACTION(按评论或赞或转发最新时间降序排序)、
FeedOrder.ASC_ACTION(按评论或赞或转发最新时间升序排序) - listener : 监听器,获取结果的回调
{
"top_items": [ ],
"navigator": null,
"items": [
{
"status": 0,
"liked": false,
"seq": 266609,
"creator": { //对应着相应的用户信息
"status": 0,
"name": "永恒乐章",
"icon_url": {},
"gender": 1,
"has_followed": false,
"atype": 0,
"id": "5645778f7019c930fc3b1572",
"custom": "null"
},
"forward_count": 0,
"image_urls": [ ],
"is_top": 0,
"create_time": "2015-11-16 14:39:36",
"user_mark": 0,
"id": "56497a287019c91f143f02c0",
"likes_count": 0,
"has_collected": false,
"title": "",
"origin_feed": null,
"custom": "",
"content": "系统通知消息没有推送啊,我已经集成了推送,并且有人@的时候能推送,但发送系统消息没有推送啊#问题反馈# #测试话题集# @友盟微社区 @武媚娘", //Feed的文本
"comments_count": 0,
"location": {},
"parent_feed_id": "",
"related_user": [],
"is_recommended": false,
"type": 0,
"topics": [ //这个Feed属于哪一个话题
{
"create_time": "2015-02-04 11:36:23",
"description": "问题反馈讨论区",
"name": "问题反馈",
"icon_url": "http://static.social.umeng.com/portal_cef1d2b23bd290d4d332e9a7122a43ca@20-13-277-277a_80w_90Q.jpg",
"id": "54d193b7ee7850207a2315dc",
"custom": ""
},
{
"create_time": "2015-09-21 17:13:19",
"description": null,
"name": "测试话题集",
"icon_url": "http://static.social.umeng.com/portal_bfbac3089594ecce9161a3a73b881d36@18-18-144-144a_80w_90Q.jpg",
"id": "55ffca2f41db1a17e9b60541",
"custom": ""
}
],
"share_link": "http://wsq.umeng.com/feeds/56497a287019c91f143f02c0/"
},
]
}
六. 获取用户的所有收到的评论:
方法定义:
publicvoidfetchReceivedComment(int start,SimpleFetchListener<CommentResponse> listener)
参数说明
- start : 起始位置
- listener : 回调函数,在回调中获取收到的评论列表
接口数据类型分析:
{
Items[
{
Creator[] //当前用户信息(_具体集合内部信息注释可参照前面所做的JSON格式解析)
Feed[ //当前评论的Feed主体
Creator[] //当前评论的Feed的发布人
]
}
]
}
七. 获取用户的所有收到的赞信息:
方法定义:
publicvoidfetchUserLikes(int start,final SimpleFetchListener<LikesResponse> listener);
参数说明
- start : 起始位置
- listener : 回调函数,在回调中获取收到的赞列表
接口数据类型分析:
{
Items[
{
Creator[] //当前用户信息(_具体集合内部信息注释可参照前面所做的JSON格式解析)
Feed[ //当前评论的Feed主体
Creator[] //当前评论的Feed的发布人
]
}
]
}
八. 获取用户给他人的所有评论信息:
方法定义:
publicvoidfetchPostedComment(int start,SimpleFetchListener<CommentResponse> listener)
参数说明
- start : 起始位置
- listener : 回调函数,在回调中获取发出的评论列表
接口数据类型分析:
{
Items[
{
Creator[] //当前用户信息(_具体集合内部信息注释可参照前面所做的JSON格式解析)
Feed[ //当前评论的Feed主体
Creator[] //当前评论的Feed的发布人
]
}
]
}
九. 获取用户发出的赞信息:
方法定义:
publicvoidfetchLikedRecords(String uid,final FetchListener<LikeMeResponse> listener);
参数说明:
· uid : 用户ID
· listener :回调函数,在回调中获取记录列表
接口数据类型分析:
{
Items[
{
Creator[] //当前用户信息(_具体集合内部信息注释可参照前面所做的JSON格式解析)
Feed[ //当前评论的Feed主体
Creator[] //当前评论的Feed的发布人
]
}
]
}
十. 小红点未读设置:
方法定义:
/**
* 初始化微社区的配置</br>
* @param listener 回调函数
*/
public voidinitCommConfig(SimpleFetchListener<ConfigResponse> listener);
参数定义:
total总数,like喜欢数,notice消息数,commet评论数
十一.分页加载数据:
方法定义:
communitySDK.fetchNextPageData(Url,FeedsResponse.class,
newFetchListener<FeedsResponse>(){}
// 第一个参数是URL地址,第二个是返回Response的类型,第三个是Listener
参数类别:
FeedsResponse Feed下一页方法需要的参数
CommentResponse 评论的下一页方法需要的参数
TopicResponse 话题的下一页方法需要的参数
LikesResponse 赞相关的信息的下一页方法需要的参数
十二.feed详情界面数据获取:
方法定义:
voidfetchFeedWithId(Stringfeedid,Listeners.FetchListener<FeedItemResponse> listener)
参数说明
- feedId : 要获取的feed id
- listener : 监听器,获取结果的回调
publicvoidfetchFeedsWithIds(List<String> feedIdList,finalFetchListener<FeedsResponse> listener);
参数说明
- feedIdList : Feedid列表
- listener : 回调函数,在该回调中获取feed列表
注:该接口返回的Feed中不包括like、comment信息。
publicvoidfetchComplexFeedsWhithIds(List<String> feedIdList,finalFetchListener<FeedsResponse> listener);
参数说明
- feedIdList : FeedId列表
- listener : 回调函数,在该回调中返回feed列表
注:该接口返回的feed中包括like、comment信息
参数类型:
十三.发布评论数据:
方法定义:
void postComment(Comment comment,Listeners.FetchListener<SimpleResponse> listener)
参数说明
- comment : 要发布的评论
- listener : 监听器,结果回调
例子:
publicvoidPostComment(){
CommunitySDK communitySDK =CommunityFactory
.getCommSDK(getApplicationContext());
Comment comment=newComment();
comment.feedId="564ed67c7019c91813f0caaa";
comment.text="第一次评论";
communitySDK.postComment(comment,newFetchListener<SimpleResponse>(){
@Override
publicvoidonComplete(SimpleResponse arg0){
//TODO Auto-generatedmethod stub
JSONObject jsonObject=newJSONObject();
jsonObject = arg0.mJsonObject;
Log.e("1111","--wwwww"+jsonObject);
}
@Override
publicvoidonStart(){
//TODO Auto-generatedmethod stub
}
});
}
十四.回复评论:
方法定义:
publicvoidPostComment(){
CommunitySDK communitySDK =CommunityFactory
.getCommSDK(getApplicationContext());
Comment comment=newComment();
comment.feedId="564ed67c7019c91813f0caaa";
comment.replyCommentId="564ed6de7019c91715b42b90"; //这是要回复的comment的Id
comment.text="第一次评论";
communitySDK.postComment(comment,newFetchListener<SimpleResponse>(){
@Override
publicvoidonComplete(SimpleResponse arg0){
//TODO Auto-generatedmethod stub
JSONObject jsonObject=newJSONObject();
jsonObject = arg0.mJsonObject;
Log.e("1111","--wwwww"+jsonObject);
}
@Override
publicvoidonStart(){
//TODO Auto-generatedmethod stub
}
});
}
十五.评论的逻辑分析:
A:发了一个文章:”中大奖了”
B:评论了这个” 中大奖了”,评论内容是”做梦”
C:回复B的”做梦”.回复为”白日做梦”
此时:在A的评论列表消息中收到两条分别为B,C的评论消息
在B的评论列表消息中收到C的评论消息