概述
相信做开发的程序员肯定会接触到第三方分享,那么三方分享到底怎么具体集成呢,一些刚入行的新手们可能会被官方文档弄的看不太懂,所以现在想为新手们写一个基于2020年的社会化友盟分享,此文章比较简单,大神请放过
在APP中,社会化分享已经成为了一项重要的引流措施,通过分享到QQ微信等社交平台,吸引更多的用户使用APP是一项常见的方案,在Android的开发环境中,第三方分享框架也有很多,比较流行的包括极光社会化分享(shareSdk),友盟社会化分享(Ushare),mob社会化分享等gayhub上比较流行的一些开源库等,下面,我们就来一步一步地实现在APP中集成社会化分享的功能
实现步骤
- 首先,你需要在友盟的官网注册申请账号,并创建你自己的app,这一步比较简单
- 进入友盟社会化分享管理界面,添加新应用
- 因为涉及到和各个分享平台的交互,所以在集成前需要在各个平台创建应用并提交审核。创建应用后,分享,登录才做时显示的应用icon、名称、和对应开放平台设置有关,一般创建的平台有:微信,QQ,微博,钉钉等
- 注意点1 : 申请QQ登录是在QQ互联平台,不是QQ开放平台
- 注意点2 : 申请过程中可能需要企业的相关资质,如法人身份证,营业执照,税务登记等,这些需要提前准备好
- 注意点3 : 建议大家用企业账号申请第三方开放平台,不要使用个人的QQ,微信,微博等账号,这样可以避免申请人在职位变动或者离职后,导致账号管理的风险和交接麻烦
- 注意点4: 开放平台的申请多数需要审核流程,建议在项目刚开始的时候进行申请,补充相应的资料,以免之后在项目开发过程中,或者上线前耽误时间
浏览官方集成文档
根据内容总结一套比较方便的集成方式:android studio 自动化集成,无需下载sdk导入集成
- 在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】sdk maven仓库地址。如下图
代码:maven { url 'https://dl.bintray.com/umsdk/release' }
- 在工程App 对应build.gradle配置脚本dependencies段中添加基础组件库和utdid库依赖:
代码:
// 友盟implementation 'com.umeng.umsdk:common:2.2.5'
//友盟分享
implementation "com.umeng.umsdk:share-core:$rootProject.shareVersion"
implementation "com.umeng.umsdk:share-qq:$rootProject.shareVersion"
implementation "com.umeng.umsdk:share-wx:$rootProject.shareVersion"
implementation "com.umeng.umsdk:share-board:$rootProject.shareVersion"
到这里,自动集成已经结束了,下一步请注意文档上最新版本的一些注意事项,按照当前版本友盟文档的贴图
一些新的版本可能需要额外的操作,只需要跟着文档来就行,步骤简单
开始调用sdk进行分享
需要在页面的生命周期添加方法
开始分享
UMImage image = new UMImage(context, thumbImage);// 本地的缩略图UMImage imageLocal = new UMImage(context, R.mipmap.icon_round_logo);UMWeb web = new UMWeb(webUrl);// 分享的标题web.setTitle(title);// 在线缩略图如果没有的话使用本地缩略图web.setThumb(ObjectUtils.isEmpty(thumbImage) ? imageLocal : image);// 分享描述web.setDescription(description);// 使用友盟分享面板new ShareAction(context). setDisplayList(SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE) .withMedia(web) .setCallback(new UMShareListener() {// 分享回调 @Override public void onStart(SHARE_MEDIA share_media) { } @Override public void onResult(SHARE_MEDIA share_media) { ToastUtils.showShort(context.getString(R.string.toast_share_success)); } @Override public void onError(SHARE_MEDIA share_media, Throwable throwable) { ToastUtils.showShort("分享失败" + throwable.getMessage()); } @Override public void onCancel(SHARE_MEDIA share_media) { ToastUtils.showShort(context.getString(R.string.toast_cancel_share)); } }).open();
这是最常见的图文分享(使用了友盟的带面板分享),需要 传入标题,缩略图,缩略图可以是本地图片,也可以是在线图片,还需要分享地址url
分享的消息类型
纯文本分享
new ShareAction(ShareActivity.this).withText("hello").withMedia(image).share();
图片
UMImage image = new UMImage(ShareActivity.this, "imageurl");//网络图片UMImage image = new UMImage(ShareActivity.this, file);//本地文件UMImage image = new UMImage(ShareActivity.this, R.drawable.xxx);//资源文件UMImage image = new UMImage(ShareActivity.this, bitmap);//bitmap文件UMImage image = new UMImage(ShareActivity.this, byte[]);//字节流
多图分享
现在支持多图分享的平台有两个,一个是新浪微博一个是QQ空间,都是最多上传9张图片,新浪微博超过9张不会上传,QQ空间超过九张会上传QQ空间相册。
new ShareAction(ShareDetailActivity.this).withMedias(imagelocal,imagelocal,imagelocall) .setPlatform(share_media) .withText("hello") .setCallback(shareListener).share();
链接(之前的开始分享使用的就是此消息类型)
UMWeb web = new UMWeb(Defaultcontent.url); web.setTitle("This is music title");//标题 web.setThumb(thumb); //缩略图 web.setDescription("my description");//描述new ShareAction(ShareActivity.this) .withMedia(web) .share();
视频
UMVideo video = new UMVideo(videourl);video.setTitle("This is music title");//视频的标题video.setThumb("http://www.umeng.com/images/pic/social/chart_1.png");//视频的缩略图video.setDescription("my description");//视频的描述
音乐
UMusic music = new UMusic(musicurl);//音乐的播放链接music.setTitle("This is music title");//音乐的标题music.setThumb("http://www.umeng.com/images/pic/social/chart_1.png");//音乐的缩略图music.setDescription("my description");//音乐的描述music.setmTargetUrl(Defaultcontent.url);//音乐的跳转链接new ShareAction(ShareActivity.this).withMedia(music).share();
好了内容就这么多,抽空余时间整理的。有点乱。大家不要介意。按照这流程操作,分享和三方登录都是小事一桩。