| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using System.Runtime.InteropServices;
- using System;
- using AOT;
- public class WeChatLoginHelper
- {
- public static bool IsWechatInstalled() {
- #if UNITY_ANDROID
- using (var sdk = new AndroidJavaClass("com.xmjssvr.BowArrow.mi.WeChatSDK"))
- {
- bool bInstalled = sdk.CallStatic<bool>("IsWXAppInstalled");
- //Debug.Log("安裝微信:"+ bInstalled);
- return bInstalled;
- }
-
- #endif
- #if UNITY_IPHONE
- return IsWechatInstalled_iOS();
- #endif
- }
- public static void Login()
- {
- #if UNITY_ANDROID
- using (var sdk = new AndroidJavaClass("com.xmjssvr.BowArrow.mi.WeChatSDK")) sdk.CallStatic("WeChatLogin");
- #endif
- #if UNITY_IPHONE
- if (!IsWechatInstalled_iOS())
- {
- Debug.Log("微信未安装");
- return;
- }
- WXResultHandler handler = new WXResultHandler(resultHandler);
- IntPtr fp = Marshal.GetFunctionPointerForDelegate(handler);
- _WechatLogin(fp);
- #endif
- }
- public static void OnLoginResp(string code)
- {
- LoginView.ins?.OnWxLoginResp(code);
- }
- #if UNITY_IPHONE
- //这个方法就是引用在 xcode 中编写的方法,与 iOS 连接的桥梁
- [DllImport("__Internal")]
- private static extern void _WechatLogin(IntPtr resultHandler);
- [DllImport("__Internal")]
- private static extern bool IsWechatInstalled_iOS();
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public delegate void WXResultHandler(string resultString);
- [MonoPInvokeCallback(typeof(WXResultHandler))]
- static void resultHandler(string content)
- {
- string[] args = content.Split(';');
- switch (args[0])
- {
- case "0":
- //WXLoginState.OK
- //Debug.Log("token:" + args[1]);
- LoginView.ins?.OnWxLoginResp(args[1]);
- break;
- case "-2":
- //WXLoginState.Denied
- Debug.Log(args[1]);
- break;
- case "-4":
- //WXLoginState.Cancel
- Debug.Log(args[1]);
- break;
- default:
- //WXLoginState.Other
- Debug.Log(args[1]);
- break;
- }
- }
-
- public enum WXLoginState
- {
- OK,
- Denied = -2,
- Cancel = -4,
- Other = -1
- }
- #endif
- }
|