1、什么是分享?
发朋友圈,扣扣空间,转载文章,转发链接给扣扣好友,微信好友,这就是分享!
2、分享方式:
1、跳转APP,例如我们在一些应用上通过分享至朋友圈或者分享至微博等。
2、二维码扫描分享,二维码中带有分享的信息。
但是怎么在Unity中进行分享呢?
3、分享平台
说到分享其实无外乎微信,微博,QQ平台。
但是实际上有很多平台,只不过我们访问不到而已,如果要做国际化分享,那么就必须导入相应的SDK
4、常见的分享平台
1、友盟分享 点击进入官网
这个下载比较坑
官方的集成文档没什么难度,主要在于对Unity的熟悉程度,还有就是打包后,调用各平台的设置比较麻烦
2、Share分享点击进入官网
这边点击相应的平台下载后,会直接打开相应的GitHub网址
下载后,打开Unity导入进来。包里面总共两个脚本,一张图片
按照GITHub进行相关的开发就可以。
如何使用:将项目中Unity3dDemo/Assets/Plugins目录拷贝到我们项目的Assets目录,或者导入sharesdk-unity3d-plugin.unitypackage
1.给Camera挂载ShareSDK脚本.这个脚本是用来配置分享的平台信息
2.默认分享平台比较多,如果只想支持部分平台的分享, 只需要去修改 ShareSDKDevInfo 脚本中 DevInfoSet 类. 注释掉不需要的分享的平台即可
3.接下来实现自定义界面来分享功能
这是系统的小案例,我们只需要将分享平台进行对应的添加。至于里面的App_Id是什么?这个实在腾讯微信平台注册的id号。这里可以去微信开发者平台根据相关流程获取。
那么我们如何进行自定义分享呢?
public class ShareSDKTest : MonoBehaviour {
private ShareSDK shareSDK;
public Text messageText;
void Start () {
shareSDK = GetComponent ();
// //分享回调事件 绑定
shareSDK.shareHandler += ShareResultHandle;
}
// 点jiWechat进行分享
public void wechatOnClickToShare()
{
ShareContent content = new ShareContent ();
content.SetText ("雷潮开始发功了");
content.SetTitle ("你懂的");
// 分享网址
content.SetUrl ("http://www.jianshu.com/u/74372cf48f59");
//出分享菜单选列表
shareSDK.ShowPlatformList (null, content, 100, 100);
// 指定分享平台
shareSDK.ShowShareContentEditor (PlatformType.WeChat, content);
}
//分享结果回调
void ShareResultHandle (int reqID, ResponseState state,PlatformType type,Hashtable data)
{
if (state == ResponseState.Success) {
messageText.text = MiniJSON.jsonEncode (data);
} else if (state == ResponseState.Fail) {
print ("fail! throwable stack = " +
data ["stack"] + "; error msg = "
+ data ["msg"]);
} else if (state == ResponseState.Cancel) {
messageText.text = "Cancel !~!~~~~~~";
}
}
}
另一个扣扣分享也是一样的写法,唯独在上面分享平台选择修改一下
// 指定分享平台
shareSDK.ShowShareContentEditor (PlatformType.QQ, content);
这里要注意,按钮事件需要注册绑定。别到时候傻逼。。。
打印结果:
第三方登陆:
经常会遇到这种界面:
这种如何制作?
private ShareSDK shareSDK;
public Text messageText;
void Start () {
shareSDK = GetComponent ();
//授权回调事件
shareSDK.authHandler += AuthResultHandle;
//用户信息事件
shareSDK.showUserHandler += GetUserInfoResoultHandle;
}
// 注意:一般在开发过程中,会判断用户手机有没有装相关的快速登陆的软件,例如没有装QQ那么就不显示QQ快捷登陆
// QQ登陆
public void loginQQClick()
{
// 选择何种方式登陆
shareSDK.Authorize (PlatformType.QQ);
}
// 微信登陆
public void loginWechatClick()
{
shareSDK.Authorize (PlatformType.WeChat);
}
// 登陆状态句柄
void AuthResultHandle (int reqID, ResponseState state,PlatformType type,Hashtable data)
{
if (state == ResponseState.Success) {
messageText.text = "授权登录成功";
//授权成功的话, 获取用户的资料
shareSDK.GetUserInfo (type);
} else if (state == ResponseState.Fail) {
print ("fail! throwable stack = " +
data ["stack"] + "; error msg = "
+ data ["msg"]);
} else if (state == ResponseState.Cancel) {
messageText.text = "Cancel !~!~~~~~~";
}
}
// 获取返回信息
void GetUserInfoResoultHandle(int requisetID,ResponseState state,PlatformType type,Hashtable data)
{
if (state == ResponseState.Success) {
//利用PlatformType来判断不同的平台获取用户信息的回调
//将返回数据编码成Json格式的数据, 进行json解析展示到界面即可
switch (type) {
case PlatformType.QQ:
messageText.text = MiniJSON.jsonEncode (data);
break;
}
} else if (state == ResponseState.Fail) {
print ("fail! throwable stack = " +
data ["stack"] + "; error msg = "
+ data ["msg"]);
} else if (state == ResponseState.Cancel) {
messageText.text = "Cancel !~!~~~~~~";
}
}
3、二维码分享
其实二维码分享主要是将网页嵌入,通过扫描工具进行相关的分享。这个适合将游戏过程或者结果进行分享,同时夹带我们的广告,类似绑定宣传。
Unity进行二维码生成