using UnityEngine;
using System.Collections;
using ETHotfix.com.commsdk.unity3d;
using System;
///
/// 原生code 与Unity通信
///
public class NativeBridgeUtil : MonoBehaviour
{
// 单例模式
public static NativeBridgeUtil Instance { get; private set; }
CommSDKComponent csdk;
public void Awake()
{
// 实现单例模式
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
else
{
Instance = this;
DontDestroyOnLoad(gameObject);
}
gameObject.name = "NativeReceiver";
csdk = gameObject.AddComponent();
csdk.Init();
csdk.responseHandler = OnWechatResponse;
}
public void Start()
{
#if UNITY_ANDROID //android系统
AndroidJNI.AttachCurrentThread();
#endif
}
public Action loginCallback;
#region 通用SDK
//0 1 微信 2 闲聊 3多聊
public void WeChatLogin(int type)
{
#if UNITY_ANDROID || UNITY_IOS || UNITY_IPHONE
csdk.Authorize(type);
#endif
}
void OnWechatResponse(int reqID, ActionType type, RespState state, Hashtable data)
{
Debug.Log("OnWechatResponse: reqid=" + reqID + ",action=" + type + ",state=" + state);
switch (type)
{
case ActionType.Authorize:
OnAuthorizedHandler(reqID, state, data);
break;
case ActionType.Share:
break;
case ActionType.Pay:
break;
case ActionType.Location:
break;
}
}
//微信申请授权后回调
void OnAuthorizedHandler(int reqID, RespState state, Hashtable result)
{
if (state == RespState.Success)
{
//UILoginCtrl.Self.OnWechatLogin(result);
Debug.Log("OnAuthorizedHandler->Success:result=" + result);
string unionid = result["unionid"].ToString();
Debug.Log("OnAuthorizedHandler->Success:unionid=" + unionid);
if (loginCallback!= null)
{
loginCallback(unionid);
}
}
else if (state == RespState.Fail)
{
string errorMsg = result["error_msg"].ToString();
string statck = result["stack"].ToString();
Debug.Log("OnAuthorizedHandler->Fail:errorMsg=" + errorMsg + ",statck=" + statck);
}
else if (state == RespState.Cancel)
{
Debug.Log("OnAuthorizedHandler: Cancel");
}
}
#endregion
}