123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382 |
- using System;
- using System.IO;
- using System.Text;
- using UnityEngine;
- using System.Reflection;
- using System.Collections;
- using System.Collections.Generic;
- namespace cn.sharesdk.unity3d {
- public delegate void sendWXRequestToken(string uid, string token);
- public delegate void sendWXRefreshToken(string token);
- public class ShareSDK : MonoBehaviour
- {
- //版本号,每次发布新版本都需要更新
- public static string version = "3.0.1";
- #if UNITY_IPHONE || UNITY_IOS
- public string appKey = "3276d3e413040";
- public string appSecret = "4280a3a6df667cfce37528dec03fd9c3";
- public string mobNetLater = "2";
- public string mobTwitterVer = "2";
- public List<string> customAssociatedDomains = new List<string>();
- public GetWXRequestTokenHanlerEvent wxRequestHandler;
- public GetWXRefreshTokenHanlerEvent wxRefreshTokenHandler;
- public GetShareCommandHanlerEvent shareCommandHandler;
- #endif
- private int reqID;
- public DevInfoSet devInfo;
- public ShareSDKImpl sdk;
- public EventHandler authHandler;
- public EventHandler shareHandler;
- public EventHandler showUserHandler;
- public EventHandler getFriendsHandler;
- public EventHandler followFriendHandler;
- public EventHandler clientValidForAndroidHandler;
- void Awake() {
- Type type = devInfo.GetType();
- Hashtable platformConfigs = new Hashtable();
- FieldInfo[] devInfoFields = type.GetFields();
- foreach (FieldInfo devInfoField in devInfoFields) {
- DevInfo info = (DevInfo) devInfoField.GetValue(devInfo);
- int platformId = (int)info.GetType().GetField("type").GetValue(info);
- FieldInfo[] fields = info.GetType().GetFields();
- Hashtable table = new Hashtable();
- foreach (FieldInfo field in fields) {
- if ("type".EndsWith(field.Name)) {
- continue;
- } else if ("Enable".EndsWith(field.Name) || "ShareByAppClient".EndsWith(field.Name) || "BypassApproval".EndsWith(field.Name) || "WithShareTicket".EndsWith(field.Name)) {
- table.Add(field.Name, Convert.ToString(field.GetValue(info)).ToLower());
- } else {
- table.Add(field.Name, Convert.ToString(field.GetValue(info)));
- }
- }
- platformConfigs.Add(platformId, table);
- }
- #if UNITY_ANDROID
- sdk = new AndroidImpl(gameObject);
- sdk.PrepareLoopShare();
- sdk.setChannelId();
- #elif UNITY_IPHONE
- sdk = new iOSImpl(gameObject);
- #endif
- sdk.SetPlatformConfig(platformConfigs);
- }
- public delegate void EventHandler(int reqID, ResponseState state, PlatformType type, Hashtable data);
- private void _Callback(string data) {
- if (data == null) {
- return;
- }
- Hashtable res = (Hashtable)MiniJSON.jsonDecode(data);
- if (res == null || res.Count <= 0) {
- return;
- }
- int status = Convert.ToInt32(res["status"]);
- int reqID = Convert.ToInt32(res["reqID"]);
- PlatformType platform = (PlatformType)Convert.ToInt32(res["platform"]);
- int action = Convert.ToInt32(res["action"]);
- switch(status) {
- case 1: {
- Console.WriteLine(data);
- Hashtable resp = (Hashtable)res["res"];
- OnComplete(reqID, platform, action, resp);
- break;
- }
- case 2: {
- Console.WriteLine(data);
- Hashtable throwable = (Hashtable)res["res"];
- OnError(reqID, platform, action, throwable);
- break;
- }
- case 3: {
- OnCancel(reqID, platform, action);
- break;
- }
- }
- }
- public void OnError(int reqID, PlatformType platform, int action, Hashtable throwable) {
- switch (action) {
- case 1: {
- if (authHandler != null) {
- authHandler(reqID, ResponseState.Fail, platform, throwable);
- }
- break;
- }
- case 2: {
- if (getFriendsHandler != null) {
- getFriendsHandler(reqID, ResponseState.Fail, platform, throwable);
- }
- break;
- }
- case 6: {
- if (followFriendHandler != null) {
- followFriendHandler(reqID, ResponseState.Fail, platform, throwable);
- }
- break;
- }
- case 9: {
- if (shareHandler != null) {
- shareHandler(reqID, ResponseState.Fail, platform, throwable);
- }
- break;
- }
- case 8: {
- if (showUserHandler != null) {
- showUserHandler(reqID, ResponseState.Fail, platform, throwable);
- }
- break;
- }
- }
- }
- public void OnComplete(int reqID, PlatformType platform, int action, Hashtable res) {
- switch (action) {
- case 1: {
- if (authHandler != null) {
- authHandler(reqID, ResponseState.Success, platform, res);
- }
- break;
- }
- case 2: {
- if (getFriendsHandler != null) {
- getFriendsHandler(reqID, ResponseState.Success, platform, res);
- }
- break;
- }
- case 6: {
- if (followFriendHandler != null) {
- followFriendHandler(reqID, ResponseState.Success, platform, res);
- }
- break;
- }
- case 9: {
- if (shareHandler != null) {
- shareHandler(reqID, ResponseState.Success, platform, res);
- }
- break;
- }
- case 8: {
- if (showUserHandler != null) {
- showUserHandler(reqID, ResponseState.Success, platform, res);
- }
- break;
- }
- case 12: {
- if (clientValidForAndroidHandler != null) {
- clientValidForAndroidHandler(reqID,ResponseState.Success,platform, res);
- }
- break;
- }
- #if UNITY_IPHONE
- case 11: {
- shareCommandHandler(res);
- break;
- }
- case 10: {
- int isRefresh = Convert.ToInt32(res["isRefreshToken"]);
- if (isRefresh == 1) {
- String uid = Convert.ToString(res["uid"]);
- wxRefreshTokenHandler(uid, sendWXRefreshTokenMethod);
- } else {
- String authCode = Convert.ToString(res["authCode"]);
- wxRequestHandler(authCode, sendWXRequestTokenMehtod);
- }
- break;
- }
- #endif
- }
- }
- public void OnCancel(int reqID, PlatformType platform, int action) {
- switch (action) {
- case 1: {
- if (authHandler != null) {
- authHandler(reqID, ResponseState.Cancel, platform, null);
- }
- break;
- }
- case 2: {
- if (getFriendsHandler != null) {
- getFriendsHandler(reqID, ResponseState.Cancel, platform, null);
- }
- break;
- }
- case 6: {
- if (followFriendHandler != null) {
- followFriendHandler(reqID, ResponseState.Cancel, platform, null);
- }
- break;
- }
- case 9: {
- if (shareHandler != null) {
- shareHandler(reqID, ResponseState.Cancel, platform, null);
- }
- break;
- }
- case 8: {
- if (showUserHandler != null) {
- showUserHandler(reqID, ResponseState.Cancel, platform, null);
- }
- break;
- }
- }
- }
- public void InitSDK(string appKey) {
- //shareSDKUtils.InitSDK (appKey);
- }
- public void InitSDK(string appKey, string appSecret) {
- //shareSDKUtils.InitSDK (appKey,appSecret);
- }
- public void SetPlatformConfig(Hashtable configInfo) {
- sdk.SetPlatformConfig(configInfo);
- }
- public int Authorize(PlatformType platform) {
- reqID ++;
- sdk.Authorize(reqID, platform);
- return reqID;
- }
- public void CancelAuthorize(PlatformType platform) {
- sdk.CancelAuthorize(platform);
- }
- public bool IsAuthorized(PlatformType platform) {
- return sdk.IsAuthorized(platform);
- }
- public bool IsClientValid(PlatformType platform) {
- return sdk.IsClientValid(platform);
- }
- public int GetUserInfo(PlatformType platform) {
- reqID ++;
- sdk.GetUserInfo(reqID, platform);
- return reqID;
- }
- public int ShareContent(PlatformType platform, ShareContent content) {
- reqID ++;
- sdk.ShareContent(reqID, platform, content);
- return reqID;
- }
- public int ShareContent(PlatformType[] platforms, ShareContent content) {
- reqID ++;
- sdk.ShareContent(reqID, platforms, content);
- return reqID;
- }
- public int ShareContentWithActivity(PlatformType platform, ShareContent content) {
- reqID++;
- #if UNITY_IPHONE
- sdk.ShareContentWithActivity(reqID, platform, content);
- #endif
- return reqID;
- }
- public int ShowPlatformList(PlatformType[] platforms, ShareContent content, int x, int y) {
- reqID++;
- sdk.ShowPlatformList(reqID, platforms, content, x, y);
- return reqID;
- }
- public int ShowShareContentEditor(PlatformType platform, ShareContent content) {
- reqID++;
- sdk.ShowShareContentEditor(reqID, platform, content);
- return reqID;
- }
- public int ShareWithContentName(PlatformType platform, string contentName, Hashtable customFields) {
- reqID++;
- sdk.ShareWithContentName(reqID, platform, contentName, customFields);
- return reqID;
- }
- public int ShowPlatformListWithContentName(string contentName, Hashtable customFields, PlatformType[] platforms, int x, int y) {
- reqID++;
- sdk.ShowPlatformListWithContentName(reqID, contentName, customFields, platforms, x, y);
- return reqID;
- }
- public int ShowShareContentEditorWithContentName(PlatformType platform, string contentName, Hashtable customFields) {
- reqID++;
- sdk.ShowShareContentEditorWithContentName(reqID, platform, contentName, customFields);
- return reqID;
- }
- public int GetFriendList(PlatformType platform, int count, int page) {
- reqID++;
- sdk.GetFriendList(reqID, platform, count, page);
- return reqID;
- }
- public int AddFriend(PlatformType platform, string account) {
- reqID++;
- sdk.AddFriend(reqID, platform, account);
- return reqID;
- }
- public Hashtable GetAuthInfo(PlatformType platform) {
- return sdk.GetAuthInfo(platform);
- }
- public void DisableSSO(bool open) {
- sdk.DisableSSO(open);
- }
- public void openMiniProgram(string userName, string path, int miniProgramType) {
- sdk.openMiniProgram(userName, path, miniProgramType);
- }
- public int isClientValidForAndroid(PlatformType platform) {
- reqID++;
- #if UNITY_ANDROID
- sdk.isClientValidForAndroid(reqID,platform);
- #endif
-
- return reqID;
- }
- #if UNITY_IPHONE || UNITY_IOS
- public delegate void GetWXRequestTokenHanlerEvent(string authCode, sendWXRequestToken send);
- public delegate void GetWXRefreshTokenHanlerEvent(string authCode, sendWXRefreshToken send);
- public delegate void GetShareCommandHanlerEvent(Hashtable data);
- public void ShareWithCommand(Hashtable customFields) {
- sdk.shareSDKWithCommand(customFields);
- }
- #endif
- public void getWXRequestToken() {
- sdk.getWXRequestToken();
- }
- public void getWXRefreshToken() {
- sdk.getWXRefreshToken();
- }
- public void sendWXRequestTokenMehtod(string uid, string token) {
- sdk.sendWXRequestToken(uid, token);
- }
- public void sendWXRefreshTokenMethod(string token) {
- sdk.sendWXRefreshToken(token);
- }
- }
- }
|