android-友盟如何在不同平台上分享不同数据

友盟如何在不同平台上分享不同数据

  • 首先我们先看下友盟的默认分享
    友盟默认提供了默认的分享,displaylist是不同分享平台的集合,调用.withText("内容")设置分享内容,调用.withTitle("标题")设置分享的标题,调用.withTargerUrl("目标链接")设置分享的链接等等。如下是默认分享的代码:
final SHARE_MEDIA[] displaylist = new SHARE_MEDIA[]
                        {
                            SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE,SHARE_MEDIA.SINA,
                            SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE,SHARE_MEDIA.DOUBAN
                        };
                new ShareAction(this).setDisplayList( displaylist )
                        .withText( "呵呵" )
                        .withTitle("title")
                        .withTargetUrl("http://www.baidu.com")
                        .withMedia( image )
                        .setListenerList(umShareListener)
                        .open();

现在问题来了,要求你在不同的平台分享不同的内容,使用友盟默认的分享是解决不了这个需求的。比如在微信朋友圈上分享的标题是“微信朋友圈分享",内容是"微信朋友圈内容";在微信好中分享的标题是"微信好友分享",内容是"微信好友内容"。下面就去看友盟的SDK文档

  • 总共有两种方式
    • 第一种:针对不同平台使用不同监听器,以及分享不同内容
      使用ShareAction(this).setDisplayList( displaylist)可以进行分享面板的平台设置;同时使用setContentList(),可以进行不同分享内容的处理;使用setListenerList()进行不同回调的处理。
      首先定义好分享的model,如:
    ShareContent content=new ShareContent();
                 content.mTitle="标题";
                 content.mText="内容";
                 content.mMedia=new UMImage(getContext(), R.mipmap.ic_launcher);
                 content.mTargetUrl="分享链接";
    
    接着进行分享操作,如:
    new ShareAction(this).setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.QZONE)
                         .setContentList(new ShareContent(),new ShareContent())
                         .withMedia(image)
                         .setListenerList(umShareListener,umShareListener)
                         .open();
    
    • 第二种,利用分享面板点击回调实现不同分享平台分享不同的分享数据
     //这里是分享面板点击回调,对不同的分享平台分享不同的分享数据
    private ShareBoardlistener shareBoardlistener = new ShareBoardlistener() {
    
         @Override
         public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
             if (share_media == null) {
             } else {
                 if (share_media == SHARE_MEDIA.WEIXIN_CIRCLE) {
                     if (TextUtil.isNull(model.getShareModel().getMyImage())) {
                         new ShareAction(getActivity()).setPlatform(share_media)
                                 .withTitle(model.getShareModel().getMyTitle())
                                 .withText(model.getShareModel().getContent())
                                 .withMedia(new UMImage(getContext(), R.mipmap.ic_launcher))
                                 .withTargetUrl(model.getShareModel().getMyTargetUrl())
                                 .setCallback(umShareListener).share();
                     } else {
                         new ShareAction(getActivity()).setPlatform(share_media)
                                 .withTitle(model.getShareModel().getMyTitle())
                                 .withText(model.getShareModel().getContent())
                                 .withMedia(new UMImage(getContext(), model.getShareModel().getMyImage()))
                                 .withTargetUrl(model.getShareModel().getMyTargetUrl())
                                 .setCallback(umShareListener).share();
                     }
                 } else {
                     if (TextUtil.isNull(model.getShareModel().getMyImage())) {
                         new ShareAction(getActivity()).setPlatform(share_media)
                                 .withTitle(model.getShareModel().getMyTitle())
                                 .withText(model.getShareModel().getContent())
                                 .withMedia(new UMImage(getContext(), R.mipmap.ic_launcher))
                                 .withTargetUrl(model.getShareModel().getMyTargetUrl())
                                 .setCallback(umShareListener)
                                 .share();
                     } else {
                         new ShareAction(getActivity()).setPlatform(share_media)
                                 .withTitle(model.getShareModel().getMyTitle())
                                 .withText(model.getShareModel().getContent())
                                 .withMedia(new UMImage(getContext(), model.getShareModel().getMyImage()))
                                 .withTargetUrl(model.getShareModel().getMyTargetUrl())
                                 .setCallback(umShareListener)
                                 .share();
                     }
                 }
             }
         }
     };
     //使用setShareboardclickCallback() 可以进行分享面板不同按钮的点击回调
     public void shareArticle() {
          new ShareAction(getActivity()).setDisplayList(SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.WEIXIN, SHARE_MEDIA.SINA, SHARE_MEDIA.QQ)
                  .setShareboardclickCallback(shareBoardlistener)
                  .open();
      }
    

至此,解决友盟不同分享平台分享不同的分享数据。

你可能感兴趣的:(android-友盟如何在不同平台上分享不同数据)