//todo … 待完善 …
using cn.sharesdk.unity3d;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ShareSDKManager : MonoBehaviour {
private static ShareSDKManager _instance;
public static ShareSDKManager Instance
{
get
{
return _instance;
}
}
[HideInInspector]
public ShareSDK ssdk;
// Use this for initialization
void Start () {
//单例
_instance = this;
//加载不销毁
DontDestroyOnLoad(this.gameObject);
//在ShareSDK的awake方法中做了初始化
ssdk = GetComponent<ShareSDK>();
//shareSDKUtils.InitSDK(appKey,appSecret); //初始化
//跳转场景
UnityEngine.SceneManagement.SceneManager.LoadScene(1);
}
}
using cn.sharesdk.unity3d;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class Login : MonoBehaviour
{
ShareSDK ssdk;
// Use this for initialization
void Start()
{
//绑定单例的sdk
ssdk = ShareSDKManager.Instance.ssdk;
//指定授权结果的回调函数
ssdk.authHandler = OnAuthResultHandker;
}
//使用新浪微博账号登录
public void OnSinaLoginBtn()
{
//检测指定的平台是否已经授权过了
if (ssdk.IsAuthorized(PlatformType.SinaWeibo))
{
//提示
//将授权信息,写入到自定有的文件中 ... 查看授权信息内容...
Tools.WriteFile(Application.persistentDataPath, "AuthInfo.data", ssdk.GetAuthInfo(PlatformType.SinaWeibo).toJson());
Tools.MakeToast("微博用户:" + ssdk.GetAuthInfo(PlatformType.SinaWeibo)["userName"] + "授权成功");
//跳转到游戏场景
UnityEngine.SceneManagement.SceneManager.LoadScene(1);
}
else
{
//指定平台的授权
ssdk.Authorize(PlatformType.SinaWeibo);
}
}
public void ShareWeibo()
{
ShareContent content = new ShareContent();
content.SetTitle("这是我的第一个试应用 ..."); //看起来没什么用
content.SetText("我要分享到微博 ...."); //要分享的内容
content.SetUrl("https://blog.csdn.net/czhenya"); //分享链接
content.SetImageUrl("https://blog.csdn.net/czhenya");
content.SetShareType(ContentType.Webpage); //分享类型
ssdk.ShareContent(PlatformType.SinaWeibo, content);
ssdk.shareHandler += OnAuthResultHandker;//添加回调
}
public void ShareImg() //试用未成功 2018.12.21
{
ShareContent content = new ShareContent();
content.SetImageUrl(Application.dataPath + "czy.png");
content.SetShareType(ContentType.Image);
ssdk.ShareContent(PlatformType.SinaWeibo, content);
ssdk.shareHandler += OnAuthResultHandker;
}
/// <summary>
/// 回调函数
/// </summary>
/// <param name="reqID"></param>
/// <param name="state">授权状态</param>
/// <param name="type">授权平台类型</param>
/// <param name="data">有关授权的数据</param>
void OnAuthResultHandker(int reqID, ResponseState state, PlatformType type, Hashtable data)
{
switch (state) //授权状态...
{
case ResponseState.Success: //授权成功
//ssdk.GetAuthInfo(type); //授权信息
//自行编写工具类,写为文件
Tools.WriteFile(Application.persistentDataPath, "AuthResult.data", data.toJson());
Tools.WriteFile(Application.persistentDataPath, "AuthInfo.data", ssdk.GetAuthInfo(type).toJson());
Tools.MakeToast("微博用户:" + ssdk.GetAuthInfo(type)["userName"] + "授权成功");
//登录
UnityEngine.SceneManagement.SceneManager.LoadScene(1);
break;
case ResponseState.Fail: //授权失败
//清空授权信息
ssdk.CancelAuthorize(type);
Tools.MakeToast("授权失败");
break;
case ResponseState.Cancel: //取消授权
ssdk.CancelAuthorize(type);
Tools.MakeToast("取消授权");
break;
default: break;
}
}
}
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
/// <summary>
/// 工具类
/// </summary>
public class Tools {
/// <summary>
/// 写为文件
/// </summary>
/// <param name="path">路径</param>
/// <param name="name">名称</param>
/// <param name="info">信息</param>
public static void WriteFile(string path, string name, string info)
{
StreamWriter sw;
FileInfo fi = new FileInfo(path + "/" + name);
sw = fi.CreateText();
sw.Close();
sw.Dispose();
}
/// <summary>
/// 读取文件
/// </summary>
/// <param name="path"></param>
/// <param name="name"></param>
/// <returns></returns>
public static string ReadFile(string path, string name)
{
StreamReader sr;
FileInfo fi = new FileInfo(path + "/" + name);
sr = fi.OpenText();
string info = sr.ReadToEnd();
sr.Close();
sr.Dispose();
return info;
}
//通过C# 代用Java代码 实现(类似再按一下退出)的吐司提示效果
public static void MakeToast(string info)
{
AndroidJavaObject currenActivity = new AndroidJavaObject("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast");
currenActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
Toast.CallStatic<AndroidJavaObject>("makeText", currenActivity, info, Toast.GetStatic<int>("LENGTH_LONG")).Call("show");
}));
}
}