您的位置:首页 > 移动开发 > Android开发

Android友盟微社区第三方集成

2015-11-27 14:36 465 查看
在上一阶段工作中,我的任务是集成自定义友盟微社区,在做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"
17302
: 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的评论消息
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息