ZoeRobotIngles/Assets/ReadParameters.cs

100 lines
2.9 KiB
C#

using UnityEngine;
using UnityEngine.SceneManagement;
public class ReadParameters : MonoBehaviour
{
/*
val intent = packageManager.getLaunchIntentForPackage("com.myrobot.RobotIngles")
intent?.putExtra("screen", "conversation")
startActivity(intent)
ou
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("myrobotingles://open?screen=conversation"))
startActivity(intent)
ou
adb shell am start -n com.myrobot.RobotIngles/com.unity3d.player.UnityPlayerActivity --es screen conversation
*/
LoginAPI loginApi;
static string screen = "";
void Start()
{
loginApi = GetComponent<LoginAPI>();
DontDestroyOnLoad(gameObject);
screen = GetScreenFromAndroidIntent();
if (PlayerPrefs.GetInt("Logado") == 1)
StartCoroutine(loginApi.HttpLogin());
else
LoadScene();
}
public static void LoadScene()
{
if (!string.IsNullOrEmpty(screen))
{
PlayerPrefs.SetString("Cena", screen);
}
if (PlayerPrefs.GetInt("Logado") == 0)
SceneManager.LoadScene("Login");
//else if (screen == "conversation")
// SceneManager.LoadScene("FaceConversation");
else
SceneManager.LoadScene("SampleScene");
}
string GetScreenFromAndroidIntent()
{
#if UNITY_ANDROID && !UNITY_EDITOR
try
{
using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
using (var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
using (var intent = activity.Call<AndroidJavaObject>("getIntent"))
{
// 1) Deep link: Intent.getData()
var data = intent.Call<AndroidJavaObject>("getData");
if (data != null)
{
string url = data.Call<string>("toString");
// Ex: meuapp://open?screen=conversation
var parsed = AndroidUriParseQuery(url, "screen");
if (!string.IsNullOrEmpty(parsed)) return parsed;
}
// 2) Extras: intent.getStringExtra("screen")
string extra = intent.Call<string>("getStringExtra", "screen");
if (!string.IsNullOrEmpty(extra)) return extra;
}
}
catch (System.Exception e)
{
Debug.Log("Erro lendo Intent: " + e.Message);
}
#endif
return null;
}
// Parsing simples sem libs
string AndroidUriParseQuery(string url, string key)
{
int idx = url.IndexOf('?');
if (idx < 0) return null;
string query = url.Substring(idx + 1);
string[] parts = query.Split('&');
foreach (var p in parts)
{
var kv = p.Split('=');
if (kv.Length == 2 && kv[0] == key) return System.Uri.UnescapeDataString(kv[1]);
}
return null;
}
}