集成ShareSDK
关于集成:
官网集成介绍
在manifest里添加
xmlns:tools="http://schemas.android.com/tools"
在application里添加
tools:replace="android:name"
如果您没有在AndroidManifest中设置appliaction的类名,MobSDK会将这个设置为com.mob.MobApplication,但如果您设置了,请在您自己的Application类中调用:
MobSDK.init(this);
在build.gradle(Project)里面dependencies层级下添加
//ShareSDK 集成需要添加的
classpath "com.mob.sdk:MobSDK:2018.0319.1724"
在build.gradle(APP)里面添加
//ShareSDK 集成需要添加的
apply plugin: 'com.mob.sdk'
在build.gradle(APP)里面添加(跟android块是同级的,不要添加到android块里面)
//ShareSDK 集成需要添加的
MobSDK {appKey "XXX"appSecret "XXX"ShareSDK {//平台配置信息devInfo {Wechat {appId "XX"appSecret "XX"}QQ {appId "XX"appKey "XX"shareByAppClient true}}}
配置第三方平台参数:
//ShareSDK 集成需要添加的
MobSDK {appKey "XXX"appSecret "XXXX"ShareSDK {//平台配置信息devInfo {//配置分享微信好友Wechat {appId "appId "appSecret "appSecret "}//配置分享微信朋友圈WechatMoments{appId "appId "appSecret "appSecret "}}}
}
其中Wechat字段名代表微信,WechatMoments字段名代表微信朋友圈,更多的平台对应字段名对照以下信息
官网配置字段说明
关于分享:
使用ShareSDK自带的UI弹出分享:
OnekeyShare oks = new OnekeyShare();oks.disableSSOWhenAuthorize();oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() {@Overridepublic void onShare(Platform platform, cn.sharesdk.framework.Platform.ShareParams paramsToShare) {if ("Wechat".equals(platform.getName())) {//点击微信分享paramsToShare.setTitle("标题");paramsToShare.setText("我是共用的参数,这几个平台都有text参数要求,提取出来啦");paramsToShare.setImageUrl("http://scene3d.4dage.com/images/imagesZrbrfZzI/thumbSmallImg.jpg?m=7");paramsToShare.setUrl("http://sharesdk.cn");paramsToShare.setShareType(Platform.SHARE_WEBPAGE);}if ("WechatMoments".equals(platform.getName())) {//点击朋友圈分享paramsToShare.setTitle("标题");paramsToShare.setText("我是共用的参数,这几个平台都有text参数要求,提取出来啦");paramsToShare.setImageUrl("https://hmls.hfbank.com.cn/hfapp-api/9.png");paramsToShare.setUrl("http://baidu.com");paramsToShare.setShareType(Platform.SHARE_WEBPAGE);}}});oks.setCallback(new PlatformActionListener() {@Overridepublic void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {Log.d("ShareLogin", "onComplete ----> 分享成功");}@Overridepublic void onError(Platform platform, int i, Throwable throwable) {Log.d("ShareLogin", "onComplete ----> 分享失败");}@Overridepublic void onCancel(Platform platform, int i) {Log.d("ShareLogin", "onCancel ----> 分享取消");}});// 启动分享GUIoks.show(this);
上面回调中的Wechat,以及WechatMoments分别代表Gradle里面devInfo配置的字段,弹出分享框里面的可选择分享也对应devInfo里面的配置,只配置一个就只显示微信devInfo {//配置分享微信好友Wechat {appId "appId "appSecret "appSecret "}//配置分享微信朋友圈WechatMoments{appId "appId "appSecret "appSecret "}}
自定义分享界面:
自定义好UI以后,点击不同的平台图标,弹到不同的分享客户端Platform.ShareParams sp = new Platform.ShareParams();sp.setText("测试分享的文本");
// sp.setImagePath("/mnt/sdcard/测试分享的图片.jpg");Platform tw = ShareSDK.getPlatform("Wechat");sp.setImageUrl("http://scene3d.4dage.com/images/imagesZrbrfZzI/thumbSmallImg.jpg?m=7");sp.setUrl("http://www.baidu.com");sp.setTitle("我是title");sp.setText("我是共用的参数,这几个平台都有text参数要求,提取出来啦");sp.setShareType(Platform.SHARE_WEBPAGE);// 设置分享事件回调tw.setPlatformActionListener(new PlatformActionListener() {@Overridepublic void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {ToastUtils.showLongToast(LoginActivity.this, "分享成功");}@Overridepublic void onError(Platform platform, int i, Throwable throwable) {ToastUtils.showLongToast(LoginActivity.this, "分享错误");}@Overridepublic void onCancel(Platform platform, int i) {ToastUtils.showLongToast(LoginActivity.this, "分享取消");}});// 执行分享tw.share(sp);上面ShareSDK.getPlatform("Wechat");里面的参数Wechat对应devInfo里面配置的字段,Wechat代表弹出到微信devInfo {//配置分享微信好友Wechat {appId "appId "appSecret "appSecret "}//配置分享微信朋友圈WechatMoments{appId "appId "appSecret "appSecret "}}
常用分享参数:
字段名称 | 描述 |
---|---|
text | 待分享的文本 |
imagePath | 待分享的本地图片。如果目标平台使用客户端分享,此路径不可以在/data/data下面 |
filePath | 待分享的文件路径。这个用在Dropbox和Wechat中 |
title | 分享内容的标题 |
notebook | 存放笔记的笔记本,如果不存在,会创建。一般用在印象笔记等“笔记类”平台中 |
stack | 印象笔记中的字段,用于归类笔记本 |
resource | 印象笔记中的字段,数组,暂时支持String类型和File类型的元素。如果想一次发送多个文本和图片,需要使用这个字段 |
tags | 标签,数组,部分平台支持为分享内容设置标签,可以使用这个字段 |
isPublic | 印象笔记和flickr的字段,表示是否公开 |
isFriend | flickr和VK的字段,表示是否公开给自己的朋友 |
isFamily | flickr的字段,表示是否公开给自己的家人 |
safetyLevel | flickr的字段,表示安全级别:1为安全级、2为辅导级、3为限制级 |
contentType | flickr的字段,表示相册类型:1为相片、2为屏幕截图、3为其他 |
hidden | flickr的字段,表示是否隐藏图片 |
venueName | foursquare的字段,表示分享位置的名称 |
venueDescription | foursquare的字段,表示分享位置的描述 |
latitude | 分享位置的维度 |
longitude | 分享位置的经度 |
imageUrl | 待分享的网络图片 |
comment | 对分享内容的评价。区别于text,评论一般共应用的用户自己填写,部分平台支持此字段 |
titleUrl | 分享内容标题的链接地址 |
url | 分享内容的url、在微信和易信中也使用为视频文件地址 |
address | 邮箱地址或者短信电话号码,一般在邮箱或者短信中使用 |
site | QQ空间的字段,标记分享应用的名称 |
siteUrl | QQ空间的字段,标记分享应用的网页地址 |
gropuId | VK的字段,表示图片所属的组ID。如果不设置此字段,ShareSDK会将组ID设置为ShareSDK所在的组 |
extInfo | Wecaht的字段,分享应用时,可以选择分享二进制文件或者脚本,此字段用来设置分享应用中的脚本 |
shareType | 微信和易信的字段,分享内容的类型: 分别为Platform.SHARE_TEXT(分享文本), Platform.SHARE_IMAGE(分享图片), Platform.SHARE_WEBPAGE(分享网页,既图文分享), Platform.SHARE_MUSIC(分享音频), Platform.SHARE_VIDEO(分享视频), Platform.SHARE_APPS(分享应用,仅微信支持), Platform.SHARE_FILE(分享文件,仅微信支持) Platform.SHARE_EMOJI(分享表情,仅微信支持) |
musicUrl | 微信和易信的字段,分享音频时的音频文件网络地址 |
imageData | 微信和易信的字段,各类分享内容中的图片bitmap对象,可以替代imagePatd或者imageUrl |
autdor | 有道云笔记的字段,表示分享内容的作者 |
customFlag | 自定义分享标签 |
分享类型:
分享文本 | shareType(Platform.SHARE_TEXT) | title | text | ||||
分享图片 | shareType(Platform.SHARE_IMAGE) | title | text(设置了不会显示,可选参数) | imagePath | |||
imageUrl | |||||||
imageData | |||||||
分享音乐 | shareType(Platform.SHARE_MUSIC) | title | text(朋友圈不显示此字段) | imagePath | musicUrl | url(消息点击后打开的页面) | |
imageUrl | |||||||
imageData | |||||||
分享视频 | shareType(Platform.SHARE_VIDEO) | title | text(朋友圈不显示此字段) | imagePath | url(视频网页地址) | ||
imageUrl | |||||||
imageData | |||||||
分享网页 | shareType(Platform.SHARE_WEBPAGE) | title | text(朋友圈不显示此字段) | imagePath | url | ||
imageUrl | |||||||
imageData | |||||||
分享文件 | shareType(Platform.SHARE_FILE) | title | text(朋友圈不显示此字段) | imagePath | filePath | ||
imageUrl | |||||||
imageData | |||||||
分享表情 | shareType(Platform.SHARE_EMOJI) | title | text(朋友圈不显示此字段) | imagePath | |||
imageUrl | |||||||
imageData | |||||||
分享小程序 | shareType(Platform.SHARE_WXMINIPROGRAM) | title | setWxUserName("小程序原始ID") | setWxPath("小程序页面路径") | url | text | imagePath |
imageUrl | |||||||
imageData |
上述字段中和本地路径有关的,全部使用“Path”结尾,如imagePath;和网络路劲有关的,使用“Url”结尾,如imageUrl。本地图片最好使用后缀名,否则POST文件时,可能无法正确计算文件的MIME值,从而导致发送失败。
针对主流平台说明可以参考下面具体说明(非maven的集成方式)
上述字段中和本地路径有关的,全部使用“Path”结尾,如imagePath;和网络路劲有关的,使用“Url”结尾,如imageUrl。本地图片最好使用后缀名,否则POST文件时,可能无法正确计算文件的MIME值,从而导致发送失败。
分享参数官方文档(一)
分享参数官方文档(二)
关于登录:
Toast.makeText(MainActivity.this, "Wechat登录开始", Toast.LENGTH_SHORT).show();final Platform wechat = ShareSDK.getPlatform(Wechat.NAME);/*final Platform qq = ShareSDK.getPlatform(QQ.NAME);*//*final Platform sinaweibo = ShareSDK.getPlatform(SinaWeibo.NAME);*/if (wechat.isClientValid()) {//客户端可用}if (wechat.isAuthValid()) {wechat.removeAccount(true);}wechat.setPlatformActionListener(new PlatformActionListener() {@Overridepublic void onComplete(Platform platform, int i, final HashMap<String, Object> hashMap) {/*platform.getDb().exportData()获取用户数据*/Log.d("ShareSDK", "onComplete ----> 登录成功" + platform.getDb().exportData());platform.getDb().getUserId();// 这里授权成功跳转到程序主界面了}@Overridepublic void onError(Platform platform, int i, Throwable throwable) {Log.d("ShareSDK", "onError ----> 登录失败" + throwable.toString());Log.d("ShareSDK", "onError ----> 登录失败" + throwable.getStackTrace().toString());Log.d("ShareSDK", "onError ----> 登录失败" + throwable.getMessage());}@Overridepublic void onCancel(Platform platform, int i) {Log.d("ShareSDK", "onCancel ----> 登录取消");}});wechat.SSOSetting(false);wechat.showUser(null);
申请第三方配置:
申请微信配置:
微信开发者平台
https://open.weixin.qq.com
注意事项:
微信会缓存包信息、或者appid等信息,若第一次没有调起登录、分享,修改appid等配置信息后,要去清除微信的缓存信息,否则会无效
md5分为发布版和开发板
最终打包一定要改回发布版的MD5,平常开发时需要改为开发版的MD5,否则会提示签名不一致
获取开发版和发布版的信息
集成ShareSDK相关推荐
- Mob之社会化分享集成ShareSDK
接着上篇顺便分享一篇自己使用 ShareSDK 的笔记,上篇我们集成了 SMSSDK 完成了短信接收验证码的功能,请参考Mob 之 短信验证集成 SMSSDK,如何在项目已经集成 SMSSDK 的情况 ...
- Android集成ShareSDK第三方分享和登录
本篇记录在Android平台上如何集成ShareSDK实现第三方登陆和分享,以及其中可能会遇到的坑. Mob官网 下载 如图选择你需要分享的平台: 集成 解压下载的文件,然后在ShareSDK for ...
- Android 集成ShareSDK实现三方登录
** 前言 ** 三方登录在如今差不多已经成为每一款App必备的功能了.每次集成都会遇到各种各样的问题,今天总结一下三方登录的流程,以免忘记.现在好像还没有专门的三方登录SDK,ShareSDK和友盟 ...
- quick-cocos 集成ShareSDK
1.新建Android应用.获取App Key 和App Secret 2.下载SDK,选择相应的平台.下载后打开ShareSDK for Android文件夹,点击QuickIntegrater.j ...
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能
快速集成 第一步:将下载的SDK解压后导入您的工程中,见下图(点击这里查看视频教程) 拖到工程中后弹出以下对话框,勾选"Copy items into destination group's ...
- Android 集成 ShareSdk 记录
MobSdk 隐私协议: https://www.mob.com/wiki/detailed?wiki=share_hgzn&id=14 集成: https://www.mob.com/wik ...
- 集成ShareSDK,分享成功后QQ和空间回调不执行的可能原因
AndroidMainifest.xml中的如箭头所示的id与assets下ShareSDK.xml中配置的QQ的AppId一定要相同. 转载于:https://www.cnblogs.com/rh1 ...
- iOS集成sharesdk遇到的坑
分享新浪微博 ★★★分享新浪微博★★★ 前言: 写这个目地是为了记录那些过坑,直接先上效果图.大家看看如果你遇到了应该如果处理更好,因为刚一看到这个效果的时候就明白其实很简单不就是分享微博吧.但是要求 ...
- Unity集成ShareSDK一键分享
1.首先在ShareSDK 官网下载http://mob.com/"ShareSDK社会化"分享插件,直接现在UnityforShareSDK. 2.解压,然后将ShareSDK导 ...
最新文章
- C# — 通过点击回车执行任务
- springboot 打卡功能_实战:如果让你用SpringBoot实现签到奖励的功能,你会怎么做?...
- Python培训:学完Python可以做什么?
- boost::timer::auto_cpu_timer相关的测试程序
- 拼接字符串的优雅方式
- Python3实现最小栈
- 《Python Cookbook 3rd》笔记(5.2):打印输出至文件中
- mysql innodb和myisam_Mysql InnoDB和MyISAM的区别
- java design pattern
- [APIO2009]抢掠计划
- Python2.5.4移植到arm-linux
- pytroch中的Variable()介绍
- JAVA发送邮件(163邮箱发送)
- Fortran95学习总结
- 外卖点餐系统源码|餐饮点餐源码开发
- vlan和静态路由配置实验
- 基于AT89C51单片机的电子万年历PROTEUS仿真设计
- 基因重组- 冲刺计划
- RationalDMIS7.1定制报告(Excel模板制作)
- 全国计算机科学与技术讲师电话,计算机科学与技术学院