关于ShareSDK分享配置

 

目录

ShareSDK分享配置

build.gradle配置:如下

ShareSdkUtils工具类

ShareData实体类


ShareSDK分享配置

build.gradle配置:如下

/**
 * ShareSDK分享
 * 官网:http://www.mob.com/
 *
 * 文档地址:
 * http://www.mob.com/wiki/detailed?wiki=ShareSDK_Android_Title_ksjc&id=14
 *
 * 使用方法:
 * 1.打开项目根目录的build.gradle,在buildscript–>dependencies 模块下面添加 classpath
 * classpath "com.mob.sdk:MobSDK:2018.0319.1724"
 * 2、app的gradle下添加
 * apply from: 'share.gradle'
 * 3、新建xxx.xxx.xxx.share包
 * 复制工具类ShareSdkUtils和实体类ShareData到该包下
 * 4、完善下面devInfo中的各分享平台相关信息
 *
 */

//2.在使用到Mob产品的module下面的build.gradle文件里面添加如下引用
apply plugin: 'com.mob.sdk'

//3.添加MobSDK方法,配置mob的key和秘钥
// (与第2步是一个gradle中;注意:MobSDK方法是配置到文件根目录,与android并列,不要配置到android里面哦)
MobSDK {
    appKey ""//mob官方申请的Appkey
    appSecret ""//mob官方申请的Appkey对应的AppSecret
    //4.添加ShareSDK平台,Gradle集成方式可以在Mob产品的module下面的build.gradle文件里面配置ShareSDK各个社交平台的key信息
    ShareSDK {
        gui false //ShareSDK默认会添加OnekeyShare库,如果您不需要这个库,可以在ShareSDK下设置“gui false”来关闭OnekeyShare
        loopShare false// 是否闭环分享
        devInfo {//来自社交平台的应用信息,
            // 完整的各个平台参数:https://github.com/MobClub/ShareSDK-for-Android/blob/master/SampleFresh/MobSDK.gradle
            // 具体字段参数说明:http://wiki.mob.com/sdk-share-android-3-0-0/
            QQ {
                appId ""
                appKey ""
                bypassApproval false //是否绕过审核
            }
            QZone {
                appId ""
                appKey ""
                bypassApproval false
            }
            Wechat {
                appId ""
                appSecret ""
                //BypassApproval是绕过审核的标记,设置为true后AppId将被忽略,故不经过审核的应用也可以执行分享,但是仅限于分享文字和图片,不能分享其他类型,默认值为false。
                bypassApproval false
            }
            WechatMoments {
                appId ""
                appSecret ""
                bypassApproval false
            }
            SinaWeibo {
                appKey ""
                appSecret ""
                callbackUri ""//微博开放平台:应用信息-高级信息-OAuth2.0授权设置的RedirectUrl
            }
        }
    }
}

ShareSdkUtils工具类

package cn.appoa.keyoule.share;

import android.content.Context;
import android.text.TextUtils;

import com.mob.MobSDK;

import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.tencent.qq.QQ;
import cn.sharesdk.wechat.friends.Wechat;
import cn.sharesdk.wechat.moments.WechatMoments;

/**
 * ShareSdk封装工具类
 */
public final class ShareSdkUtils {

    /**
     * 平台名称:1、微信;2、微信朋友圈;3、QQ;
     */
    public static String[] PlatformName = {"",
            Wechat.NAME, WechatMoments.NAME, QQ.NAME};

    /**
     * 5.初始化MobSDK
     * 如果您没有在AndroidManifest中设置appliaction的类名,
     * MobSDK会将这个设置为com.mob.MobApplication,
     * 但如果您设置了,请在您自己的Application类中调用此方法
     *
     * @param appContext
     */
    public static void initShare(Context appContext) {
        MobSDK.init(appContext);
    }

    /**
     * 第三方登录
     *
     * @param nameId   平台名称Id
     * @param listener 登录事件回调
     */
    public static void thirdLogin(int nameId, PlatformActionListener listener) {
        try {
            thirdLogin(PlatformName[nameId], listener);
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        }
    }

    /**
     * 第三方登录
     *
     * @param name     平台名称
     * @param listener 登录事件回调
     */
    public static void thirdLogin(String name, PlatformActionListener listener) {
        if (!TextUtils.isEmpty(name)) {
            Platform platform = ShareSDK.getPlatform(name);
            if (platform.isAuthValid()) {
                platform.removeAccount(true);// 移除授权
            }
            platform.SSOSetting(false);// 设置false表示使用SSO授权方式(使用了SSO授权后,有客户端的都会优先启用客户端授权,没客户端的则任然使用网页版进行授权)
            platform.setPlatformActionListener(listener);
            // platform.authorize();//单独授权
            platform.showUser(null);// 授权并获取用户信息
        }
    }

    /**
     * 退出第三方登录
     *
     * @param nameId 平台名称Id
     */
    public static void thirdLogout(int nameId) {
        try {
            thirdLogout(PlatformName[nameId]);
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        }
    }

    /**
     * 退出第三方登录
     *
     * @param name 平台名称
     */
    public static void thirdLogout(String name) {
        if (!TextUtils.isEmpty(name)) {
            Platform platform = ShareSDK.getPlatform(name);
            if (platform.isAuthValid()) {
                platform.removeAccount(true);// 移除授权
            }
        }
        // 如果要删除授权信息,重新授权
        ShareSDK.removeCookieOnAuthorize(true);
    }


    /**
     * 分享网页
     *
     * @param nameId   平台名称Id
     * @param data     分享数据
     * @param listener 分享事件回调
     */
    public static void shareUrl(int nameId, ShareData data, PlatformActionListener listener) {
        try {
            shareUrl(PlatformName[nameId], data, listener);
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        }
    }

    /**
     * 分享网页
     *
     * @param name     平台名称
     * @param data     分享数据
     * @param listener 分享事件回调
     */
    public static void shareUrl(String name, ShareData data, PlatformActionListener listener) {
        if (data == null) {
            return;
        }
        Platform.ShareParams sp = new Platform.ShareParams();
        if (TextUtils.equals(name, QQ.NAME)) {
            sp.setTitle(data.title);
            sp.setTitleUrl(data.titleUrl);
            sp.setText(data.text);
            if (!TextUtils.isEmpty(data.imageUrl)) {
                sp.setImageUrl(data.imageUrl);
            } else if (!TextUtils.isEmpty(data.imagePath)) {
                sp.setImagePath(data.imagePath);
            }
        } else if (TextUtils.equals(name, Wechat.NAME) ||
                TextUtils.equals(name, WechatMoments.NAME)) {
            sp.setShareType(Platform.SHARE_WEBPAGE);
            sp.setTitle(data.title);
            sp.setText(data.text);
            if (!TextUtils.isEmpty(data.imageUrl)) {
                sp.setImageUrl(data.imageUrl);
            } else if (!TextUtils.isEmpty(data.imagePath)) {
                sp.setImagePath(data.imagePath);
            } else if (data.imageData != null) {
                sp.setImageData(data.imageData);
            }
            sp.setUrl(data.url);
        }
        Platform platform = ShareSDK.getPlatform(name);
        platform.setPlatformActionListener(listener);
        platform.share(sp);
    }

    /**
     * 分享图片
     *
     * @param nameId   平台名称Id
     * @param data     分享数据
     * @param listener 分享事件回调
     */
    public static void sharePic(int nameId, ShareData data, PlatformActionListener listener) {
        try {
            sharePic(PlatformName[nameId], data, listener);
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        }
    }

    /**
     * 分享图片
     *
     * @param name     平台名称
     * @param data     分享数据
     * @param listener 分享事件回调
     */
    public static void sharePic(String name, ShareData data, PlatformActionListener listener) {
        if (data == null) {
            return;
        }
        if (TextUtils.isEmpty(data.imageUrl) &&
                TextUtils.isEmpty(data.imagePath) && data.imageData == null) {
            return;
        }
        Platform.ShareParams sp = new Platform.ShareParams();
        if (TextUtils.equals(name, Wechat.NAME) ||
                TextUtils.equals(name, WechatMoments.NAME)) {
            sp.setShareType(Platform.SHARE_IMAGE);
        }
        if (!TextUtils.isEmpty(data.imageUrl)) {
            sp.setImageUrl(data.imageUrl);
        } else if (!TextUtils.isEmpty(data.imagePath)) {
            sp.setImagePath(data.imagePath);
        } else if (data.imageData != null) {
            sp.setImageData(data.imageData);
        }
        Platform platform = ShareSDK.getPlatform(name);
        platform.setPlatformActionListener(listener);
        platform.share(sp);
    }

}

ShareData实体类

package cn.appoa.keyoule.share;

import android.graphics.Bitmap;

import java.io.Serializable;


/**
 * 分享数据
 *
 * @see http://www.mob.com/wiki/detailed?wiki=ShareSDK_Android_APISHARE_title_dsfptfxcssm&id=14
 * <p>
 * 有imageUrl(”网络图片链接”)、imagePath(“/sdcard/abc.jpg”)、imageData(bitmap)是三选一
 */
public class ShareData implements Serializable {

    //QQ分享
    public String title;//最多30个字符
    public String titleUrl;
    public String text;//最多40个字符
    public String imagePath;
    public String imageUrl;

    //QQ空间发表说说
    //public String text;
    //public String imagePath;
    //public String imageUrl;
    public String site;
    public String siteUrl;

    //QQ空间分享图文(分享时一定要携带title、titleUrl、site、siteUrl)
    //public String title;//最多200个字符
    //public String titleUrl;
    //public String text;//最多600个字符
    //public String imagePath;
    //public String imageUrl;
    //public String site;//分享此内容的网站名称,仅在QQ空间使用
    //public String siteUrl;//分享此内容的网站地址,仅在QQ空间使用

    //微信分享网页
    //shareType(Platform.SHARE_WEBPAGE)
    //public String title;//512Bytes以内
    //public String text;//(朋友圈不显示此字段)1KB以内
    //public String imagePath;//10M以内(传递的imagePath路径不能超过10KB)
    //public String imageUrl;//10KB以内,图片打不开不能分享
    public Bitmap imageData;//10M以内
    public String url;

    //新浪微博分享图文
    //public String text;//140字符以内,微博分享链接是将链接写到text内
    //public String imagePath;//微博客户端分享图片不能大于2M,仅支持JPEG、GIF、PNG格式
    //public String imageUrl;
    //public String imageData;

    public ShareData() {
    }

    public ShareData(String title, String text,
                     String imagePath, String imageUrl, Bitmap imageData, String url) {
        this.title = title;
        this.titleUrl = url;
        this.text = text;
        this.imagePath = imagePath;
        this.imageUrl = imageUrl;
        this.site = title;
        this.siteUrl = url;
        this.imageData = imageData;
        this.url = url;
    }

    /**
     * 设置分享内容
     */
    public void setShareData(String title, String text,
                             String imagePath, String imageUrl, Bitmap imageData, String url) {
        this.title = title;
        this.titleUrl = url;
        this.text = text;
        this.imagePath = imagePath;
        this.imageUrl = imageUrl;
        this.site = title;
        this.siteUrl = url;
        this.imageData = imageData;
        this.url = url;
    }

}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Unity Web端使用ShareSDK实现分享功能,需要进行以下步骤: 1.下载ShareSDK的Web端SDK 你需要从ShareSDK官网下载Web端SDK,并解压到你的工程目录中。 2.添加ShareSDK的依赖库 在你的Unity Web项目中,需要添加ShareSDK的依赖库。你可以通过以下方式来添加依赖库: - 在你的HTML文件中添加以下代码: ```html <script src="path/to/ShareSDK.min.js"></script> ``` - 或者在你的Unity脚本中使用以下代码: ```csharp using UnityEngine; using System.Collections; public class ShareSDKManager : MonoBehaviour { void Start () { // 加载ShareSDK的依赖库 Application.ExternalEval("var script = document.createElement('script');" + "script.type = 'text/javascript';" + "script.src = 'path/to/ShareSDK.min.js';" + "document.getElementsByTagName('head')[0].appendChild(script);"); } } ``` 3.初始化ShareSDK 在你的Unity脚本中,需要初始化ShareSDK。你可以使用以下代码来初始化: ```csharp using UnityEngine; using System.Collections; using cn.sharesdk.unity3d; public class ShareSDKManager : MonoBehaviour { public ShareSDK shareSDK; void Start () { // 初始化ShareSDK shareSDK = GetComponent<ShareSDK>(); shareSDK.InitSDK("YourAppKey", "YourAppSecret"); } } ``` 4.调用ShareSDK分享接口 在你的Unity脚本中,你可以调用ShareSDK分享接口来实现分享功能。以下是示例代码: ```csharp using UnityEngine; using System.Collections; using cn.sharesdk.unity3d; public class ShareSDKManager : MonoBehaviour { public ShareSDK shareSDK; void Start () { // 初始化ShareSDK shareSDK = GetComponent<ShareSDK>(); shareSDK.InitSDK("YourAppKey", "YourAppSecret"); } // 分享到Facebook public void ShareToFacebook() { ShareContent content = new ShareContent(); content.SetText("ShareSDK is awesome!"); content.SetUrl("http://www.mob.com"); content.SetTitle("ShareSDK Title"); content.SetShareType(ContentType.Webpage); content.SetImageUrl("http://www.mob.com/assets/images/ShareSDK_pic_1-09d2933e.png"); shareSDK.ShareContent(PlatformType.Facebook, content); } } ``` 以上代码中,我们调用了ShareSDKShareContent方法,并传入了分享的内容和分享的平台类型。你可以根据需要修改分享的内容和平台类型。 注意:在调用ShareSDK分享接口之前,需要确保用户已经登录到相应的社交媒体平台,并且对应的API和SDK已经正确配置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值