Android社会化分享详解

前言

    现如今app市场竞争激烈,做app不会放过任何推广自己的app的渠道,如果app中没有社会化分享功能,那真的是OUT了,我们先来看下一些app中的分享界面功能吧。


       现在主流的分享平台,一般用的都是微信、QQ、微博,国外的话就Fb、Twitter等,如果每一个都要去单独加,对我们来说是耗时耗力,最重要的是每个第三方的SDK都很大,会增大很多包的体积,这个是我们最不想看到的;

     现在市面上提供了很多SDK,从集成速度,包的体积,平台多样,服务响应,用户基数上来讲,ShareSDK是个不错的选择,最重要的是,现在上了maven的集成方式,集成超快。

简单的准备工作

    下面我们看看我们需要做的准备工作,首先先确定我们想要分享的第三方平台,这里面我们就以国内主流的平台举例,微信、QQ、微博;首先我们必须去其第三方平台去申请应用得到对应的appid等信息,第三方给了appid,我们才可以去做分享;

话不多说上网站:

QQ:http://open.qq.com QQ与QZone共用一套key即可

微信:http://open.weixin.qq.com 微信好友,微信朋友圈,微信收藏共用一套key即可

微博:http://open.weibo.com

ShareSDK集成步骤

第一步,注册账号申请ShareSDK应用

     ShareSDK的AppKey直接到Mob官网申请即可。

     拿到appkey与appsecret了我们去看看文档吧,http://wiki.mob.com/进入ShareSDK快速集成文档,这个时候有人会问,问什么不下载SDK,直接开始看文档集成了呢,因为ShareSDK 提供了Gradle的maven集成方式,无需手动下载,无需手动配置资源,权限;是不是听起来很牛B,忍不住去看看;

第二步,sharesdk的maven集成

 首先、如下图所示,需要在build.gradle中配置

    maven {url "http://mvn.mob.com/android"}dependencies {classpath 'com.mob.sdk:MobSDK:+'}复制代码

添加的位置按照截图上面的配置即可;


其次,在使用到Mob产品的module下面的build.gradle文件里面添加引用

 applyplugin:'com.mob.sdk'复制代码

maven集成方式可以在Mob产品的module下面的build.gradle文件里面配置ShareSDK各个社交平台的key信息

 MobSDK {appKey "d580ad56b4b5"appSecret "7fcae59a62342e7e2759e9e397c82bdd"ShareSDK {gui true //调用ShareSDK默认的界面//平台配置信息devInfo {SinaWeibo {appKey "568898243"appSecret "38a4f8204cc784f81f9f0daaf31e02e3"callbackUri "http://www.sharesdk.cn"//回调地址,需要与微博后台配置的回调地址一致,http://bbs.mob.com/forum.php?mod=viewthread&tid=47shareByAppClient true}Wechat {appId "wxdb0f7a71c883b423"appSecret "64020361b8ec4c99936c0e3999a9f249"//登录需要配置appsecret 分享不需要配置}WechatMoments{appId "wxdb0f7a71c883b423"appSecret "64020361b8ec4c99936c0e3999a9f249"//登录需要配置appsecret 分享不需要配置bypassApproval false}QQ {appId "100371282"appKey "aed9b0303e3ed1e27bae87c33761161d"shareByAppClient true}QZone {appId "100371282"appKey "aed9b0303e3ed1e27bae87c33761161d"bypassApproval false}}}
}
复制代码

配置第三方key的字段说明可以点击这里看文档即可;


如上图所示配置完之后点击Sync Now进行重新编译,到这里我们就集成完成了,下面我们调用代码即可;

注意事项:如果您没有在AndroidManifest中设置appliaction的类名,MobSDK会将这个设置为com.mob.MobApplication,但如果您设置了,请在您自己的Application类中调用:

MobSDK.init(this);复制代码

并且在Manifest清单文件中配置:tools:replace=”android:name”,如下所示:

<applicationandroid:name = ".MyApplication"tools:replace="android:name">复制代码

第三步,代码调用

 下面的代码就是onekeyshare的分享,即ShareSDK下面配置的gui true才可以调用,下面的代码复制到您的工程中,在需要分享的地方调用即可;

private void showShare(String platformToShare) {OnekeyShare oks = new OnekeyShare();//关闭sso授权oks.disableSSOWhenAuthorize();if (platformToShare != null) {oks.setPlatform(platformToShare);}// title标题,微信、QQ和QQ空间等平台使用oks.setTitle("测试标题");// titleUrl QQ和QQ空间跳转链接oks.setTitleUrl("http://www.baidu.com");// text是分享文本,所有平台都需要这个字段oks.setText("我是分享文本");//分享网络图片、分享本地图片用oks.setImagePath("/sdcard/test.jpg");确保SDcard下面存在此张图片oks.setImageUrl("https://lanre.smartemple.cn/image/share.png");// url在微信、微博,Facebook等平台中使用oks.setUrl("http://sharesdk.cn");// comment是我对这条分享的评论,仅在人人网使用oks.setComment("我是测试评论文本");
/*      //onekeyshare默认提供了默认的分享回调Toast提示,如果想要自己定义调用setCallback即可,不需要自定义的可以忽略,值得一提的是callback回调是子线程,需要传到主线程之后去操作后续内容哦;    oks.setCallback(new PlatformActionListener() {      @Overridepublic void onError(Platform arg0, int arg1, Throwable arg2) {// TODO Auto-generated method stub              }           @Overridepublic void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {// TODO Auto-generated method stub          }@Overridepublic void onCancel(Platform arg0, int arg1) {// TODO Auto-generated method stub              }});*/// 启动分享GUIoks.show(this);}复制代码

值得一提的是,onekeyshare的分享是根据调用的分享的方法自动适配分享类型,每个平台分享的方法不同,具体可以去看ShareSDK的文档说明
下面我们就可以去测试了,在监听按钮下调用
showShare(null);复制代码

效果如下:


此时点击平台跳转分享即可;

       如果不想用OneKeyShare的界面很简单,很多小伙伴肯定也发现了刚才我的方法中private void showShare(String platformToShare) 有一个参数,如果想单独调用修改这个参数即可,比如,我想单独跳转QQ,则在这个方法里面传QQ.NAME即可,其他的平台名称看ShareSDK的快速集成文档即可,效果如下


Demo下载地址:链接:https://pan.baidu.com/s/1nxh2Bqh 密码:j4c3

常见问题说明:

1、微信分享提示分享失败:检查分享内容,特别是图片是否有效,或者只分享文字测试

2、微信分享闪一下调用不起来微信客户端:检查微信后台配置的包名是否与配置的applicationId一致;检查微信后台配置的应用签名是否与您的app的应用签名一致;

3、新浪微博客户端分享提示分享成功,但是会保存到草稿箱发送不出去,检查微博后台配置的包名和签名,与您的app的不一致导致的

4、QQ分享不需要审核通过即可分享,but,需要配置一些基本的信息,IOS与android平台可以共用一套key,但是别忘了两个平台的基本信息都要配置下;

5、微信是通过审核之后才会给我们appid的,所以必须要通过审核才可以正式分享,并且必须保证微信后台配置的包名和应用签名与我们的app的包名和应用签名一致,否则无法正分享,做微信第三方登录的小伙伴,别忘了去申请权限还要每年300块哦;

6、新浪微博、申请的时候就会给我们appkey和appsecret了,但是别忘了配置回调地址,不知道回调地址怎么配置都可以点击这里进行查看,新浪微博和微信一样都需要配置包名和应用签名,这一点需要注意,如果包名和签名不一致客户端分享会报错的哦。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows7黑屏修复_如何在Windows 10更新后修复黑屏

windows7黑屏修复RealVector/Shutterstock.comRealVector / Shutterstock.comSome Windows 10 PCs have been rebooting to a black screen after installing the June 2019 cumulative update from Windows Update. This seems scary at first, but luckily there’s a quick …

[sol]250OJ 1~10

下载 转载于:https://www.cnblogs.com/yztblog/p/10208314.html

vue/cli4 创建vue项目选项详解

多版本创建项目一、vue-cli2.x二、vue-cli3.x三、vue-cli4.x1.查看 vue 版本&#xff1a; 项目中,找到package.json文件夹 找"dependencies"中的vue &#xff1b; 若无项目&#xff0c;在cmd中输入 where vue&#xff0c;cd到vue目录下输入 npm list vue &#xff0c…

java 商品评价计算算法

import java.io.Serializable; import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; import java.math.BigDecimal; import java.math.RoundingMode;/*** 商品评价算法* * project icomment* fileName ProductScore.java* Description* author light-z…

rainmeter使用教程_如何使用Rainmeter在桌面上显示报价

rainmeter使用教程I’ve never really been a desktop gadgets and widgets type of person, but I often put an inspirational quote on my desktop wallpaper. Today we’ll show you how to do this using Rainmeter, no matter what wallpaper you switch to. 我从来没有真…

Some code changes cannot be hot swapped into a running virtual machine

java运行中修改代码不能改变立刻应用到本次运行中转载于:https://www.cnblogs.com/Pusteblume/p/10211110.html

自定义v-drag指令(横向拖拽滚动)

指令 Vue.directive(drag, {// 钩子函数&#xff0c;被绑定元素插入父节点时调用 (父节点存在即可调用&#xff0c;不必存在于 document 中)。inserted: (el, binding, vnode, oldVnode) > {console.log(el, binding, vnode, oldVnode)let drag el; // 要拖拽的元素// let …

javascript获取时间差

function GetDateDiff(startTime, endTime, diffType) {//将xxxx-xx-xx的时间格式&#xff0c;转换为 xxxx/xx/xx的格式 startTime startTime.replace(/\-/g, "/");endTime endTime.replace(/\-/g, "/");//将计算间隔类性字符转换为小写diffType diffTy…

JMeter扩展JMeter插件获取更多监听器

为了获取更多监听器&#xff0c;方便的监控系统及应用&#xff0c;有必要安装第三方插件 插件下载地址&#xff1a; https://jmeter-plugins.org/downloads/old/ http://pan.baidu.com/s/1gfC11yN 注&#xff1a;如果插件和软件版本不兼容&#xff0c;可能在开启Jmeter时会报错…

如何阻止Chrome(或Edge)接管媒体密钥

Google Chrome now has built-in support for media keys. Unfortunately, Chrome will take over your media keys and prevent them from controlling apps like Spotify when you’re watching YouTube, for example. Here’s how to make Chrome ignore your media keys. G…

js滚动条滚动到指定元素

let item document.getElementById("item"); // 指定的元素 let wrapper document.getElementById("wrapper"); // 其父元素 - 必须是产生滚动条的元素// 元素聚焦法定位 // item.focus(); // 可用 outline:none; 除去聚焦产生的框; 对于默认没有聚焦的…

开源性能测试工具JMeter快速入门(一)

目录一、JMeter简介二、JMeter功能介绍三、JMeter脚本四、关于JMeter小提示一、JMeter简介1.定义JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 1&#xff09;它可以用…

八重州8900如何解锁_八重贵族怪胎之路

八重州8900如何解锁Dealing with computers day in and day out can be a harrowing experience. In difficult times, or even when things are idle, finding some spirituality can help cope with the experience—Techies: I give you the Eightfold Noble Geek Path. 日…

mysql 5.7.18 winx64安装配置方法

在mysql-5.7.18-winx64文件夹下新建my.ini文件[mysql] # 设置mysql客户端默认字符集 default-character-setutf8 [mysqld] #设置3306端口 port 3306 # 设置mysql的安装目录 basedirD:\Program Files\mysql-5.7.18-winx64 # 设置mysql数据库的数据的存放目录 datadirD:\Prog…

js 实现拖拽滚动、滚轮缩放元素函数和案例

文章目录一、拖拽滚动1、封装函数2、示例&#xff1a;二、滚轮缩放1、封装函数2、结合拖拽滚动示例一、拖拽滚动 1、封装函数 /*** description 使用鼠标拖拽div&#xff0c;实现横向、纵向滚动* param el 被拖拽滚动的元素&#xff08;产生滚动条的元素&#xff09;*/functio…

怎么解决input中readonly属性的iOS一直存在光标问题

用css中的pointer-events:none转载于:https://www.cnblogs.com/studyh5/p/8352061.html

赠与大学毕业生_出售,赠与或交易iPhone之前应该做什么

赠与大学毕业生A factory reset of your iPhone erases all of your content and settings, reverting it to a like-new state. However, there are a few extra steps you should take if you plan to get rid of your iPhone. iPhone的恢复出厂设置将删除所有内容和设置&…

layui radio 根据获取的到值选中

<input type"radio" name"lwkg" value"1" title"开" lay-filter"lwkg"> <input type"radio" name"lwkg" value"0" title"关" lay-filter"lwkg"> layui.use(…

设置Mac自动显示和隐藏 Dock 栏的速度

Dock 显示和隐藏&#xff0c;系统默认设置成了1秒 通过终端.APP修改显示和隐藏的时间 &#xff08;单位&#xff1a;秒&#xff09; 默认的&#xff1a;defaults write com.apple.dock autohide-delay -int 1 优化的&#xff1a;defaults write com.apple.dock autohide-del…

powerpoint预览_如何放大和缩小PowerPoint演示文稿的一部分

powerpoint预览Microsoft PowerPoint lets you zoom in and out on a specific part of your PowerPoint slideshow, which can be handy both while editing and for drawing attention to important objects or ideas during the presentation. Here’s how to do it. Micros…