使用ShareSDK在Unity3d截屏分享到微信
- 到官网http://www.mob.com/下载ShareSDK For Unity3D
-
新建Unity3d工程,在新建工程里Assets选择Import Package里的Custom Package倒入ShareSDK包
- 导入SDK后会可能会遇到编译错误
这是因为在ShareSDK里只有在Android和iOS环境里才会定义appKey和appSecret,转化编译环境为Android,选择菜单里的File下的Buid Settings,选择Android和Switch Platform
-
绑定ShareSDK脚本到Main Camera对象
- 到官网http://www.mob.com/注册mob开发者账号,注册后登录开发者后台添加新应用,
- 把新应用的appKey和appSecrect填入已绑定在Main Camera对象下的Share SDK脚本的App Key和App SecreT
-
到微信开放平台https://open.weixin.qq.com/注册开发者账号,申请应用取得AppID和AppSecret
应用签名可以通过安装应用和应用签名apk,输入应用包名后获得,应用签名通过开发者后台菜单里的资源中心里下载
- 打开ShareSDK脚本下的DevInfo,启用WeChat(分享给朋友),WeChatMoments(分享到朋友圈)和WeChatFavorites(微信收藏),输入开饭平台成功申请的AppID和AppSecret,启用审核分享(取消Bypass Approval)
- 打开Unity工程下的AndroidManifest.xml,在微信activity下.wxapi.WXEntryActivity前加上应用的包名
- 重新打包DemoCallback.jar,下载Eclipse,到http://www.androiddevtools.cn/下载ADT插件
- 打开Ecplise菜单里File下Import,导入ShareSDK文件中的安卓工程
- 在src下新建包名com.xxx.xxx.apshare(蚂蚁财富),com.xxx.xxx.wxapi(微信)和com.com.xxx.xxx.yxapi(易信),并把cn.sharesdk.demo.apshare,cn.sharesdk.demo.wxapi和cn.sharesdk.demo.yxapi下的文件分别拷贝到com.xxx.xxx.apshare,com.xxx.xxx.wxapi和com.com.xxx.xxx.yxapi下
右键src文件夹导出
选择之前创建的三个包,选择输出目录C:\Users\Administrator\Desktop\DemoCallback.jar,再把DemoCallback.jar覆盖到默认的工程目录下的Assets->Plugins->Android->ShareSDK->libs
下的Democallback.jar就可以了
-
新建ShareIt脚本,绑定在MainCamera上
using System.Collections; using System.Collections.Generic; using UnityEngine; using cn.sharesdk.unity3d; using UnityEngine.UI; public class ShareIt : MonoBehaviour { private ShareSDK shareSdk; public Text message; void Start() { message.text = ("开始"); shareSdk = GetComponent<ShareSDK>(); //分享回调事件 shareSdk.shareHandler += ShareResultHandler; } //分享 public void OnShareClick() { ShareContent content = new ShareContent(); ScreenCapture.CaptureScreenshot("capture.png"); content.SetImagePath(Application.persistentDataPath + "/capture.png"); content.SetTitle("标题title"); //分享标题 content.SetShareType(ContentType.Image); shareSdk.ShowPlatformList(null, content, 100, 100); //弹出分享菜单选择列表 //shareSdk.ShowShareContentEditor(PlatformType.WeChat, content); //指定平台直接分享 } // 分享结果回调 void ShareResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result) { //成功 if (state == ResponseState.Success) { message.text = ("share result :"); message.text = (MiniJSON.jsonEncode(result)); } //失败 else if (state == ResponseState.Fail) { message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]); } //关闭 else if (state == ResponseState.Cancel) { message.text = ("cancel !"); } else { message.text = "ShareResultHandler = " + state.ToString(); } } //授权 public void OnAuthClick() { //请求微信授权//请求这个授权是为了获取用户信息来第三方登录 shareSdk.Authorize(PlatformType.WeChat); Debug.Log("OnAuth"); //message.text = ("授权中"); } }
- 新建Button来触发分享事件,即OnClick事件里绑定MainCamera的ShareIt.OnShareClick, 新建Text赋值给ShareIt脚本的message
- 在Player Setting里右侧Identification里设置Package Name包名
- Buid之后如果遇到“分享操作正在后台进行”,可尝试清理微信缓存和重启手机解决