156 lines
4.9 KiB
C#
156 lines
4.9 KiB
C#
using System;
|
|
using System.Text;
|
|
using Viveport.Internal;
|
|
|
|
namespace Viveport
|
|
{
|
|
public class Deeplink
|
|
{
|
|
private const int MaxIdLength = 256;
|
|
|
|
private static Viveport.Internal.StatusCallback isReadyIl2cppCallback;
|
|
|
|
private static Viveport.Internal.StatusCallback2 goToAppIl2cppCallback;
|
|
|
|
private static Viveport.Internal.StatusCallback2 goToAppWithBranchNameIl2cppCallback;
|
|
|
|
private static Viveport.Internal.StatusCallback2 goToStoreIl2cppCallback;
|
|
|
|
private static Viveport.Internal.StatusCallback2 goToAppOrGoToStoreIl2cppCallback;
|
|
|
|
[MonoPInvokeCallback(typeof(Viveport.Internal.StatusCallback))]
|
|
private static void IsReadyIl2cppCallback(int errorCode)
|
|
{
|
|
isReadyIl2cppCallback(errorCode);
|
|
}
|
|
|
|
public static void IsReady(StatusCallback callback)
|
|
{
|
|
if (callback == null)
|
|
{
|
|
throw new InvalidOperationException("callback == null");
|
|
}
|
|
isReadyIl2cppCallback = callback.Invoke;
|
|
Api.InternalStatusCallbacks.Add(IsReadyIl2cppCallback);
|
|
if (IntPtr.Size == 8)
|
|
{
|
|
Viveport.Internal.Deeplink.IsReady_64(IsReadyIl2cppCallback);
|
|
}
|
|
else
|
|
{
|
|
Viveport.Internal.Deeplink.IsReady(IsReadyIl2cppCallback);
|
|
}
|
|
}
|
|
|
|
[MonoPInvokeCallback(typeof(Viveport.Internal.StatusCallback2))]
|
|
private static void GoToAppIl2cppCallback(int errorCode, string message)
|
|
{
|
|
goToAppIl2cppCallback(errorCode, message);
|
|
}
|
|
|
|
public static void GoToApp(StatusCallback2 callback, string viveportId, string launchData)
|
|
{
|
|
if (callback == null || string.IsNullOrEmpty(viveportId) || string.IsNullOrEmpty(launchData))
|
|
{
|
|
throw new InvalidOperationException("callback == null || string.IsNullOrEmpty(viveportId) || string.IsNullOrEmpty(launchData)");
|
|
}
|
|
goToAppIl2cppCallback = callback.Invoke;
|
|
Api.InternalStatusCallback2s.Add(GoToAppIl2cppCallback);
|
|
if (IntPtr.Size == 8)
|
|
{
|
|
Viveport.Internal.Deeplink.GoToApp_64(goToAppIl2cppCallback, viveportId, launchData);
|
|
}
|
|
else
|
|
{
|
|
Viveport.Internal.Deeplink.GoToApp(goToAppIl2cppCallback, viveportId, launchData);
|
|
}
|
|
}
|
|
|
|
[MonoPInvokeCallback(typeof(Viveport.Internal.StatusCallback2))]
|
|
private static void GoToAppWithBranchNameIl2cppCallback(int errorCode, string message)
|
|
{
|
|
goToAppWithBranchNameIl2cppCallback(errorCode, message);
|
|
}
|
|
|
|
public static void GoToApp(StatusCallback2 callback, string viveportId, string launchData, string branchName)
|
|
{
|
|
if (callback == null || string.IsNullOrEmpty(viveportId) || string.IsNullOrEmpty(launchData))
|
|
{
|
|
throw new InvalidOperationException("callback == null || string.IsNullOrEmpty(viveportId) || string.IsNullOrEmpty(launchData)");
|
|
}
|
|
goToAppWithBranchNameIl2cppCallback = callback.Invoke;
|
|
Api.InternalStatusCallback2s.Add(GoToAppWithBranchNameIl2cppCallback);
|
|
if (IntPtr.Size == 8)
|
|
{
|
|
Viveport.Internal.Deeplink.GoToApp_64(goToAppIl2cppCallback, viveportId, launchData, branchName);
|
|
}
|
|
else
|
|
{
|
|
Viveport.Internal.Deeplink.GoToApp(goToAppIl2cppCallback, viveportId, launchData, branchName);
|
|
}
|
|
}
|
|
|
|
[MonoPInvokeCallback(typeof(Viveport.Internal.StatusCallback2))]
|
|
private static void GoToStoreIl2cppCallback(int errorCode, string message)
|
|
{
|
|
goToStoreIl2cppCallback(errorCode, message);
|
|
}
|
|
|
|
public static void GoToStore(StatusCallback2 callback, string viveportId = "")
|
|
{
|
|
if (callback == null)
|
|
{
|
|
throw new InvalidOperationException("callback == null || string.IsNullOrEmpty(viveportId)");
|
|
}
|
|
goToStoreIl2cppCallback = callback.Invoke;
|
|
Api.InternalStatusCallback2s.Add(GoToStoreIl2cppCallback);
|
|
if (IntPtr.Size == 8)
|
|
{
|
|
Viveport.Internal.Deeplink.GoToStore_64(goToStoreIl2cppCallback, viveportId);
|
|
}
|
|
else
|
|
{
|
|
Viveport.Internal.Deeplink.GoToStore(goToStoreIl2cppCallback, viveportId);
|
|
}
|
|
}
|
|
|
|
[MonoPInvokeCallback(typeof(Viveport.Internal.StatusCallback2))]
|
|
private static void GoToAppOrGoToStoreIl2cppCallback(int errorCode, string message)
|
|
{
|
|
goToAppOrGoToStoreIl2cppCallback(errorCode, message);
|
|
}
|
|
|
|
public static void GoToAppOrGoToStore(StatusCallback2 callback, string viveportId, string launchData)
|
|
{
|
|
if (callback == null || string.IsNullOrEmpty(viveportId) || string.IsNullOrEmpty(launchData))
|
|
{
|
|
throw new InvalidOperationException("callback == null || string.IsNullOrEmpty(viveportId) || string.IsNullOrEmpty(launchData)");
|
|
}
|
|
goToAppOrGoToStoreIl2cppCallback = callback.Invoke;
|
|
Api.InternalStatusCallback2s.Add(GoToAppOrGoToStoreIl2cppCallback);
|
|
if (IntPtr.Size == 8)
|
|
{
|
|
Viveport.Internal.Deeplink.GoToAppOrGoToStore_64(goToAppOrGoToStoreIl2cppCallback, viveportId, launchData);
|
|
}
|
|
else
|
|
{
|
|
Viveport.Internal.Deeplink.GoToAppOrGoToStore(goToAppOrGoToStoreIl2cppCallback, viveportId, launchData);
|
|
}
|
|
}
|
|
|
|
public static string GetAppLaunchData()
|
|
{
|
|
StringBuilder stringBuilder = new StringBuilder(256);
|
|
if (IntPtr.Size == 8)
|
|
{
|
|
Viveport.Internal.Deeplink.GetAppLaunchData_64(stringBuilder, 256);
|
|
}
|
|
else
|
|
{
|
|
Viveport.Internal.Deeplink.GetAppLaunchData(stringBuilder, 256);
|
|
}
|
|
return stringBuilder.ToString();
|
|
}
|
|
}
|
|
}
|