一、准备工作:
1. 获取ShareSDK:登录Mob官网,下载ShareSDK(点击右上角“SDK下载”按钮,进入SDK下载页,选择“其他”,下载Unity3D平台的ShareSDK插件:New-Unity-For-ShareSDK-master)
2. 获取项目AppKey及AppSecret:点击右上角“产品中心”,进入“开发者平台”,点击“创建应用”,添加LOGO,输入名称,选择“ShareSDK”,进入项目即可获取App Key及App Secret。
3.获取应用AppID及AppSecret:登录微信开放平台(现在注册需要填写公司信息),“管理中心”->创建移动应用,填写相关信息,这里需要注意的两点是:1.包名,2.需要填写签名(见下一步),然后等待微信开放平台审核就OK。
4.获取项目签名:用上一步中的包名作为unity项目打包时的Package Name,打包项目后安装到手机上,再安装一个叫GenSignature的APP(该APP可以从这里获取)。
二、Unity中的开发:
1.将New-Unity-For-ShareSDK-master下的ShareSDK.unitypackage导入到Unity中,MainCamera物体上添加ShareSDK组件;
2.将项目设置为Android平台(File->Build Setting->Switch Platform);
3.修改ShareSDK组件的appKey与appSecret参数;
4.修改ShareSDK组件下Dev Info下与微信有关的AppID及APPSecret,取消Bypass Approval(绕过审核)的勾选。如果我们开启了这个bool,那么就只能分享图文,不能分享链接。
5.修改AndroidManifest文件:
- 修改包名:
- 修改微信分享回调:
- 修改App Key及App Secret:
6.添加代码:分享的相关参数可以见这里。
using cn.sharesdk.unity3d;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ShareWX : MonoBehaviour
{
private ShareSDK shareSDK;
public Text log;
public Button shareWXBtn;//分享微信好友
public Button shareWXFBtn;//分享微信朋友圈
private void Awake()
{
shareSDK = this.GetComponent<ShareSDK>();
shareWXBtn.onClick.AddListener(OnClickBtn1Down);
shareWXFBtn.onClick.AddListener(OnClickBtn2Down);
}
void Start()
{
shareSDK.shareHandler = OnShareResultHandler;
}
/// <summary>
/// 回调
/// </summary>
/// <param name="reqID"></param>
/// <param name="state"></param>
/// <param name="type"></param>
/// <param name="data"></param>
private void OnShareResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable data)
{
if (state == ResponseState.Success)
{
print("share success");
log.text = MiniJSON.jsonEncode(data);
}
else if (state == ResponseState.Fail)
{
log.text = "Share Failed:" + MiniJSON.jsonEncode(data);
}
else if (state == ResponseState.Cancel)
{
log.text = "Share Canceled:" + MiniJSON.jsonEncode(data);
}
}
/// <summary>
/// 分享到微信好友
/// </summary>
void OnClickBtn1Down()
{
ShareContent content = new ShareContent();
content.SetTitle("test title");//title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
//content.SetImagePath(""); //imagePath是图片的本地路径,Linked - In以外的平台都支持此参数, 使用 imagePath 必须保证SDcard下面存在此张图片
content.SetImageUrl("http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg");//imagePath与imageUrl 必须保留一个,否则微信不能分享
content.SetText("this is a test string.");//text是分享文本,所有平台都需要这个字段
content.SetUrl("https://blog.csdn.net/weixin_39766005");//url仅在微信(包括好友和朋友圈)中使用
//content.SetTitleUrl("");// titleUrl是标题的网络链接,仅在人人网和QQ空间使用
//content.SetComment("我是测试评论文本"); // comment是我对这条分享的评论,仅在人人网和QQ空间使用
//content.SetSite(""); // site是分享此内容的网站名称,仅在QQ空间使用
//content.SetSiteUrl(""); // siteUrl是分享此内容的网站地址,仅在QQ空间使用
content.SetShareType(ContentType.Webpage);
shareSDK.ShareContent(PlatformType.WeChat, content);
}
/// <summary>
/// 分享到微信朋友圈
/// </summary>
void OnClickBtn2Down()
{
ShareContent content = new ShareContent();
content.SetTitle("test title");
content.SetImageUrl("http://ww3.sinaimg.cn/mw690/be159dedgw1evgxdt9h3fj218g0xctod.jpg");
content.SetText("this is a test string.");
content.SetUrl("https://blog.csdn.net/weixin_39766005");
content.SetShareType(ContentType.Webpage);
shareSDK.ShareContent(PlatformType.WeChatMoments, content);
}
}
7.设置Package Name为微信开放平台申请项目时的包名,此时打包可以实现分享功能,但回调还实现不了,需要在Eclipse里进行开发。(打包出错,可以将Build System设置为Internal)。
8.分享到好友及朋友圈的样子如下:
三、回调配置:
这部分需要做的就是自己导出一个DemoCallback.jar包,替换Unity中Plugins->Android ->ShareSDK->libs下的DemoCallback.jar,具体的操作步骤可以查看这篇博客,我自己研究了很长时间,Eclipse项目一直报错,打包出来的DemoCallback.jar没起到任何作用,最后找的官方人员(去官网找QQ联系)帮我打的jar包,只需要把你的包名告诉客服即可。
最后的app分享效果: