Files
ft/Client/LocalPackages/aihelp-4.6/Runtime/AIHelp/AIHelpiOSCore.cs
2026-06-29 21:18:33 +08:00

368 lines
13 KiB
C#

// We need this one for importing our IOS functions
using System.Runtime.InteropServices;
using AOT;
using System;
namespace AIHelp
{
#if UNITY_IOS
public class AIHelpiOSCore : IAIHelpCore
{
static event AIHelpDefine.OnAIHelpInitializedCallback _iOSInitCallback;
static event AIHelpDefine.OnNetworkCheckResultCallback _iOSNetworkCheckCallback;
static event AIHelpDefine.OnMessageCountArrivedCallback _iOSPollingMessageCountCallback;
static event AIHelpDefine.OnMessageCountArrivedCallback _iOSFetchMessageCountCallback;
static event AIHelpDefine.OnSpecificFormSubmittedCallback _iOSSpecificFormCallback;
static event AIHelpDefine.OnAIHelpSessionOpenCallback _iOSSessionOpenCallback;
static event AIHelpDefine.OnAIHelpSessionCloseCallback _iOSSessionCloseCallback;
static event AIHelpDefine.OnSpecificUrlClickedCallback _iOSSpecificUrlClickedCallback;
[DllImport("__Internal")]
private static extern void unity_init(string apiKey, string domainName, string appId);
[DllImport("__Internal")]
private static extern void unity_initLan(string apiKey, string domainName, string appId, string language);
public delegate void iOSOnAIHelpInitialized(bool isSuccess, string message);
[MonoPInvokeCallback(typeof(iOSOnAIHelpInitialized))]
private static void iOSInitCallback(bool isSuccess, string message)
{
if (_iOSInitCallback != null)
{
_iOSInitCallback(isSuccess, message);
}
}
[DllImport("__Internal")]
private static extern void unity_setOnInitializedCallback(iOSOnAIHelpInitialized callBack);
[DllImport("__Internal")]
private static extern bool unity_show(string entranceId, string welcomeMessage);
[DllImport("__Internal")]
private static extern void unity_showSingleFAQ(string faqId, int conversationMoment);
[DllImport("__Internal")]
private static extern void unity_updateUserInfo(string userId, string userName, string serverId, string userTags, string customData, bool isSyncCrmInfo);
[DllImport("__Internal")]
private static extern void unity_resetUserInfo();
[DllImport("__Internal")]
private static extern void unity_updateSDKLanguage(string language);
[DllImport("__Internal")]
private static extern void unity_setUploadLogPath(string path);
[DllImport("__Internal")]
private static extern void unity_setPushTokenAndPlatform(string pushToken, int pushPlatform);
[DllImport("__Internal")]
private static extern string unity_getSDKVersion();
[DllImport("__Internal")]
private static extern bool unity_isAIHelpShowing();
[DllImport("__Internal")]
private static extern void unity_enableLogging(bool enable);
[DllImport("__Internal")]
private static extern void unity_close();
[DllImport("__Internal")]
private static extern void unity_setSDKInterfaceOrientationMask(int interfaceOrientationMask);
[DllImport("__Internal")]
private static extern void unity_setSDKAppearanceMode(int mode);
[DllImport("__Internal")]
private static extern void unity_setSDKEdgeInsets(float top, float bottom, bool enable);
[DllImport("__Internal")]
private static extern void unity_setSDKEdgeColor(float red, float green, float blue, float alpha);
public delegate void iOSOnNetworkCheckResult(string netLog);
[MonoPInvokeCallback(typeof(iOSOnNetworkCheckResult))]
private static void iOSNetworkCheckCallbackMethod(string netLog)
{
if (_iOSNetworkCheckCallback != null)
{
_iOSNetworkCheckCallback(netLog);
}
}
[DllImport("__Internal")]
private static extern void unity_setNetworkCheckHostAddress(string address, iOSOnNetworkCheckResult callback);
public delegate void iOSOnPollingMessageCountArrived(int msgCount);
[MonoPInvokeCallback(typeof(iOSOnPollingMessageCountArrived))]
private static void iOSOnPollingMessageCountArrivedMethod(int msgCount)
{
if (_iOSPollingMessageCountCallback != null)
{
_iOSPollingMessageCountCallback(msgCount);
}
}
public delegate void iOSOnFetchMessageCountArrived(int msgCount);
[MonoPInvokeCallback(typeof(iOSOnFetchMessageCountArrived))]
private static void iOSOnFetchMessageCountArrivedMethod(int msgCount)
{
if (_iOSFetchMessageCountCallback != null)
{
_iOSFetchMessageCountCallback(msgCount);
}
}
[DllImport("__Internal")]
private static extern void unity_startUnreadMessageCountPolling(iOSOnPollingMessageCountArrived callback);
[DllImport("__Internal")]
private static extern void unity_fetchUnreadMessageCount(iOSOnFetchMessageCountArrived callback);
[DllImport("__Internal")]
private static extern void unity_showUrl(string url);
[DllImport("__Internal")]
private static extern void unity_additionalSupportFor(PublishCountryOrRegion countryOrRegion);
public delegate void iOSOnAIHelpSpecificFormSubmit();
[MonoPInvokeCallback(typeof(iOSOnAIHelpSpecificFormSubmit))]
private static void iOSSpecificFormSubmit()
{
if (_iOSSpecificFormCallback != null)
{
_iOSSpecificFormCallback();
}
}
[DllImport("__Internal")]
private static extern void unity_setOnSpecificFormSubmittedCallback(iOSOnAIHelpSpecificFormSubmit callBack);
public delegate void iOSOnAIHelpSessionOpenSubmit();
[MonoPInvokeCallback(typeof(iOSOnAIHelpSessionOpenSubmit))]
private static void iOSSessionOpenSubmit()
{
if (_iOSSessionOpenCallback != null)
{
_iOSSessionOpenCallback();
}
}
[DllImport("__Internal")]
private static extern void unity_setOnSessionOpenCallback(iOSOnAIHelpSessionOpenSubmit callBack);
public delegate void iOSOnAIHelpSessionCloseSubmit();
[MonoPInvokeCallback(typeof(iOSOnAIHelpSessionCloseSubmit))]
private static void iOSSessionCloseSubmit()
{
if (_iOSSessionCloseCallback != null)
{
_iOSSessionCloseCallback();
}
}
[DllImport("__Internal")]
private static extern void unity_setOnSessionCloseCallback(iOSOnAIHelpSessionCloseSubmit callBack);
public delegate void iOSSpecificUrlClickedCallback(string url);
[MonoPInvokeCallback(typeof(iOSSpecificUrlClickedCallback))]
private static void iOSSpecificUrlClicked(string url)
{
if (_iOSSpecificUrlClickedCallback != null)
{
_iOSSpecificUrlClickedCallback(url);
}
}
[DllImport("__Internal")]
private static extern void unity_setOnSpecificUrlClickedCallback(iOSSpecificUrlClickedCallback callback);
public void Init(string appKey, string domain, string appId)
{
unity_init(appKey, domain, appId);
}
public void Init(string appKey, string domain, string appId, string language)
{
unity_initLan(appKey, domain, appId, language);
}
public void SetOnAIHelpInitializedCallback(AIHelpDefine.OnAIHelpInitializedCallback callback)
{
_iOSInitCallback = callback;
unity_setOnInitializedCallback(iOSInitCallback);
}
public bool Show(string entranceId)
{
return unity_show(entranceId, "");
}
public bool Show(ApiConfig apiConfig)
{
return unity_show(apiConfig.GetEntranceId(), apiConfig.GetWelcomeMessage());
}
public void ShowSingleFAQ(string faqId, ConversationMoment moment)
{
unity_showSingleFAQ(faqId, (int)moment);
}
public void UpdateUserInfo(UserConfig userConfig)
{
unity_updateUserInfo(userConfig.GetUserId(), userConfig.GetUserName(),
userConfig.GetServerId(), userConfig.GetUserTags(),
userConfig.GetCustomData(), userConfig.GetWhetherSyncCrmInfo());
}
public void ResetUserInfo()
{
unity_resetUserInfo();
}
public void UpdateSDKLanguage(string language)
{
unity_updateSDKLanguage(language);
}
public void SetRequestedOrientation(int requestedOrientation)
{
unity_setSDKInterfaceOrientationMask(requestedOrientation);
}
public void SetUploadLogPath(string path)
{
unity_setUploadLogPath(path);
}
public void SetPushTokenAndPlatform(string pushToken, PushPlatform platform)
{
unity_setPushTokenAndPlatform(pushToken, getPushPlatform(platform));
}
public void SetNetworkCheckHostAddress(string address, AIHelpDefine.OnNetworkCheckResultCallback callback)
{
_iOSNetworkCheckCallback = callback;
unity_setNetworkCheckHostAddress(address, iOSNetworkCheckCallbackMethod);
}
public void StartUnreadMessageCountPolling(AIHelpDefine.OnMessageCountArrivedCallback callback)
{
_iOSPollingMessageCountCallback = callback;
unity_startUnreadMessageCountPolling(iOSOnPollingMessageCountArrivedMethod);
}
public void FetchUnreadMessageCount(AIHelpDefine.OnMessageCountArrivedCallback callback)
{
_iOSFetchMessageCountCallback = callback;
unity_fetchUnreadMessageCount(iOSOnFetchMessageCountArrivedMethod);
}
public string GetSDKVersion()
{
return unity_getSDKVersion();
}
public bool IsAIHelpShowing()
{
return unity_isAIHelpShowing();
}
public void EnableLogging(bool enable)
{
unity_enableLogging(enable);
}
public void SetSDKAppearanceMode(int mode)
{
unity_setSDKAppearanceMode(mode);
}
public void SetSDKEdgeInsets(float top, float bottom, bool enable)
{
unity_setSDKEdgeInsets(top, bottom, enable);
}
public void SetSDKEdgeColor(float red, float green, float blue, float alpha)
{
unity_setSDKEdgeColor(red, green, blue, alpha);
}
public void ShowUrl(string url)
{
unity_showUrl(url);
}
public void AdditionalSupportFor(PublishCountryOrRegion countryOrRegion)
{
unity_additionalSupportFor(countryOrRegion);
}
public void SetOnSpecificFormSubmittedCallback(AIHelpDefine.OnSpecificFormSubmittedCallback callback)
{
_iOSSpecificFormCallback = callback;
unity_setOnSpecificFormSubmittedCallback(iOSSpecificFormSubmit);
}
public void SetOnAIHelpSessionOpenCallback(AIHelpDefine.OnAIHelpSessionOpenCallback callback)
{
_iOSSessionOpenCallback = callback;
unity_setOnSessionOpenCallback(iOSSessionOpenSubmit);
}
public void SetOnAIHelpSessionCloseCallback(AIHelpDefine.OnAIHelpSessionCloseCallback callback)
{
_iOSSessionCloseCallback = callback;
unity_setOnSessionCloseCallback(iOSSessionCloseSubmit);
}
public void SetOnSpecificUrlClickedCallback(AIHelpDefine.OnSpecificUrlClickedCallback callback)
{
_iOSSpecificUrlClickedCallback = callback;
unity_setOnSpecificUrlClickedCallback(iOSSpecificUrlClicked);
}
public void Close() {
unity_close();
}
private int getPushPlatform(PushPlatform platform){
int tempPlatform = 2;
if (platform == PushPlatform.APNS)
{
tempPlatform = 1;
}
else if (platform == PushPlatform.FIREBASE)
{
tempPlatform = 2;
}
else if (platform == PushPlatform.JIGUANG)
{
tempPlatform = 3;
}
else if (platform == PushPlatform.GETUI)
{
tempPlatform = 4;
}
else if (platform == PushPlatform.HUAWEI)
{
tempPlatform = 6;
}
else if (platform == PushPlatform.ONE_SIGNAL)
{
tempPlatform = 7;
}
return tempPlatform;
}
}
#endif
}