友盟如何在不同平台上分享不同数据
- 首先我们先看下友盟的默认分享
友盟默认提供了默认的分享,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(); }
- 第一种:针对不同平台使用不同监听器,以及分享不同内容
至此,解决友盟不同分享平台分享不同的分享数据。