官网教程 : http://wiki.mob.com/unity3d快速集成指南/
一.下载eclipse打包DemoCallback.jar
微信登录Android端需要修改报名重新打jar包,但是一小时了,客服压根没人回,我只好自力更生下载Eclipse自己打包
官方教程网址 : http://bbs.mob.com/thread-23519-1-1.html
1.下载并安装Eclipse
新版的eclipse好像没有带环境,嗯对于我这种不熟的人当然下载集成环境的比较好
下载路径为 : http://tools.android-studio.org
2.下载Java项目
demo下载地址 : https://github.com/MobClub/New-Unity-For-ShareSDK
这里我是用sourcetree拉取的,结果有点坑,要切换到master分支才是正确的SDK,我说我怎么把UnityPackage导进去连APPKey都没有,不过一般都是直接下载吧,应该不会遇到这个问题
3.打开项目解决错误
Unable to resolve target 'android-16'
4.更改apshare,wxapi和yxapi的位置改成自己的包名
首先新建Package ,更改成自己包名.apshare,wxapi和yxapi:
然后移文件过去 :
5.按照官方教程打包jar
二.修改unity配置信息
①.修改AndroidManifest包名
②.修改PlayerSettings - Other Setting - Package Name
三.修改ShareSDK配置信息
①.修改ShareSDKDevInfo.cs
因为这里只用到了微信登录,因此我注视了其他的回调,不然ShareSDK.cs那里一长串得配置
②.修改ShareSDK.cs(已挂在GameObject上)
四.微信登录代码
WeChatLogin.cs :
using System.Collections;
using System.Collections.Generic;
using System.IO;
using AFramework;
using cn.sharesdk.unity3d;
using LitJson;
using UnityEngine;
using UnityEngine.UI;
public class WeChatLogin : MonoBehaviour
{
/// <summary>
/// 获取到的用户信息保存本地的文件名
/// </summary>
private string fileName;
/// <summary>
/// 获取到用户的头像保存到本地的文件名
/// </summary>
private string iconName;
/// <summary>
/// SDK
/// </summary>
public ShareSDK ssdk;
/// <summary>
/// 微信登录
/// </summary>
public void WeiXinButtonHandle()
{
Debug.Log("点击了微信登录");
fileName = "/wechat.json";
iconName = "/wechatIcon.jpg";
if (File.Exists(Application.persistentDataPath + fileName))
{
text.text = "已经授权:" + System.Text.Encoding.UTF8.GetString
(File.ReadAllBytes(Application.persistentDataPath + fileName));
return;
}
ssdk.authHandler = AuthHandler;
ssdk.Authorize(PlatformType.WeChat);
}
public Text text;
public Text userName;
/// <summary>
/// 登录回调
/// </summary>
/// <param name="reqID"></param>
/// <param name="state"></param>
/// <param name="type"></param>
/// <param name="data"></param>
public void AuthHandler(int reqID, ResponseState state, PlatformType type, Hashtable data)
{
Debug.Log("回调函数");
if (state == ResponseState.Success)
{
JsonData userData = JsonMapper.ToObject(JsonMapper.ToJson(data));
SaveUserInfo(JsonMapper.ToJson(data));
string icon = userData["icon"].ToString();
StartCoroutine(DownUserIcon(icon));
text.text += "\n userid : " + userData["userID"] + "\n username : " + userData["nickname"] + "\n icon : " + userData["icon"];
text.text += "\n授权成功!!!";
userName.text = userData["nickname"].ToString();
}
else if (state == ResponseState.Fail)
{
text.text += "\n授权失败!!!";
}
}
/// <summary>
/// 将得到的用户信息保存
/// </summary>
/// <param name="jsonFile"></param>
private void SaveUserInfo(string jsonFile)
{
if (File.Exists(Application.persistentDataPath + "/" + fileName))
File.Delete(Application.persistentDataPath + "/" + fileName);
FileTool.CreatFile(Application.persistentDataPath + "/" + fileName, System.Text.Encoding.UTF8.GetBytes
(jsonFile));
}
/// <summary>
/// 将用户的头像下载
/// </summary>
/// <param name="icon"></param>
/// <returns></returns>
private IEnumerator DownUserIcon(string icon)
{
Debug.Log("开启协程进行资源下载");
WWW www = new WWW(icon);
yield return www;
FileStream stream = File.Create(Application.persistentDataPath + iconName);
Texture2D texture = new Texture2D(www.texture.width, www.texture.height);
www.LoadImageIntoTexture(texture);
byte[] bytes = texture.EncodeToJPG();
stream.Write(bytes, 0, bytes.Length);
stream.Close();
stream.Dispose();
}
}
网友评论