using UnityEngine; namespace AIHelp { #if UNITY_ANDROID public class AIHelpAndroidCore : IAIHelpCore { private AndroidJavaClass javaSupport; private AndroidJavaObject currentActivity; public AIHelpAndroidCore() { AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); javaSupport = new AndroidJavaClass("net.aihelp.init.AIHelpSupport"); currentActivity = jc.GetStatic("currentActivity"); } public void Init(string appKey, string domain, string appId, string language) { if (javaSupport != null && currentActivity != null) { javaSupport.CallStatic("init", currentActivity, appKey, domain, appId, language); } } private AndroidJavaObject getApiConfig(ApiConfig config) { AndroidJavaObject builder = new AndroidJavaObject("net.aihelp.config.ApiConfig$Builder"); return builder.Call("build", config.GetEntranceId(), config.GetWelcomeMessage()); } private AndroidJavaObject getUserConfig(UserConfig config) { AndroidJavaObject builder = new AndroidJavaObject("net.aihelp.config.UserConfig$Builder"); builder.Call("setUserId", config.GetUserId()); builder.Call("setUserName", config.GetUserName()); builder.Call("setServerId", config.GetServerId()); builder.Call("setUserTags", config.GetUserTags()); builder.Call("setCustomData", config.GetCustomData()); builder.Call("setSyncCrmInfo", config.GetWhetherSyncCrmInfo()); return builder.Call("build"); } private AndroidJavaObject getPublishCountryOrRegion(PublishCountryOrRegion countryOrRegion) { AndroidJavaClass clz = new AndroidJavaClass("net.aihelp.config.enums.PublishCountryOrRegion"); return clz.CallStatic("fromValue", (int)countryOrRegion); } private AndroidJavaObject getPushPlatform(PushPlatform platform) { AndroidJavaClass clz = new AndroidJavaClass("net.aihelp.config.enums.PushPlatform"); return clz.CallStatic("fromValue", (int)platform); } private AndroidJavaObject getShowConversationMoment(ConversationMoment conversationMoment) { AndroidJavaClass clz = new AndroidJavaClass("net.aihelp.config.enums.ShowConversationMoment"); return clz.CallStatic("fromValue", (int)conversationMoment); } public bool Show(string entranceId) { if (javaSupport != null && currentActivity != null) { return javaSupport.CallStatic("show", entranceId); } return false; } public bool Show(ApiConfig apiConfig) { if (javaSupport != null && currentActivity != null) { return javaSupport.CallStatic("show", getApiConfig(apiConfig)); } return false; } public void ShowSingleFAQ(string faqId, ConversationMoment conversationMoment) { if (javaSupport != null && currentActivity != null) { javaSupport.CallStatic("showSingleFAQ", faqId, getShowConversationMoment(conversationMoment)); } } public void UpdateUserInfo(UserConfig config) { if (javaSupport != null) { javaSupport.CallStatic("updateUserInfo", getUserConfig(config)); } } public void ResetUserInfo() { if (javaSupport != null) { javaSupport.CallStatic("resetUserInfo"); } } public void UpdateSDKLanguage(string language) { if (javaSupport != null) { javaSupport.CallStatic("updateSDKLanguage", language); } } public void SetUploadLogPath(string logPath) { if (javaSupport != null) { javaSupport.CallStatic("setUploadLogPath", logPath); } } public void SetPushTokenAndPlatform(string logPath, PushPlatform pushPlatform) { if (javaSupport != null) { javaSupport.CallStatic("setPushTokenAndPlatform", logPath, getPushPlatform(pushPlatform)); } } private class ListenerAdapter : AndroidJavaProxy { private readonly AIHelpDefine.OnAIHelpInitializedCallback initCallback; private readonly AIHelpDefine.OnMessageCountArrivedCallback msgCountCallback; private readonly AIHelpDefine.OnNetworkCheckResultCallback netCheckCallback; private readonly AIHelpDefine.OnSpecificFormSubmittedCallback submittedCallback; private readonly AIHelpDefine.OnAIHelpSessionOpenCallback sessionOpenCallback; private readonly AIHelpDefine.OnAIHelpSessionCloseCallback sessionCloseCallback; private readonly AIHelpDefine.OnSpecificUrlClickedCallback urlClickedCallback; public ListenerAdapter(AIHelpDefine.OnAIHelpInitializedCallback callback) : base("net.aihelp.ui.listener.OnAIHelpInitializedCallback") { this.initCallback = callback; } public ListenerAdapter(AIHelpDefine.OnMessageCountArrivedCallback callback) : base("net.aihelp.ui.listener.OnMessageCountArrivedCallback") { this.msgCountCallback = callback; } public ListenerAdapter(AIHelpDefine.OnNetworkCheckResultCallback callback) : base("net.aihelp.ui.listener.OnNetworkCheckResultCallback") { this.netCheckCallback = callback; } public ListenerAdapter(AIHelpDefine.OnSpecificFormSubmittedCallback callback) : base("net.aihelp.ui.listener.OnSpecificFormSubmittedCallback") { this.submittedCallback = callback; } public ListenerAdapter(AIHelpDefine.OnAIHelpSessionOpenCallback callback) : base("net.aihelp.ui.listener.OnAIHelpSessionOpenCallback") { this.sessionOpenCallback = callback; } public ListenerAdapter(AIHelpDefine.OnAIHelpSessionCloseCallback callback) : base("net.aihelp.ui.listener.OnAIHelpSessionCloseCallback") { this.sessionCloseCallback = callback; } public ListenerAdapter(AIHelpDefine.OnSpecificUrlClickedCallback callback) : base("net.aihelp.ui.listener.OnSpecificUrlClickedCallback") { this.urlClickedCallback = callback; } void onAIHelpInitialized(bool isSuccess, string message) { initCallback(isSuccess, message); } void onMessageCountArrived(int msgCount) { msgCountCallback(msgCount); } void onNetworkCheckResult(string netLog) { netCheckCallback(netLog); } void onFormSubmitted() { submittedCallback(); } void onAIHelpSessionOpened() { sessionOpenCallback(); } void onAIHelpSessionClosed() { sessionCloseCallback(); } void onSpecificUrlClicked(string url) { urlClickedCallback(url); } } public void SetOnAIHelpInitializedCallback(AIHelpDefine.OnAIHelpInitializedCallback listener) { javaSupport.CallStatic("setOnAIHelpInitializedCallback", listener == null ? null : new ListenerAdapter(listener)); } public void SetNetworkCheckHostAddress(string address, AIHelpDefine.OnNetworkCheckResultCallback listener) { javaSupport.CallStatic("setNetworkCheckHostAddress", address, listener == null ? null : new ListenerAdapter(listener)); } public void StartUnreadMessageCountPolling(AIHelpDefine.OnMessageCountArrivedCallback listener) { javaSupport.CallStatic("startUnreadMessageCountPolling", listener == null ? null : new ListenerAdapter(listener)); } public void FetchUnreadMessageCount(AIHelpDefine.OnMessageCountArrivedCallback listener) { javaSupport.CallStatic("fetchUnreadMessageCount", listener == null ? null : new ListenerAdapter(listener)); } public void SetOnSpecificFormSubmittedCallback(AIHelpDefine.OnSpecificFormSubmittedCallback listener) { javaSupport.CallStatic("setOnSpecificFormSubmittedCallback", listener == null ? null : new ListenerAdapter(listener)); } public void SetOnAIHelpSessionOpenCallback(AIHelpDefine.OnAIHelpSessionOpenCallback listener) { javaSupport.CallStatic("setOnAIHelpSessionOpenCallback", listener == null ? null : new ListenerAdapter(listener)); } public void SetOnAIHelpSessionCloseCallback(AIHelpDefine.OnAIHelpSessionCloseCallback listener) { javaSupport.CallStatic("setOnAIHelpSessionCloseCallback", listener == null ? null : new ListenerAdapter(listener)); } public void SetOnSpecificUrlClickedCallback(AIHelpDefine.OnSpecificUrlClickedCallback listener) { javaSupport.CallStatic("setOnSpecificUrlClickedCallback", listener == null ? null : new ListenerAdapter(listener)); } public void ShowUrl(string url) { if (javaSupport != null) { javaSupport.CallStatic("showUrl", url); } } public void AdditionalSupportFor(PublishCountryOrRegion countryOrRegion) { if (javaSupport != null) { javaSupport.CallStatic("additionalSupportFor", getPublishCountryOrRegion(countryOrRegion)); } } public string GetSDKVersion() { if (javaSupport != null) { return javaSupport.CallStatic("getSDKVersion"); } return ""; } public bool IsAIHelpShowing() { if (javaSupport != null) { return javaSupport.CallStatic("isAIHelpShowing"); } return false; } public void EnableLogging(bool isOpen) { if (javaSupport != null) { javaSupport.CallStatic("enableLogging", isOpen); } } public void Close() { if (javaSupport != null) { javaSupport.CallStatic("close"); } } } #endif }