使用ShareSDK集成分享框架

前言

目前越来越多的app需要分享功能,而分享的平台又越来越多,如果根据业务去每个平台集成SDK工作量又太大,因此,今天给大家推荐一个Mob下的 ShareSDK多平台集成分享,基本囊括了你所有想分享的平台。

大纲

1.框架介绍

2.接入说明

3.常见问题

正文

1.框架介绍

http://www.mob.com/product/sharesdk

先上链接,着急同学们可以直接跳走了,不着急的听咱细细道来

然后看看效果,这是个QQ分享出去的效果,包含了四个内容,标题、内容、缩略图以及点击跳转的url

之后这是支持的分享平台,绝对够用了对吧~

最后再说下使用分享方式,一种可以用它内部集成好的OnekeyShare库,基本上选择好需要分享平台还有设置上AppKey等信息基本就能用了,很方便不过UI不能定制,测试学习还行,实际做项目还是需要自己封装适配自己项目。

2.接入说明

首先当然是要在Mob平台以及其他想分享的平台注册自己app信息了,在此需要注意的是,如果是公司项目一定要公司相关人员注册,因为好像需要带有公司的一些信息,如软著或者营业执照等;并且有专人管理,不然有员工离职再登录上去干点啥就是损失了...曾经有个不成熟的小产品不知道去哪搞账号,让我自己注册一个,哈哈

现只讨论个人的 ,在Mob下注册登录后,创建app相关信息,然后选择ShareSDK,会获得AppKey和App Secret信息

然后就是SDK集成了,android下推荐Gradle集成方式

具体集成步骤请参考:http://wiki.mob.com/sdk-share-android-3-0-0/

值得注意的是,如果不使用OneKeyShare库则需设置Gui为false,下面是在需要分享module下build.gradle配置

//shareSDK配置信息
MobSDK {
    //http://www.mob.com/developer/login
    appKey "xxxxxxx"
    appSecret "xxxxxxxxxxxxx"
    gui false   //不使用默认UI OnekeyShare库

    ShareSDK {
        devInfo {
            SinaWeibo {
                appKey "xxxxxxx"
                appSecret "xxxxxxxxxxxxx"
                callbackUri "http://www.sharesdk.cn"
                shareByAppClient true  //是否使用客户端分享
            }
            //https://open.tencent.com/
            QQ {
                appId "xxxxxxx"
                appKey "xxxxxxxxxxxxx"
                shareByAppClient true
                bypassApproval false   //绕过审核标记
            }
            Wechat {
                appId "xxxxxxx"
                appSecret "xxxxxxxxxxxxx"
                shareByAppClient true
                bypassApproval false
            }
            WechatMoments {
                appId "xxxxxxx"
                appSecret "xxxxxxxxxxxxx"
                shareByAppClient true
                bypassApproval false
            }
            WechatFavorite {
                appId "xxxxxxx"
                appSecret "xxxxxxxxxxxxx"
                shareByAppClient true
            }
        }
    }
}

根据步骤配置完检查下

1.根目录的build.gradle添加依赖
2.需要使用的module下build.gradle添加配置信息
3.自定义app下初始化

4.混淆设置

5.添加相关权限

然后还没完呢,开始平台的 一些设置,在此只讲解下微信、朋友圈、微信收藏、QQ、新浪微博这几个根据常用的平台,其中微信系列的三个都是用微信开发平台注册的同一个appId

QQ分享说明:http://bbs.mob.com/forum.php?mod=viewthread&tid=24653&extra=page%3D2

微信分享说明:http://bbs.mob.com/thread-24656-1-1.html

新浪微博分享说明:http://bbs.mob.com/forum.php?mod=viewthread&tid=24689&page=1&extra=#pid61902

以上配置步骤开始都是手动下载ShareSDK的步骤,因为ShareSDK之前我们已经使用Gradle配置好了,直接参考之后相关平台步骤即可,步骤中在shareSDk.xml中配置的信息我们在module下build.gradle配置也一样

根据以上步骤配置完再检查下

1.Manifest中注册ShareSDK的activity、QQ的activity、微信的activity

2.需要使用的module下build.gradle的各个平台配置信息(appId...)

3.app包名和各个平台注册包名是否一致

到此,基本上配置告一段落,若使用OneKeyShare,设置好分享主体就可以分享了

public static void  showShare() {
        OnekeyShare oks = new OnekeyShare();
        oks.setImageUrl(“http://firicon.fir.im/baa18a6d779c597888d685f1159070df5b4f2912”);
        oks.setTitleUrl(“http://www.baidu.com”);
        oks.setText(“text”);
        oks.setTitle(“标题”);
        oks.setPlatform(QQ.NAME);
        oks.show(context);
}

然后如果是自定义封装,最主要的是各个平台的参数略有不同

详情参考:http://wiki.mob.com/%e4%b8%8d%e5%90%8c%e5%b9%b3%e5%8f%b0%e5%88%86%e4%ba%ab%e5%86%85%e5%ae%b9%e7%9a%84%e8%af%a6%e7%bb%86%e8%af%b4%e6%98%8e/

根据设计稿实现个PopUpwindow,然后根据不同平台点击设置参数

            case R.id.normalshare_wechat:
                if (!CommonUtil.isWeixinAvilible(App.getInstance())) {
                    MyToast.showToast(App.getInstance(), "检查到您手机没有安装微信,请安装后使用该功能");
                    return;
                }
                Wechat.ShareParams wechatSP = new Wechat.ShareParams();
                wechatSP.setShareType(Wechat.SHARE_WEBPAGE);
                wechatSP.setTitle(title);
                wechatSP.setText(text);
                wechatSP.setUrl(url);
                wechatSP.setImagePath(imagePath);
                wechatSP.setImageUrl(imageUrl);
                plat = ShareSDK.getPlatform(Wechat.NAME);
                plat.share(wechatSP);
                break;
            case R.id.normalshare_wechat_moments:
                if (!CommonUtil.isWeixinAvilible(App.getInstance())) {
                    MyToast.showToast(App.getInstance(), "检查到您手机没有安装微信,请安装后使用该功能");
                    return;
                }
                Wechat.ShareParams wechatSP2 = new Wechat.ShareParams();
                wechatSP2.setShareType(WechatMoments.SHARE_WEBPAGE);
                wechatSP2.setTitle(title);
                wechatSP2.setText(text);
                wechatSP2.setUrl(url);
                wechatSP2.setImagePath(imagePath);
                wechatSP2.setImageUrl(imageUrl);
                plat = ShareSDK.getPlatform(WechatMoments.NAME);
                plat.share(wechatSP2);

                break;
            case R.id.normalshare_wechat_favorite:
                if (!CommonUtil.isWeixinAvilible(App.getInstance())) {
                    MyToast.showToast(App.getInstance(), "检查到您手机没有安装微信,请安装后使用该功能");
                    return;
                }
                Wechat.ShareParams wechatSP3 = new Wechat.ShareParams();
                wechatSP3.setShareType(WechatFavorite.SHARE_WEBPAGE);
                wechatSP3.setTitle(title);
                wechatSP3.setText(text);
                wechatSP3.setUrl(url);
                wechatSP3.setImagePath(imagePath);
                wechatSP3.setImageUrl(imageUrl);
                plat = ShareSDK.getPlatform(WechatFavorite.NAME);
                plat.share(wechatSP3);
                break;
            case R.id.normalshare_qq:
                if (!CommonUtil.isQQClientAvailable(App.getInstance())) {
                    MyToast.showToast(App.getInstance(), "检查到您手机没有安装QQ,请安装后使用该功能");
                    return;
                }
                QQ.ShareParams qqSP = new QQ.ShareParams();
                qqSP.setShareType(QQ.SHARE_WEBPAGE);
                qqSP.setTitle(title);
                qqSP.setText(text);
                qqSP.setUrl(url);
                qqSP.setTitleUrl(titleUrl);
                qqSP.setSite(site);
                qqSP.setSiteUrl(siteUrl);
                qqSP.setImagePath(imagePath);
                qqSP.setImageUrl(imageUrl);
                plat = ShareSDK.getPlatform(QQ.NAME);
                plat.share(qqSP);
                break;
            case R.id.normalshare_sinaweibo:
                SinaWeibo.ShareParams weiboSP = new SinaWeibo.ShareParams();
                weiboSP.setShareType(SinaWeibo.SHARE_WEBPAGE);
                weiboSP.setTitle(title);
                //微博分享链接带入描述,不设置url,否则不能显示图片
                weiboSP.setText(text + "\n" + url);
//                weiboSP.setUrl(url);
                weiboSP.setImagePath(imagePath);
                weiboSP.setImageUrl(imageUrl);
                plat = ShareSDK.getPlatform(SinaWeibo.NAME);
                plat.share(weiboSP);
                break;

值得注意的是,新浪微博的链接一般是在描述中带入的,如:"热烈庆祝改革开放四十年#https://.....#"。如果设置url则显示不了图片。

3.常见问题

<1.配置在哪里

一般直接在app的build.gradle配置,若是需要模块化单独一个module,则需要app依赖该module
<2.gui开关

同时也是OneKeyShare库的开关,推荐自己学习时打开,因为有很多注释很有参考价值,实际项目中就关掉,减小体积
<3.QQ、微信常见问题

别忘了在Manifest中注册相关activity;

QQ分享,缩略图链接不能是ip和接口的格式,否则会显示不出;

微信分享,使用需要带有正式版签名,或者根据之前说明文档配置签名,否则客户端拉不起来
<4.分享成功接口

微信成功回调接口已修正,请大家注意


<5.判断安装api

两种方法

一种是根据包名判断

public static boolean isWeixinAvilible(Context context) {
    final PackageManager packageManager = context.getPackageManager();// 获取packagemanager
    List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息
    if (pinfo != null) {
        for (int i = 0; i < pinfo.size(); i++) {
            String pn = pinfo.get(i).packageName;
            if ("com.tencent.mm".equals(pn)) {
                return true;
            }
        }
    }
    return false;
}

还有一种是根据分享平台api判断

Platform plat = ShareSDK.getPlatform(Wechat.NAME);
if (!plat.isClientValid()) {
    MyToast.showToast(App.getInstance(), "检查到您手机没有安装微信,请安装后使用该功能");
    return;
}

因为在部分机型上有一种方法失效的情况,因此推荐大家同时使用两种方法判断,若都不满足则判断未安装
<6.shareSDk.xml在哪

开始集成我也疑惑的问题,这个是手动下载SDK集成才有的,使用Gradle集成没有的,不过里面好多注释很有价值,推荐大家也下载下来看看

<7.图片参数

图片参数有个三个,imagePath、imageUrl、imageData

但是平台不同支持的也不同,所以大家自己封装的时候推荐只使用imageUrl和imagePath,imagePath可以作为当imageUrl为null的占位图,如果两个同时设置好像是显示imageUrl,谨慎期间大家自行再试下
<8.客服

这个主要是我推荐ShareSDK的原因,这个客服是真的强大,基本上有关分享的什么问题都很快能给解决,有时候懒得找文档了,直接加了QQ问就好,不过有时候会排队,哈哈

总结

之前分享都是各个平台各自集成,真的是麻烦至极,这个SDK简单易用,功能强大,客服给力,因此推荐大家使用。基本上我遇到的问题上面都提到了,还有什么问题欢迎大家一起来讨论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值