demo_ar_unity/Assets/FlutterUnityIntegration/NativeAPI.cs
2025-03-18 09:34:42 +07:00

118 lines
3.5 KiB
C#
Executable File

using System;
using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace FlutterUnityIntegration
{
public class NativeAPI
{
#if UNITY_IOS && !UNITY_EDITOR
[DllImport("__Internal")]
public static extern void OnUnityMessage(string message);
[DllImport("__Internal")]
public static extern void OnUnitySceneLoaded(string name, int buildIndex, bool isLoaded, bool IsValid);
#endif
#if UNITY_WEBGL
[DllImport("__Internal")]
public static extern void OnUnityMessageWeb(string message);
[DllImport("__Internal")]
public static extern void OnUnitySceneLoadedWeb(string name, int buildIndex, bool isLoaded, bool isValid);
#endif
public static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
#if UNITY_ANDROID
try
{
AndroidJavaClass jc = new AndroidJavaClass("com.xraph.plugin.flutter_unity_widget.UnityPlayerUtils");
jc.CallStatic("onUnitySceneLoaded", scene.name, scene.buildIndex, scene.isLoaded, scene.IsValid());
}
catch (Exception e)
{
Debug.Log(e.Message);
}
#elif UNITY_WEBGL
OnUnitySceneLoadedWeb(scene.name, scene.buildIndex, scene.isLoaded, scene.IsValid());
#elif UNITY_IOS && !UNITY_EDITOR
OnUnitySceneLoaded(scene.name, scene.buildIndex, scene.isLoaded, scene.IsValid());
#endif
}
public static void SendMessageToFlutter(string message)
{
#if UNITY_ANDROID
try
{
AndroidJavaClass jc = new AndroidJavaClass("com.xraph.plugin.flutter_unity_widget.UnityPlayerUtils");
jc.CallStatic("onUnityMessage", message);
}
catch (Exception e)
{
Debug.Log(e.Message);
}
#elif UNITY_WEBGL
OnUnityMessageWeb(message);
#elif UNITY_IOS && !UNITY_EDITOR
OnUnityMessage(message);
#endif
}
public static void ShowHostMainWindow()
{
#if UNITY_ANDROID
try
{
var jc = new AndroidJavaClass("com.xraph.plugin.flutter_unity_widget.OverrideUnityActivity");
var overrideActivity = jc.GetStatic<AndroidJavaObject>("instance");
overrideActivity.Call("showMainActivity");
}
catch (Exception e)
{
Debug.Log(e.Message);
}
#elif UNITY_IOS && !UNITY_EDITOR
// NativeAPI.showHostMainWindow();
#endif
}
public static void UnloadMainWindow()
{
#if UNITY_ANDROID
try
{
AndroidJavaClass jc = new AndroidJavaClass("com.xraph.plugin.flutter_unity_widget.OverrideUnityActivity");
AndroidJavaObject overrideActivity = jc.GetStatic<AndroidJavaObject>("instance");
overrideActivity.Call("unloadPlayer");
}
catch (Exception e)
{
Debug.Log(e.Message);
}
#elif UNITY_IOS && !UNITY_EDITOR
// NativeAPI.unloadPlayer();
#endif
}
public static void QuitUnityWindow()
{
#if UNITY_ANDROID
try
{
AndroidJavaClass jc = new AndroidJavaClass("com.xraph.plugin.flutter_unity_widget.OverrideUnityActivity");
AndroidJavaObject overrideActivity = jc.GetStatic<AndroidJavaObject>("instance");
overrideActivity.Call("quitPlayer");
}
catch (Exception e)
{
Debug.Log(e.Message);
}
#elif UNITY_IOS && !UNITY_EDITOR
// NativeAPI.quitPlayer();
#endif
}
}
}