From 9bb554260c63842b23919b1f128b9cc8488b7f50 Mon Sep 17 00:00:00 2001
From: hank <hank.zhang@proficientcity.com>
Date: Tue, 22 Jan 2019 11:15:22 +0800
Subject: [PATCH] 添加V3.8.0

---
 res/ElvaChatServiceSDK.bundle/vi-VN.lproj/Localizable.strings             |   24 
 res/ElvaChatServiceSDK.bundle/tr.lproj/Localizable.strings                |   37 
 res/ElvaChatServiceSDK.bundle/es.lproj/Localizable.strings                |   37 
 res/ElvaChatServiceSDK.bundle/en.lproj/Localizable.strings                |   37 
 res/ElvaChatServiceSDK.bundle/ru.lproj/Localizable.strings                |   39 
 config/wa_sdk_impl_config_aihelp.xml                                      |    2 
 res/ElvaChatServiceSDK.bundle/sv-SE.lproj/Localizable.strings             |   24 
 res/ElvaChatServiceSDK.bundle/it-IT.lproj/Localizable.strings             |   32 +
 res/ElvaChatServiceSDK.bundle/fa.lproj/Localizable.strings                |   32 +
 res/ElvaChatServiceSDK.bundle/pl-PL.lproj/Localizable.strings             |   32 +
 res/ElvaChatServiceSDK.bundle/ko.lproj/Localizable.strings                |   37 
 frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeRequirements-1 |    0 
 res/ElvaChatServiceSDK.bundle/ar.lproj/Localizable.strings                |   39 
 res/ElvaChatServiceSDK.bundle/ab_reward.png                               |    0 
 res/ElvaChatServiceSDK.bundle/checkbox_unchecked.png                      |    0 
 frameworks/ElvaChatServiceSDK.framework/Info.plist                        |    0 
 res/ElvaChatServiceSDK.bundle/de.lproj/Localizable.strings                |   24 
 res/ElvaChatServiceSDK.bundle/fr-FR.lproj/Localizable.strings             |   24 
 res/ElvaChatServiceSDK.bundle/ja.lproj/Localizable.strings                |   37 
 frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeSignature      |    0 
 frameworks/WAAIhelpImpl.framework/WAAIhelpImpl                            |    0 
 frameworks/ElvaChatServiceSDK.framework/Headers/UnityRendering.h          |  293 ++++++++++
 frameworks/ElvaChatServiceSDK.framework/Headers/UnityForwardDecls.h       |  191 +++++++
 res/ElvaChatServiceSDK.bundle/checkbox_checked.png                        |    0 
 /dev/null                                                                 |   25 
 res/ElvaChatServiceSDK.bundle/zh-Hant.lproj/Localizable.strings           |   40 
 res/ElvaChatServiceSDK.bundle/zh-Hans.lproj/Localizable.strings           |   37 
 res/ElvaChatServiceSDK.bundle/pt-PT.lproj/Localizable.strings             |   24 
 res/ElvaChatServiceSDK.bundle/el-GR.lproj/Localizable.strings             |   32 +
 frameworks/WAAIhelpImpl.framework/Info.plist                              |    0 
 frameworks/WAAIhelpImpl.framework/Headers/WAAIhelpImpl.h                  |    2 
 frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeResources      |   53 +
 res/ElvaChatServiceSDK.bundle/th.lproj/Localizable.strings                |   37 
 frameworks/ElvaChatServiceSDK.framework/Headers/ECServiceSdk.h            |    6 
 res/ElvaChatServiceSDK.bundle/id-ID.lproj/Localizable.strings             |   18 
 frameworks/ElvaChatServiceSDK.framework/Headers/UnityInterface.h          |  371 +++++++++++++
 frameworks/ElvaChatServiceSDK.framework/ElvaChatServiceSDK                |    0 
 frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeDirectory      |    0 
 WAAiHelpImpl.podspec                                                      |    6 
 39 files changed, 1,342 insertions(+), 250 deletions(-)

diff --git a/WAAiHelpImpl.podspec b/WAAiHelpImpl.podspec
index 07c3f8e..fa7dae0 100644
--- a/WAAiHelpImpl.podspec
+++ b/WAAiHelpImpl.podspec
@@ -9,7 +9,7 @@
 Pod::Spec.new do |s|
 
 s.name = 'WAAiHelpImpl'
-s.version = '3.7.0'
+s.version = '3.8.0'
 s.summary = 'WAAfImpl framework in testing environment.'
 s.license = 'MIT'
 s.author = { "Hank" => "hank.zhang@gamehollywood.com" }
@@ -22,6 +22,6 @@
 s.libraries = 'sqlite3'
 s.resources = ['config/*.xml','res/ElvaChatServiceSDK.bundle','res/ElvaChatServiceSDK.bundle','res/*.xib','res/Localization/*/*.strings']
 s.requires_arc = true
-s.dependency 'WASdkIntf', '~> 3.7.0'   #此处添加私有库依赖
-s.dependency 'WASdkImpl', '~> 3.7.0'
+s.dependency 'WASdkIntf', '~> 3.8.0'   #此处添加私有库依赖
+s.dependency 'WASdkImpl', '~> 3.8.0'
 end
diff --git a/config/wa_sdk_impl_config_aihelp.xml b/config/wa_sdk_impl_config_aihelp.xml
index dd14251..cc09658 100644
--- a/config/wa_sdk_impl_config_aihelp.xml
+++ b/config/wa_sdk_impl_config_aihelp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <config>
-	<version val="AIHELP3.7.0"/>
+	<version val="AIHELP3.8.0"/>
     <comps>
         <!-- 公共模块 -->
         <comp module="CORE" plaf="AIHELP" mandatory="YES" value="WAAIhelpCore" desc="公共模块"/>
diff --git a/frameworks/ElvaChatServiceSDK.framework/ElvaChatServiceSDK b/frameworks/ElvaChatServiceSDK.framework/ElvaChatServiceSDK
index 569c855..acbb33e 100755
--- a/frameworks/ElvaChatServiceSDK.framework/ElvaChatServiceSDK
+++ b/frameworks/ElvaChatServiceSDK.framework/ElvaChatServiceSDK
Binary files differ
diff --git a/frameworks/ElvaChatServiceSDK.framework/Headers/ECServiceSdk.h b/frameworks/ElvaChatServiceSDK.framework/Headers/ECServiceSdk.h
index 2bdd527..2cdd57e 100755
--- a/frameworks/ElvaChatServiceSDK.framework/Headers/ECServiceSdk.h
+++ b/frameworks/ElvaChatServiceSDK.framework/Headers/ECServiceSdk.h
@@ -6,7 +6,8 @@
 #import <Foundation/Foundation.h>
 @interface ECServiceSdk:NSObject
 
-
++ (void) registerUnityOnInitializedCallback:(NSString *) gameObject;
++ (void) registerUnityOnMessageArrivedCallback:(NSString *) gameObject;
 + (void) init:(NSString*) appSecret Domain:(NSString*) domain AppId:(NSString*) appId;
 + (void) showElva:(NSString*) playerName PlayerUid:(NSString*) playerUid ServerId:(NSString*) serverId PlayerParseId:(NSString*) playerParseId PlayershowConversationFlag:(NSString*) playershowConversationFlag;
 + (void) showElva:(NSString*) playerName PlayerUid:(NSString*) playerUid ServerId:(NSString*) serverId PlayerParseId:(NSString*) playerParseId PlayershowConversationFlag:(NSString*) playershowConversationFlag Config:(NSMutableDictionary*) config;
@@ -30,6 +31,7 @@
 + (void) setNoMenu;
 + (void) setSendCloseNotification:(BOOL) isSend;
 + (void) setAccelerateDomain:(NSString *)domain;
++ (void) setOpenLog:(BOOL)isOpen;
 
 + (void) showVIPChat:(NSString*) appidWeb VIPTags:(NSString *) vipTags;
 
@@ -44,5 +46,7 @@
 + (void) handlePushNotification:(NSDictionary *) table DataFromInApp:(BOOL) dataFromInApp;
 
 + (int) getNotificationMessageCount;
++ (void) showURL:(NSString *) url;
++ (void) setUnreadMessageFetchUid:(NSString*) playerUid;
 
 @end
diff --git a/frameworks/ElvaChatServiceSDK.framework/Headers/UnityForwardDecls.h b/frameworks/ElvaChatServiceSDK.framework/Headers/UnityForwardDecls.h
new file mode 100755
index 0000000..ab50faa
--- /dev/null
+++ b/frameworks/ElvaChatServiceSDK.framework/Headers/UnityForwardDecls.h
@@ -0,0 +1,191 @@
+#pragma once
+
+#include <stdint.h>
+
+#ifdef __OBJC__
+@class UIScreen;
+@class UIWindow;
+@class UIView;
+@class UIViewController;
+@class UIEvent;
+@class UILocalNotification;
+@class NSString;
+@class NSDictionary;
+@class NSSet;
+@class NSData;
+@class NSError;
+@class NSBundle;
+
+@class UnityViewControllerBase;
+#else
+typedef struct objc_object UIScreen;
+typedef struct objc_object UIWindow;
+typedef struct objc_object UIView;
+typedef struct objc_object UIViewController;
+typedef struct objc_object UIEvent;
+typedef struct objc_object UILocalNotification;
+typedef struct objc_object NSString;
+typedef struct objc_object NSDictionary;
+typedef struct objc_object NSSet;
+typedef struct objc_object NSError;
+typedef struct objc_object NSData;
+typedef struct objc_object NSBundle;
+
+typedef struct objc_object UnityViewControllerBase;
+#endif
+
+// unity internal audio effect definition struct
+struct UnityAudioEffectDefinition;
+
+// new unity rendering api
+struct IUnityInterfaces;
+
+// be aware that this struct is shared with unity implementation so you should absolutely not change it
+struct UnityFrameStats
+{
+    uint64_t    fixedBehaviourManagerDt;
+    uint64_t    fixedPhysicsManagerDt;
+    uint64_t    dynamicBehaviourManagerDt;
+    uint64_t    coroutineDt;
+    uint64_t    skinMeshUpdateDt;
+    uint64_t    animationUpdateDt;
+    uint64_t    renderDt;
+    uint64_t    cullingDt;
+    uint64_t    clearDt;
+    int         fixedUpdateCount;
+
+    int         batchCount;
+    uint64_t    drawCallTime;
+    int         drawCallCount;
+    int         triCount;
+    int         vertCount;
+
+    uint64_t    dynamicBatchDt;
+    int         dynamicBatchCount;
+    int         dynamicBatchedDrawCallCount;
+    int         dynamicBatchedTris;
+    int         dynamicBatchedVerts;
+
+    int         staticBatchCount;
+    int         staticBatchedDrawCallCount;
+    int         staticBatchedTris;
+    int         staticBatchedVerts;
+};
+
+
+// be aware that this enum is shared with unity implementation so you should absolutely not change it
+typedef enum
+    LogType
+{
+    logError        = 0,
+    logAssert       = 1,
+    logWarning      = 2,
+    logLog          = 3,
+    logException    = 4,
+    logDebug        = 5,
+}
+LogType;
+
+
+// be aware that this enum is shared with unity implementation so you should absolutely not change it
+typedef enum
+    DeviceGeneration
+{
+    deviceUnknown       = 0,
+    deviceiPhone3GS     = 3,
+    deviceiPhone4       = 8,
+    deviceiPodTouch4Gen = 9,
+    deviceiPad2Gen      = 10,
+    deviceiPhone4S      = 11,
+    deviceiPad3Gen      = 12,
+    deviceiPhone5       = 13,
+    deviceiPodTouch5Gen = 14,
+    deviceiPadMini1Gen  = 15,
+    deviceiPad4Gen      = 16,
+    deviceiPhone5C      = 17,
+    deviceiPhone5S      = 18,
+    deviceiPadAir1      = 19,
+    deviceiPadMini2Gen  = 20,
+    deviceiPhone6       = 21,
+    deviceiPhone6Plus   = 22,
+    deviceiPadMini3Gen  = 23,
+    deviceiPadAir2      = 24,
+    deviceiPhone6S      = 25,
+    deviceiPhone6SPlus  = 26,
+    deviceiPadPro1Gen   = 27,
+    deviceiPadMini4Gen  = 28,
+    deviceiPhoneSE1Gen  = 29,
+    deviceiPadPro10Inch1Gen = 30,
+    deviceiPhone7       = 31,
+    deviceiPhone7Plus   = 32,
+    deviceiPodTouch6Gen = 33,
+    deviceiPad5Gen = 34,
+    deviceiPadPro2Gen = 35,
+    deviceiPadPro10Inch2Gen = 36,
+
+    deviceiPhoneUnknown     = 10001,
+    deviceiPadUnknown       = 10002,
+    deviceiPodTouchUnknown  = 10003,
+}
+DeviceGeneration;
+
+
+// be aware that this enum is shared with unity implementation so you should absolutely not change it
+typedef enum
+    ScreenOrientation
+{
+    orientationUnknown,
+    portrait,
+    portraitUpsideDown,
+    landscapeLeft,
+    landscapeRight,
+
+    orientationCount,
+}
+ScreenOrientation;
+
+
+// be aware that this enum is shared with unity implementation so you should absolutely not change it
+typedef enum
+    AppInBackgroundBehavior
+{
+    appbgCustom     = -1,
+    appbgSuspend    = 0,
+    appbgExit       = 1,
+}
+AppInBackgroundBehavior;
+
+
+// this dictates touches processing on os level: should we transform touches to unity view coords or not.
+// N.B. touch.position will always be adjusted to current resolution
+//      i.e. if you touch right border of view, touch.position.x will be Screen.width, not view.width
+//      to get coords in view space (os-coords), use touch.rawPosition
+typedef enum
+    ViewTouchProcessing
+{
+    // the touches originated from view will be ignored by unity
+    touchesIgnored = 0,
+
+    // touches would be processed as if they were originated in unity view:
+    // coords will be transformed from view coords to unity view coords
+    touchesTransformedToUnityViewCoords = 1,
+
+    // touches coords will be kept intact (in originated view coords)
+    // it is default value
+    touchesKeptInOriginalViewCoords = 2,
+}
+ViewTouchProcessing;
+
+#ifdef __cplusplus
+extern bool _ios42orNewer;
+extern bool _ios43orNewer;
+extern bool _ios50orNewer;
+extern bool _ios60orNewer;
+extern bool _ios70orNewer;
+extern bool _ios80orNewer;
+extern bool _ios81orNewer;
+extern bool _ios82orNewer;
+extern bool _ios90orNewer;
+extern bool _ios91orNewer;
+extern bool _ios100orNewer;
+#endif
diff --git a/frameworks/ElvaChatServiceSDK.framework/Headers/UnityInterface.h b/frameworks/ElvaChatServiceSDK.framework/Headers/UnityInterface.h
new file mode 100755
index 0000000..1b3e2a7
--- /dev/null
+++ b/frameworks/ElvaChatServiceSDK.framework/Headers/UnityInterface.h
@@ -0,0 +1,371 @@
+#pragma once
+
+#include <stdint.h>
+#include <stdarg.h>
+
+#include "UnityForwardDecls.h"
+#include "UnityRendering.h"
+
+// unity plugin functions
+
+// audio plugin api
+typedef int     (*UnityPluginGetAudioEffectDefinitionsFunc)(struct UnityAudioEffectDefinition*** descptr);
+
+// OLD rendering plugin api (will become obsolete soon)
+typedef void    (*UnityPluginSetGraphicsDeviceFunc)(void* device, int deviceType, int eventType);
+typedef void    (*UnityPluginRenderMarkerFunc)(int marker);
+
+// new rendering plugin api
+typedef void    (*UnityPluginLoadFunc)(struct IUnityInterfaces* unityInterfaces);
+typedef void    (*UnityPluginUnloadFunc)();
+
+
+// log handler function
+#ifdef __cplusplus
+typedef bool (*LogEntryHandler)(LogType logType, const char* log, va_list list);
+#endif
+
+//
+// these are functions referenced in trampoline and implemented in unity player lib
+//
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// life cycle management
+
+void    UnityInitStartupTime();
+void    UnityInitRuntime(int argc, char* argv[]);
+void    UnityInitApplicationNoGraphics(const char* appPathName);
+void    UnityInitApplicationGraphics(int forceDirectRendering);
+void    UnityCleanup();
+void    UnityLoadApplication();
+void    UnityPlayerLoop();                  // normal player loop
+void    UnityBatchPlayerLoop();             // batch mode like player loop, without rendering (usable for background processing)
+void    UnitySetPlayerFocus(int focused);   // send OnApplicationFocus() message to scripts
+void    UnityLowMemory();
+void    UnityPause(int pause);
+int     UnityIsPaused();                    // 0 if player is running, 1 if paused
+void    UnityWillPause();                   // send the message that app will pause
+void    UnityWillResume();                  // send the message that app will resume
+void    UnityInputProcess();
+void    UnityDeliverUIEvents();             // unity processing impacting UI will be called in there
+
+
+// rendering
+
+int     UnityGetRenderingAPIs(int capacity, int* outAPIs);
+void    UnityFinishRendering();
+
+// OpenGL ES.
+
+int     UnityHasRenderingAPIExtension(const char* extension);
+void    UnityOnSetCurrentGLContext(EAGLContext* context);
+
+// This must match the one in ApiEnumsGLES.h
+typedef enum UnityFramebufferTarget
+{
+    kDrawFramebuffer = 0,
+    kReadFramebuffer,
+    kFramebufferTargetCount
+} UnityFramebufferTarget;
+void    UnityBindFramebuffer(UnityFramebufferTarget target, int fbo);
+void    UnityRegisterFBO(UnityRenderBufferHandle color, UnityRenderBufferHandle depth, unsigned fbo);
+
+// controling player internals
+
+// TODO: needs some cleanup
+void    UnitySetAudioSessionActive(int active);
+void    UnityGLInvalidateState();
+void    UnityReloadResources();
+int     UnityIsCaptureScreenshotRequested();
+void    UnityCaptureScreenshot();
+void    UnitySendMessage(const char* obj, const char* method, const char* msg);
+
+EAGLContext*        UnityGetDataContextGLES();
+
+#ifdef __cplusplus
+void    UnitySetLogEntryHandler(LogEntryHandler newHandler);
+#endif
+
+
+// plugins support
+
+// WARNING: old UnityRegisterRenderingPlugin will become obsolete soon
+void    UnityRegisterRenderingPlugin(UnityPluginSetGraphicsDeviceFunc setDevice, UnityPluginRenderMarkerFunc renderMarker);
+
+void    UnityRegisterRenderingPluginV5(UnityPluginLoadFunc loadPlugin, UnityPluginUnloadFunc unloadPlugin);
+void    UnityRegisterAudioPlugin(UnityPluginGetAudioEffectDefinitionsFunc getAudioEffectDefinitions);
+
+
+// resolution/orientation handling
+
+void    UnityGetRenderingResolution(unsigned* w, unsigned* h);
+void    UnityGetSystemResolution(unsigned* w, unsigned* h);
+
+void    UnityRequestRenderingResolution(unsigned w, unsigned h);
+
+int     UnityIsOrientationEnabled(unsigned /*ScreenOrientation*/ orientation);
+
+int     UnityHasOrientationRequest();
+int     UnityShouldAutorotate();
+int     UnityRequestedScreenOrientation(); // returns ScreenOrientation
+void    UnityOrientationRequestWasCommitted();
+
+int     UnityReportResizeView(unsigned w, unsigned h, unsigned /*ScreenOrientation*/ contentOrientation);   // returns ScreenOrientation
+void    UnityReportBackbufferChange(UnityRenderBufferHandle colorBB, UnityRenderBufferHandle depthBB);
+
+
+// player settings
+
+int     UnityDisableDepthAndStencilBuffers();
+int     UnityUseAnimatedAutorotation();
+int     UnityGetDesiredMSAASampleCount(int defaultSampleCount);
+int     UnityGetSRGBRequested();
+int     UnityGetShowActivityIndicatorOnLoading();
+int     UnityGetAccelerometerFrequency();
+int     UnityGetTargetFPS();
+int     UnityGetAppBackgroundBehavior();
+
+
+// push notifications
+#if !UNITY_TVOS
+void    UnitySendLocalNotification(UILocalNotification* notification);
+#endif
+void    UnitySendRemoteNotification(NSDictionary* notification);
+void    UnitySendDeviceToken(NSData* deviceToken);
+void    UnitySendRemoteNotificationError(NSError* error);
+
+// native events
+
+void    UnityInvalidateDisplayDataCache(void* screen);
+void    UnityUpdateDisplayList(void** screens, int screenCount);
+
+
+// profiler
+
+void*   UnityCreateProfilerCounter(const char*);
+void    UnityDestroyProfilerCounter(void*);
+void    UnityStartProfilerCounter(void*);
+void    UnityEndProfilerCounter(void*);
+
+
+// sensors
+
+void    UnitySensorsSetGyroRotationRate(int idx, float x, float y, float z);
+void    UnitySensorsSetGyroRotationRateUnbiased(int idx, float x, float y, float z);
+void    UnitySensorsSetGravity(int idx, float x, float y, float z);
+void    UnitySensorsSetUserAcceleration(int idx, float x, float y, float z);
+void    UnitySensorsSetAttitude(int idx, float x, float y, float z, float w);
+void    UnityDidAccelerate(float x, float y, float z, double timestamp);
+void    UnitySetJoystickPosition(int joyNum, int axis, float pos);
+int     UnityStringToKey(const char *name);
+void    UnitySetKeyState(int key, int /*bool*/ state);
+
+// WWW connection handling
+
+void    UnityReportWWWStatusError(void* udata, int status, const char* error);
+
+void    UnityReportWWWReceivedResponse(void* udata, int status, unsigned expectedDataLength, const char* respHeader);
+void    UnityReportWWWReceivedData(void* udata, const void* buffer, unsigned totalRead, unsigned expectedTotal);
+void    UnityReportWWWFinishedLoadingData(void* udata);
+void    UnityReportWWWSentData(void* udata, unsigned totalWritten, unsigned expectedTotal);
+
+// AVCapture
+
+void    UnityReportAVCapturePermission();
+void    UnityDidCaptureVideoFrame(intptr_t tex, void* udata);
+
+// logging override
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+
+// touches processing
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void    UnitySetViewTouchProcessing(UIView* view, int /*ViewTouchProcessing*/ processingPolicy);
+void    UnityDropViewTouchProcessing(UIView* view);
+
+void    UnitySendTouchesBegin(NSSet* touches, UIEvent* event);
+void    UnitySendTouchesEnded(NSSet* touches, UIEvent* event);
+void    UnitySendTouchesCancelled(NSSet* touches, UIEvent* event);
+void    UnitySendTouchesMoved(NSSet* touches, UIEvent* event);
+
+void    UnityCancelTouches();
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+
+//
+// these are functions referenced and implemented in trampoline
+//
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// UnityAppController.mm
+UIViewController*       UnityGetGLViewController();
+UIView*                 UnityGetGLView();
+UIWindow*               UnityGetMainWindow();
+enum ScreenOrientation  UnityCurrentOrientation();
+
+// Unity/DisplayManager.mm
+float                   UnityScreenScaleFactor(UIScreen* screen);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+
+//
+// these are functions referenced in unity player lib and implemented in trampoline
+//
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// iPhone_Sensors.mm
+void            UnityInitJoysticks();
+void            UnityCoreMotionStart();
+void            UnityCoreMotionStop();
+int             UnityIsGyroEnabled(int idx);
+int             UnityIsGyroAvailable();
+void            UnityUpdateGyroData();
+void            UnitySetGyroUpdateInterval(int idx, float interval);
+float           UnityGetGyroUpdateInterval(int idx);
+void            UnityUpdateJoystickData();
+int             UnityGetJoystickCount();
+void            UnityGetJoystickName(int idx, char* buffer, int maxLen);
+void            UnityGetJoystickAxisName(int idx, int axis, char* buffer, int maxLen);
+void            UnityGetNiceKeyname(int key, char* buffer, int maxLen);
+
+// UnityAppController+Rendering.mm
+void            UnityInitMainScreenRenderingCallback();
+void            UnityGfxInitedCallback();
+void            UnityPresentContextCallback(struct UnityFrameStats const* frameStats);
+void            UnityFramerateChangeCallback(int targetFPS);
+int             UnitySelectedRenderingAPI();
+
+NSBundle*           UnityGetMetalBundle();
+MTLDeviceRef        UnityGetMetalDevice();
+MTLCommandQueueRef  UnityGetMetalCommandQueue();
+
+EAGLContext*        UnityGetDataContextEAGL();
+
+UnityRenderBufferHandle UnityBackbufferColor();
+UnityRenderBufferHandle UnityBackbufferDepth();
+
+// UI/ActivityIndicator.mm
+void            UnityStartActivityIndicator();
+void            UnityStopActivityIndicator();
+
+// UI/Keyboard.mm
+void            UnityKeyboard_Create(unsigned keyboardType, int autocorrection, int multiline, int secure, int alert, const char* text, const char* placeholder);
+void            UnityKeyboard_Show();
+void            UnityKeyboard_Hide();
+void            UnityKeyboard_GetRect(float* x, float* y, float* w, float* h);
+void            UnityKeyboard_SetText(const char* text);
+NSString*       UnityKeyboard_GetText();
+int             UnityKeyboard_IsActive();
+int             UnityKeyboard_IsDone();
+int             UnityKeyboard_WasCanceled();
+void            UnityKeyboard_SetInputHidden(int hidden);
+int             UnityKeyboard_IsInputHidden();
+
+int             UnityKeyboard_CanGetSelection();
+void            UnityKeyboard_GetSelection(int* location, int* range);
+
+// UI/UnityViewControllerBase.mm
+void            UnityNotifyAutoOrientationChange();
+
+// Unity/AVCapture.mm
+int             UnityGetAVCapturePermission(int captureTypes);
+void            UnityRequestAVCapturePermission(int captureTypes);
+
+// Unity/CameraCapture.mm
+void            UnityEnumVideoCaptureDevices(void* udata, void(*callback)(void* udata, const char* name, int frontFacing));
+void*           UnityInitCameraCapture(int device, int w, int h, int fps, void* udata);
+void            UnityStartCameraCapture(void* capture);
+void            UnityPauseCameraCapture(void* capture);
+void            UnityStopCameraCapture(void* capture);
+void            UnityCameraCaptureExtents(void* capture, int* w, int* h);
+void            UnityCameraCaptureReadToMemory(void* capture, void* dst, int w, int h);
+int             UnityCameraCaptureVideoRotationDeg(void* capture);
+int             UnityCameraCaptureVerticallyMirrored(void* capture);
+
+
+// Unity/DeviceSettings.mm
+const char*     UnityDeviceUniqueIdentifier();
+const char*     UnityVendorIdentifier();
+const char*     UnityAdvertisingIdentifier();
+int             UnityAdvertisingTrackingEnabled();
+const char*     UnityDeviceName();
+const char*     UnitySystemName();
+const char*     UnitySystemVersion();
+const char*     UnityDeviceModel();
+int             UnityDeviceCPUCount();
+int             UnityDeviceGeneration();
+float           UnityDeviceDPI();
+const char*     UnitySystemLanguage();
+
+// Unity/DisplayManager.mm
+EAGLContext*    UnityGetMainScreenContextGLES();
+EAGLContext*    UnityGetContextEAGL();
+void            UnityStartFrameRendering();
+void            UnityDestroyUnityRenderSurfaces();
+
+// Unity/Filesystem.mm
+const char*     UnityApplicationDir();
+const char*     UnityDocumentsDir();
+const char*     UnityLibraryDir();
+const char*     UnityCachesDir();
+int             UnityUpdateNoBackupFlag(const char* path, int setFlag); // Returns 1 if successful, otherwise 0
+
+// Unity/WWWConnection.mm
+void*           UnityStartWWWConnectionGet(void* udata, const void* headerDict, const char* url);
+void*           UnityStartWWWConnectionPost(void* udata, const void* headerDict, const char* url, const void* data, unsigned length);
+void            UnityDestroyWWWConnection(void* connection);
+void            UnityShouldCancelWWW(const void* connection);
+
+//Apple TV Remote
+int         UnityGetAppleTVRemoteAllowExitToMenu();
+void        UnitySetAppleTVRemoteAllowExitToMenu(int val);
+int         UnityGetAppleTVRemoteAllowRotation();
+void        UnitySetAppleTVRemoteAllowRotation(int val);
+int         UnityGetAppleTVRemoteReportAbsoluteDpadValues();
+void        UnitySetAppleTVRemoteReportAbsoluteDpadValues(int val);
+int         UnityGetAppleTVRemoteTouchesEnabled();
+void        UnitySetAppleTVRemoteTouchesEnabled(int val);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+
+#ifdef __OBJC__
+// This is basically a wrapper for [NSString UTF8String] with additional strdup.
+//
+// Apparently multiple calls on UTF8String will leak memory (NSData objects) that are collected
+// only when @autoreleasepool is exited. This function serves as documentation for this and as a
+// handy wrapper.
+inline char* AllocCString(NSString* value)
+{
+    if (value == nil)
+        return 0;
+
+    const char* str = [value UTF8String];
+    return str ? strdup(str) : 0;
+}
+
+#endif
diff --git a/frameworks/ElvaChatServiceSDK.framework/Headers/UnityRendering.h b/frameworks/ElvaChatServiceSDK.framework/Headers/UnityRendering.h
new file mode 100755
index 0000000..8c74ff4
--- /dev/null
+++ b/frameworks/ElvaChatServiceSDK.framework/Headers/UnityRendering.h
@@ -0,0 +1,293 @@
+#pragma once
+
+#ifdef __OBJC__
+@class CAEAGLLayer;
+@class EAGLContext;
+#else
+typedef struct objc_object CAEAGLLayer;
+typedef struct objc_object EAGLContext;
+#endif
+
+#ifdef __OBJC__
+@class CAMetalLayer;
+@protocol CAMetalDrawable;
+@protocol MTLDrawable;
+@protocol MTLDevice;
+@protocol MTLTexture;
+@protocol MTLCommandBuffer;
+@protocol MTLCommandQueue;
+@protocol MTLCommandEncoder;
+
+typedef id<CAMetalDrawable>     CAMetalDrawableRef;
+typedef id<MTLDevice>           MTLDeviceRef;
+typedef id<MTLTexture>          MTLTextureRef;
+typedef id<MTLCommandBuffer>    MTLCommandBufferRef;
+typedef id<MTLCommandQueue>     MTLCommandQueueRef;
+typedef id<MTLCommandEncoder>   MTLCommandEncoderRef;
+#else
+typedef struct objc_object      CAMetalLayer;
+typedef struct objc_object*     CAMetalDrawableRef;
+typedef struct objc_object*     MTLDeviceRef;
+typedef struct objc_object*     MTLTextureRef;
+typedef struct objc_object*     MTLCommandBufferRef;
+typedef struct objc_object*     MTLCommandQueueRef;
+typedef struct objc_object*     MTLCommandEncoderRef;
+#endif
+
+// unity internal native render buffer struct (the one you acquire in C# with RenderBuffer.GetNativeRenderBufferPtr())
+struct RenderSurfaceBase;
+typedef struct RenderSurfaceBase* UnityRenderBufferHandle;
+
+// be aware that this struct is shared with unity implementation so you should absolutely not change it
+typedef struct
+    UnityRenderBufferDesc
+{
+    unsigned    width, height, depth;
+    unsigned    samples;
+
+    int         backbuffer;
+}
+UnityRenderBufferDesc;
+
+// trick to make structure inheritance work transparently between c/cpp
+// for c we use "anonymous struct"
+#ifdef __cplusplus
+    #define START_STRUCT(T, Base)   struct T : Base {
+    #define END_STRUCT(T)           };
+#else
+    #define START_STRUCT(T, Base)   typedef struct T { struct Base;
+    #define END_STRUCT(T)           } T;
+#endif
+
+// we will keep objc objects in struct, so we need to explicitely mark references as strong to not confuse ARC
+// please note that actual object lifetime is managed in objc++ code, so __unsafe_unretained is good enough for objc code
+// DO NOT assign objects to UnityDisplaySurface* members in objc code.
+// DO NOT store objects from UnityDisplaySurface* members in objc code, as this wont be caught by ARC
+#ifdef __OBJC__
+    #ifdef __cplusplus
+        #define OBJC_OBJECT_PTR __strong
+    #else
+        #define OBJC_OBJECT_PTR __unsafe_unretained
+    #endif
+#else
+    #define OBJC_OBJECT_PTR
+#endif
+
+// unity common rendering (display) surface
+typedef struct
+    UnityDisplaySurfaceBase
+{
+    UnityRenderBufferHandle unityColorBuffer;
+    UnityRenderBufferHandle unityDepthBuffer;
+
+    UnityRenderBufferHandle systemColorBuffer;
+    UnityRenderBufferHandle systemDepthBuffer;
+
+    void*               cvTextureCache;         // CVOpenGLESTextureCacheRef
+    void*               cvTextureCacheTexture;  // CVOpenGLESTextureRef
+    void*               cvPixelBuffer;          // CVPixelBufferRef
+
+    unsigned            targetW, targetH;
+    unsigned            systemW, systemH;
+
+    int                 msaaSamples;
+    int                 useCVTextureCache;      // [bool]
+    int                 srgb;                   // [bool]
+    int                 disableDepthAndStencil; // [bool]
+    int                 allowScreenshot;        // [bool] currently we allow screenshots (from script) only on main display
+
+    int                 api;                    // [UnityRenderingAPI]
+}
+UnityDisplaySurfaceBase;
+
+
+// START_STRUCT confuse clang c compiler (though it is idiomatic c code that works)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wmissing-declarations"
+
+// GLES display surface
+START_STRUCT(UnityDisplaySurfaceGLES, UnityDisplaySurfaceBase)
+OBJC_OBJECT_PTR CAEAGLLayer *    layer;
+OBJC_OBJECT_PTR EAGLContext*    context;
+
+// system FB
+unsigned    systemFB;
+unsigned    systemColorRB;
+
+// target resolution FB/target RT to blit from
+unsigned    targetFB;
+unsigned    targetColorRT;
+
+// MSAA FB
+unsigned    msaaFB;
+unsigned    msaaColorRB;
+
+// when we enable AA for non-native resolution we need interim RT to resolve AA to (and then we will blit it to screen)
+UnityRenderBufferHandle resolvedColorBuffer;
+
+// will be "shared", only one depth buffer is needed
+unsigned    depthRB;
+
+// render surface gl setup: formats and AA
+unsigned    colorFormat;
+unsigned    depthFormat;
+END_STRUCT(UnityDisplaySurfaceGLES)
+
+// Metal display surface
+START_STRUCT(UnityDisplaySurfaceMTL, UnityDisplaySurfaceBase)
+OBJC_OBJECT_PTR CAMetalLayer *       layer;
+OBJC_OBJECT_PTR MTLDeviceRef        device;
+
+OBJC_OBJECT_PTR MTLCommandQueueRef  commandQueue;
+OBJC_OBJECT_PTR CAMetalDrawableRef  drawable;
+
+OBJC_OBJECT_PTR MTLTextureRef       systemColorRB;
+OBJC_OBJECT_PTR MTLTextureRef       targetColorRT;
+OBJC_OBJECT_PTR MTLTextureRef       targetAAColorRT;
+
+OBJC_OBJECT_PTR MTLTextureRef       depthRB;
+OBJC_OBJECT_PTR MTLTextureRef       stencilRB;
+
+unsigned                            colorFormat;        // [MTLPixelFormat]
+unsigned                            depthFormat;        // [MTLPixelFormat]
+END_STRUCT(UnityDisplaySurfaceMTL)
+
+// START_STRUCT confuse clang c compiler (though it is idiomatic c code that works)
+#pragma clang diagnostic pop
+
+// be aware that this enum is shared with unity implementation so you should absolutely not change it
+typedef enum
+    UnityRenderingAPI
+{
+    apiOpenGLES2    = 2,
+    apiOpenGLES3    = 3,
+    apiMetal        = 4,
+}
+UnityRenderingAPI;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+int UnitySelectedRenderingAPI();
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+// gles
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void InitRenderingGLES();
+
+void CreateSystemRenderingSurfaceGLES(UnityDisplaySurfaceGLES* surface);
+void DestroySystemRenderingSurfaceGLES(UnityDisplaySurfaceGLES* surface);
+void CreateRenderingSurfaceGLES(UnityDisplaySurfaceGLES* surface);
+void DestroyRenderingSurfaceGLES(UnityDisplaySurfaceGLES* surface);
+void CreateSharedDepthbufferGLES(UnityDisplaySurfaceGLES* surface);
+void DestroySharedDepthbufferGLES(UnityDisplaySurfaceGLES* surface);
+void CreateUnityRenderBuffersGLES(UnityDisplaySurfaceGLES* surface);
+void DestroyUnityRenderBuffersGLES(UnityDisplaySurfaceGLES* surface);
+void StartFrameRenderingGLES(UnityDisplaySurfaceGLES* surface);
+void EndFrameRenderingGLES(UnityDisplaySurfaceGLES* surface);
+void PreparePresentGLES(UnityDisplaySurfaceGLES* surface);
+void PresentGLES(UnityDisplaySurfaceGLES* surface);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+// metal
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void InitRenderingMTL();
+
+void CreateSystemRenderingSurfaceMTL(UnityDisplaySurfaceMTL* surface);
+void DestroySystemRenderingSurfaceMTL(UnityDisplaySurfaceMTL* surface);
+void CreateRenderingSurfaceMTL(UnityDisplaySurfaceMTL* surface);
+void DestroyRenderingSurfaceMTL(UnityDisplaySurfaceMTL* surface);
+void CreateSharedDepthbufferMTL(UnityDisplaySurfaceMTL* surface);
+void DestroySharedDepthbufferMTL(UnityDisplaySurfaceMTL* surface);
+void CreateUnityRenderBuffersMTL(UnityDisplaySurfaceMTL* surface);
+void DestroyUnityRenderBuffersMTL(UnityDisplaySurfaceMTL* surface);
+void StartFrameRenderingMTL(UnityDisplaySurfaceMTL* surface);
+void EndFrameRenderingMTL(UnityDisplaySurfaceMTL* surface);
+void PreparePresentMTL(UnityDisplaySurfaceMTL* surface);
+void PresentMTL(UnityDisplaySurfaceMTL* surface);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// for Create* functions if surf is null we will actuially create new one, otherwise we update the one provided
+// gles: one and only one of texid/rbid should be non-zero
+// metal: resolveTex should be non-nil only if tex have AA
+UnityRenderBufferHandle UnityCreateExternalSurfaceGLES(UnityRenderBufferHandle surf, int isColor, unsigned texid, unsigned rbid, unsigned glesFormat, const UnityRenderBufferDesc* desc);
+UnityRenderBufferHandle UnityCreateExternalSurfaceMTL(UnityRenderBufferHandle surf, int isColor, MTLTextureRef tex, const UnityRenderBufferDesc* desc);
+UnityRenderBufferHandle UnityCreateExternalColorSurfaceMTL(UnityRenderBufferHandle surf, MTLTextureRef tex, MTLTextureRef resolveTex, const UnityRenderBufferDesc* desc);
+UnityRenderBufferHandle UnityCreateExternalDepthSurfaceMTL(UnityRenderBufferHandle surf, MTLTextureRef tex, MTLTextureRef stencilTex, const UnityRenderBufferDesc* desc);
+// creates "dummy" surface - will indicate "missing" buffer (e.g. depth-only RT will have color as dummy)
+UnityRenderBufferHandle UnityCreateDummySurface(UnityRenderBufferHandle surf, int isColor, const UnityRenderBufferDesc* desc);
+
+// disable rendering to render buffers (all Cameras that were rendering to one of buffers would be reset to use backbuffer)
+void    UnityDisableRenderBuffers(UnityRenderBufferHandle color, UnityRenderBufferHandle depth);
+// destroys render buffer
+void    UnityDestroyExternalSurface(UnityRenderBufferHandle surf);
+// sets current render target
+void    UnitySetRenderTarget(UnityRenderBufferHandle color, UnityRenderBufferHandle depth);
+// final blit to backbuffer
+void    UnityBlitToBackbuffer(UnityRenderBufferHandle srcColor, UnityRenderBufferHandle dstColor, UnityRenderBufferHandle dstDepth);
+// get native renderbuffer from handle
+UnityRenderBufferHandle UnityNativeRenderBufferFromHandle(void *rb);
+
+MTLCommandBufferRef UnityCurrentMTLCommandBuffer();
+
+// sets vSync on OSX 10.13 and up
+#if PLATFORM_OSX
+void MetalUpdateDisplaySync();
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+// metal/gles unification
+
+#define GLES_METAL_COMMON_IMPL_SURF(f)                                              \
+inline void f(UnityDisplaySurfaceBase* surface)                                     \
+{                                                                                   \
+    if(surface->api == apiMetal)    f ## MTL((UnityDisplaySurfaceMTL*)surface); \
+    else                            f ## GLES((UnityDisplaySurfaceGLES*)surface);\
+}                                                                                   \
+
+#define GLES_METAL_COMMON_IMPL(f)                               \
+inline void f()                                                 \
+{                                                               \
+    if(UnitySelectedRenderingAPI() == apiMetal) f ## MTL();     \
+    else                                        f ## GLES();\
+}                                                               \
+
+
+GLES_METAL_COMMON_IMPL(InitRendering);
+
+GLES_METAL_COMMON_IMPL_SURF(CreateSystemRenderingSurface);
+GLES_METAL_COMMON_IMPL_SURF(DestroySystemRenderingSurface);
+GLES_METAL_COMMON_IMPL_SURF(CreateRenderingSurface);
+GLES_METAL_COMMON_IMPL_SURF(DestroyRenderingSurface);
+GLES_METAL_COMMON_IMPL_SURF(CreateSharedDepthbuffer);
+GLES_METAL_COMMON_IMPL_SURF(DestroySharedDepthbuffer);
+GLES_METAL_COMMON_IMPL_SURF(CreateUnityRenderBuffers);
+GLES_METAL_COMMON_IMPL_SURF(DestroyUnityRenderBuffers);
+GLES_METAL_COMMON_IMPL_SURF(StartFrameRendering);
+GLES_METAL_COMMON_IMPL_SURF(EndFrameRendering);
+GLES_METAL_COMMON_IMPL_SURF(PreparePresent);
+GLES_METAL_COMMON_IMPL_SURF(Present);
+
+#undef GLES_METAL_COMMON_IMPL_SURF
+#undef GLES_METAL_COMMON_IMPL
diff --git a/frameworks/ElvaChatServiceSDK.framework/Info.plist b/frameworks/ElvaChatServiceSDK.framework/Info.plist
index 30532cc..57382d6 100755
--- a/frameworks/ElvaChatServiceSDK.framework/Info.plist
+++ b/frameworks/ElvaChatServiceSDK.framework/Info.plist
Binary files differ
diff --git a/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeDirectory b/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeDirectory
index ee76d40..7ed9090 100755
--- a/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeDirectory
+++ b/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeDirectory
Binary files differ
diff --git a/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeRequirements-1 b/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeRequirements-1
index bbb61a8..ef63297 100755
--- a/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeRequirements-1
+++ b/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeRequirements-1
Binary files differ
diff --git a/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeResources b/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeResources
index 3a133b6..0b764ff 100755
--- a/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeResources
+++ b/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeResources
@@ -6,15 +6,27 @@
 	<dict>
 		<key>Headers/ECServiceSdk.h</key>
 		<data>
-		+czpHCKr0RyN3ZZ46mtvHeSIOD4=
+		R7uVHQdO3BB2h54BiyZU7f45TXE=
 		</data>
 		<key>Headers/ElvaChatServiceSDK.h</key>
 		<data>
 		zvjJNXUq1tMPygHWKxbHcw+t/to=
 		</data>
+		<key>Headers/UnityForwardDecls.h</key>
+		<data>
+		EoGij/5BmK7cWWbj+ECBEyHcipw=
+		</data>
+		<key>Headers/UnityInterface.h</key>
+		<data>
+		P/sjx4YTcqreb+VGlwJdSXt3mew=
+		</data>
+		<key>Headers/UnityRendering.h</key>
+		<data>
+		tpS6Ojd+1vYtSX3a9iHqKBisk70=
+		</data>
 		<key>Info.plist</key>
 		<data>
-		3mH5tyPn2toa9mnARefTzdvyHQY=
+		aPsZodAxj3+lEfZDw7gcQlZ9RzY=
 		</data>
 		<key>Modules/module.modulemap</key>
 		<data>
@@ -27,11 +39,11 @@
 		<dict>
 			<key>hash</key>
 			<data>
-			+czpHCKr0RyN3ZZ46mtvHeSIOD4=
+			R7uVHQdO3BB2h54BiyZU7f45TXE=
 			</data>
 			<key>hash2</key>
 			<data>
-			saI0SnEo/pnmeOVrQSZun3u7n87KjNwuJ/CPvUX4t6g=
+			0KWDBFl6RcB7XrS9PcZavOPm8G/WIh71auQmj5qgQQg=
 			</data>
 		</dict>
 		<key>Headers/ElvaChatServiceSDK.h</key>
@@ -45,6 +57,39 @@
 			E5u6tslHRsk1y/hRCzNYA+Y7hUk9TOeyzXU8+CH94kM=
 			</data>
 		</dict>
+		<key>Headers/UnityForwardDecls.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			EoGij/5BmK7cWWbj+ECBEyHcipw=
+			</data>
+			<key>hash2</key>
+			<data>
+			qGe/u1NQdJ0ozw4DJssg4Hf7XQAr3Nhq38AtL5lBFCc=
+			</data>
+		</dict>
+		<key>Headers/UnityInterface.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			P/sjx4YTcqreb+VGlwJdSXt3mew=
+			</data>
+			<key>hash2</key>
+			<data>
+			1YyuYhkj1P+cTNpiFzPHUDv5xbwuaaoRor5YNa5ch4w=
+			</data>
+		</dict>
+		<key>Headers/UnityRendering.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			tpS6Ojd+1vYtSX3a9iHqKBisk70=
+			</data>
+			<key>hash2</key>
+			<data>
+			2za8ddck31K1kpTAgJkI63QlousiGlaiXPRV/mtdEYw=
+			</data>
+		</dict>
 		<key>Modules/module.modulemap</key>
 		<dict>
 			<key>hash</key>
diff --git a/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeSignature b/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeSignature
index 0255f48..78cb55b 100755
--- a/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeSignature
+++ b/frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeSignature
Binary files differ
diff --git a/frameworks/WAAIhelpImpl.framework/Headers/WAAIhelpImpl.h b/frameworks/WAAIhelpImpl.framework/Headers/WAAIhelpImpl.h
index dceae9a..a79733d 100644
--- a/frameworks/WAAIhelpImpl.framework/Headers/WAAIhelpImpl.h
+++ b/frameworks/WAAIhelpImpl.framework/Headers/WAAIhelpImpl.h
@@ -16,4 +16,4 @@
 
 // In this header, you should import all the public headers of your framework using statements like #import <WAAIhelpImpl/PublicHeader.h>
 
-//time:2018/8/27 14:57 ver:3.7.0
+//time:2019/01/15 12:30 ver:3.8.0
diff --git a/frameworks/WAAIhelpImpl.framework/Info.plist b/frameworks/WAAIhelpImpl.framework/Info.plist
index b9819f2..22676cf 100644
--- a/frameworks/WAAIhelpImpl.framework/Info.plist
+++ b/frameworks/WAAIhelpImpl.framework/Info.plist
Binary files differ
diff --git a/frameworks/WAAIhelpImpl.framework/WAAIhelpImpl b/frameworks/WAAIhelpImpl.framework/WAAIhelpImpl
index a51d08a..e43ab9e 100644
--- a/frameworks/WAAIhelpImpl.framework/WAAIhelpImpl
+++ b/frameworks/WAAIhelpImpl.framework/WAAIhelpImpl
Binary files differ
diff --git a/res/ElvaChatServiceSDK.bundle/ab_reward.png b/res/ElvaChatServiceSDK.bundle/ab_reward.png
new file mode 100755
index 0000000..b0524cc
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/ab_reward.png
Binary files differ
diff --git a/res/ElvaChatServiceSDK.bundle/ar.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/ar.lproj/Localizable.strings
index 3e516cc..a627a51 100755
--- a/res/ElvaChatServiceSDK.bundle/ar.lproj/Localizable.strings
+++ b/res/ElvaChatServiceSDK.bundle/ar.lproj/Localizable.strings
@@ -1,23 +1,18 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
-"ContactCustomerService" = "اتصل بنا";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="هل وجدت هذا مُفيداً.";
-"elva__mark_no"="لا";
-"elva__mark_unhelpful_toast"="أنت لم تجد هذا مُفيداً.";
-"elva__mark_yes"="أجل";
-"elva__mark_yes_no_question"="هل كان هذا مُفيداً؟";
-"content_too_long"="No more than %ld chars!";
+//阿拉伯语ar
+"content_too_long"="لا تستخدم أكثر من %ld رمزا";
+"ContactCustomerService" = "اِتصل بنا";
+"self_service_interface" = "خدمة ذاتية";
+"offLine"= "لقد انفصلت الشبكة. يرجى المحاولة مجددا لاحقا";
 "CustomerService"="HELP";
+"elva__mark_helpful_toast"="تم تأكيد السؤال مُفيدا";
+"elva__mark_unhelpful_toast"="تم تعيين السؤال غير مفيد";
+"elva__mark_yes_no_question"="هل كان هذا مفيدا؟";
+"elva__mark_no"="لا";
+"elva__mark_yes"="نعم";
+"RewardBalance"="رموزك";
+"GoTo" = "اتجه الى";
+"Forum" = "منتدى الأسئلة و الإجابات";
+"RewardSuccess" = "نجاج";
+"RewardFailure" = "فشل";
+"TokenInsufficient" = "الرموز الخاصة بك غير كافية";
+"NeedMoreHelp" = "هل تريد المزيد من المساعدة؟";
diff --git a/res/ElvaChatServiceSDK.bundle/checkbox_checked.png b/res/ElvaChatServiceSDK.bundle/checkbox_checked.png
new file mode 100755
index 0000000..9bbea3d
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/checkbox_checked.png
Binary files differ
diff --git a/res/ElvaChatServiceSDK.bundle/checkbox_unchecked.png b/res/ElvaChatServiceSDK.bundle/checkbox_unchecked.png
new file mode 100755
index 0000000..331c089
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/checkbox_unchecked.png
Binary files differ
diff --git a/res/ElvaChatServiceSDK.bundle/de.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/de.lproj/Localizable.strings
new file mode 100755
index 0000000..cbd1a0b
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/de.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+//德语de,de-AT,de-CH,de-DE,de-LI,de-LU
+"content_too_long"="Nicht mehr al%ld Zeichen!";
+"ContactCustomerService" = "Kontaktieren uns";
+"self_service_interface" = "Selbst-Service";
+"offLine"= "Ihr Netzwerk ist getrennt, bitte versuchen Sie es später noch einmal";
+"CustomerService"="HELP";
+"elva__mark_helpful_toast"="Sie fanden es hilfreich.";
+"elva__mark_unhelpful_toast"="Sie finden es nicht hilfreich.";
+"elva__mark_yes_no_question"="Hilft das?";
+"elva__mark_no"="Nein";
+"elva__mark_yes"="Ja";
+"RewardBalance"="Ihre Tokens:";
+"GoTo" = "Gehen in die";
+"Forum" = "Gemeinschaft der Fragen und Antworten";
+"RewardSuccess" = "Erfolg";
+"RewardFailure" = "Fehlgeschlagen";
+"TokenInsufficient" = "Tokens reichen nicht aus";
+"NeedMoreHelp" = "Benötigen weitere Hilfe?";
+
+
+
+
+
+
diff --git a/res/ElvaChatServiceSDK.bundle/el-GR.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/el-GR.lproj/Localizable.strings
new file mode 100755
index 0000000..72a9d2d
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/el-GR.lproj/Localizable.strings
@@ -0,0 +1,32 @@
+//希腊语el-GR,el-CY
+"content_too_long"="Δεν μπορείτε να ξεπεράσετε τους %ld χαρακτήρες!";
+"ContactCustomerService" = "Επικοινωνήστε μας";
+"self_service_interface" = "Σελφ σέρβις";
+"offLine"= "Το δίκτυό σας αποσυνδέθηκε, παρακαλώ προσπαθήστε αργότερα!";
+"CustomerService"="HELP";
+"elva__mark_helpful_toast"="Σας βοήθησε";
+"elva__mark_unhelpful_toast"="Δεν σας βοήθησε";
+"elva__mark_yes_no_question"="Σας βοήθησε;";
+"elva__mark_no"="Όχι";
+"elva__mark_yes"="Ναι";
+"RewardBalance"="Το υπόλοιπο των πόντων σας:";
+"GoTo" = "Μέχρι";
+"Forum" = "Φόρουμ ερωτήσεων και απαντήσεων";
+"RewardSuccess" = "Επιτυχής ανταμοιβή";
+"RewardFailure" = "Αποτυχής ανταμοιβή";
+"TokenInsufficient" = "Το υπόλοιπό σας δεν επαρκεί";
+"NeedMoreHelp" = "Χρειάζεστε βοήθεια?";
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/ElvaChatServiceSDK.bundle/en.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/en.lproj/Localizable.strings
index 619512d..72509ac 100755
--- a/res/ElvaChatServiceSDK.bundle/en.lproj/Localizable.strings
+++ b/res/ElvaChatServiceSDK.bundle/en.lproj/Localizable.strings
@@ -1,23 +1,18 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
-"ContactCustomerService" = "Contact Us";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="You find this helpful";
-"elva__mark_no"="NO";
-"elva__mark_unhelpful_toast"="You didn't find this helpful";
-"elva__mark_yes"="YES";
-"elva__mark_yes_no_question"="Was this helpful?";
+//英语en
 "content_too_long"="No more than %ld chars!";
+"ContactCustomerService" = "Contact Us";
+"self_service_interface" = "Self-Service";
+"offLine"= "Your network is disconnected,please try again later";
 "CustomerService"="HELP";
+"elva__mark_helpful_toast"="You found this helpful";
+"elva__mark_unhelpful_toast"="You didn't find this helpful";
+"elva__mark_yes_no_question"="Was this helpful?";
+"elva__mark_no"="NO";
+"elva__mark_yes"="YES";
+"RewardBalance"="Your tokens:";
+"GoTo" = "Go to the";
+"Forum" = "QA Forum";
+"RewardSuccess" = "Success";
+"RewardFailure" = "Failed";
+"TokenInsufficient" = "Your tokens is insufficient";
+"NeedMoreHelp" = "Need more help?";
diff --git a/res/ElvaChatServiceSDK.bundle/es.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/es.lproj/Localizable.strings
index f6cddd0..b6dce23 100755
--- a/res/ElvaChatServiceSDK.bundle/es.lproj/Localizable.strings
+++ b/res/ElvaChatServiceSDK.bundle/es.lproj/Localizable.strings
@@ -1,23 +1,18 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
+//西班牙语es
+"content_too_long"="No más de %ld caracteres!";
 "ContactCustomerService" = "CONTÁCTANOS";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="Le resultó útil";
-"elva__mark_no"="NO";
-"elva__mark_unhelpful_toast"="No le resultó útil";
-"elva__mark_yes"="Sí";
-"elva__mark_yes_no_question"="¿Sirvió de ayuda";
-"content_too_long"="No more than %ld chars!";
+"self_service_interface" = "Autoservicio";
+"offLine"= "Su red está desconectada, inténtelo de nuevo más tarde.";
 "CustomerService"="HELP";
+"elva__mark_helpful_toast"="Le resultó útil";
+"elva__mark_unhelpful_toast"="No le resultó útil";
+"elva__mark_yes_no_question"="¿Sirvió de ayuda";
+"elva__mark_no"="NO";
+"elva__mark_yes"="Sí";
+"RewardBalance"="Sus puntos:";
+"GoTo" = "Ir a";
+"Forum" = "Foro de QA";
+"RewardSuccess" = "Éxito";
+"RewardFailure" = "Ha fallado";
+"TokenInsufficient" = "Sus puntos son insuficientes";
+"NeedMoreHelp" = "Necesitas más ayuda?";
diff --git a/res/ElvaChatServiceSDK.bundle/fa.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/fa.lproj/Localizable.strings
new file mode 100755
index 0000000..fbbcfc2
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/fa.lproj/Localizable.strings
@@ -0,0 +1,32 @@
+//法斯语fa,fa-IR
+"content_too_long"="نباید از %ld حروف بیشتر باشد.";
+"ContactCustomerService" = "با ما تماس بگیرید";
+"self_service_interface" = "پشتیبانی";
+"offLine"= "اینترنت شما قطع می باشد ، لطفا بعدا امتحان کنید.";
+"CustomerService"="HELP";
+"elva__mark_helpful_toast"="این کمک مفیدی بود";
+"elva__mark_unhelpful_toast"="کمک مفیدی نبود";
+"elva__mark_yes_no_question"="آیا این مفید بود؟";
+"elva__mark_no"="نه";
+"elva__mark_yes"="بله";
+"RewardBalance"="امتیاز باقیمانده شما";
+"GoTo" = "برو به";
+"Forum" = "گروه پرسش و پاسخ";
+"RewardSuccess" = "موفقیت آمیز";
+"RewardFailure" = "ناموفق";
+"TokenInsufficient" = "امتیاز شما کافی نیست .";
+"NeedMoreHelp" = "نیاز به کمک بیشتری دارید؟";
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/ElvaChatServiceSDK.bundle/fr-FR.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/fr-FR.lproj/Localizable.strings
new file mode 100755
index 0000000..a574754
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/fr-FR.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+//法语fr,fr-FRfr-BE,fr-CA,fr-CH,fr-FR,fr-LU,fr-MC
+"content_too_long"="Pas plus de %ld de caractères";
+"ContactCustomerService" = "Contactez-nous";
+"self_service_interface" = "Libre service";
+"offLine"= "Votre connexion ne fonctionne pas, veuillez essayer de nouveau";
+"CustomerService"="HELP";
+"elva__mark_helpful_toast"="Est ce que cela vous aidé";
+"elva__mark_unhelpful_toast"="Vous n'avez pas trouvez cela utile";
+"elva__mark_yes_no_question"="Est-ce que cela a été utile?";
+"elva__mark_no"="Non";
+"elva__mark_yes"="Oui";
+"RewardBalance"="Vos jetons";
+"GoTo" = "Allez à";
+"Forum" = "FAQ";
+"RewardSuccess" = "Succès";
+"RewardFailure" = "Echec";
+"TokenInsufficient" = "Jeton insuffisant";
+"NeedMoreHelp" = "Besoin d'aide?";
+
+
+
+
+
+
diff --git a/res/ElvaChatServiceSDK.bundle/id-ID.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/id-ID.lproj/Localizable.strings
new file mode 100755
index 0000000..658b119
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/id-ID.lproj/Localizable.strings
@@ -0,0 +1,18 @@
+//印度尼西亚语id,id-ID
+"content_too_long"="Tidak dapat melebihi %ld karakter!";
+"ContactCustomerService" = "Hubungi Kami";
+"self_service_interface" = "Self-Service";
+"offLine"= "Koneksi internet anda terputus, harap coba beberapa saat lagi";
+"CustomerService"="HELP";
+"elva__mark_helpful_toast"="Anda merasa terbantu";
+"elva__mark_unhelpful_toast"="Anda merasa tidak terbantu";
+"elva__mark_yes_no_question"="Apakah ini membantu?";
+"elva__mark_no"="TIDAK";
+"elva__mark_yes"="YA";
+"RewardBalance"="Token Anda:";
+"GoTo" = "Pergi ke";
+"Forum" = "Forum Q&A";
+"RewardSuccess" = "Berhasil";
+"RewardFailure" = "Gagal";
+"TokenInsufficient" = "Saldo token Anda tidak mencukupi";
+"NeedMoreHelp" = "butuh lebih bantuan?";
diff --git a/res/ElvaChatServiceSDK.bundle/it-IT.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/it-IT.lproj/Localizable.strings
new file mode 100755
index 0000000..acc7931
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/it-IT.lproj/Localizable.strings
@@ -0,0 +1,32 @@
+//意大利语it,it-CH,it-IT
+"content_too_long"="Non più di %ld caratteri!";
+"ContactCustomerService" = "Contattaci";
+"self_service_interface" = "Self Service";
+"offLine"= "Il tuo collegamento si è interrotto, si prega di effettuare nuovamente l'accesso!";
+"CustomerService"="HELP";
+"elva__mark_helpful_toast"="Lo hai trovato utile";
+"elva__mark_unhelpful_toast"="Lo hai trovato inutile";
+"elva__mark_yes_no_question"="Questo è utile?";
+"elva__mark_no"="No";
+"elva__mark_yes"="Si";
+"RewardBalance"="Il tuo bilancio punti:";
+"GoTo" = "Fino a";
+"Forum" = "Spazio domande";
+"RewardSuccess" = "Premiazione riuscita";
+"RewardFailure" = "Premiazione fallita";
+"TokenInsufficient" = "Bilancio insufficiente";
+"NeedMoreHelp" = "Serve ancora aiuto?";
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/ElvaChatServiceSDK.bundle/ja.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/ja.lproj/Localizable.strings
index c1805dd..eb6e5e2 100755
--- a/res/ElvaChatServiceSDK.bundle/ja.lproj/Localizable.strings
+++ b/res/ElvaChatServiceSDK.bundle/ja.lproj/Localizable.strings
@@ -1,23 +1,18 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
+//日语ja
+"content_too_long"="%ld文字を超えてはならない!";
 "ContactCustomerService" = "お問い合わせ";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="役に立ちました";
-"elva__mark_no"="いいえ";
-"elva__mark_unhelpful_toast"="役に立たなかった";
-"elva__mark_yes"="はい";
-"elva__mark_yes_no_question"="お役に立ちましたか";
-"content_too_long"="No more than %ld chars!";
+"self_service_interface" = "セルフサービス";
+"offLine"= "ネットのアクセスがエラー発生しました、もう一度やり直してください!";
 "CustomerService"="HELP";
+"elva__mark_helpful_toast"="役に立ったと評価されました";
+"elva__mark_unhelpful_toast"="役に立たなかったと評価されました";
+"elva__mark_yes_no_question"="お役に立ちましたか?";
+"elva__mark_no"="いいえ";
+"elva__mark_yes"="はい";
+"RewardBalance"="ポイント残高";
+"GoTo" = "に行く";
+"Forum" = "QAフォーム";
+"RewardSuccess" = "奨励成功";
+"RewardFailure" = "奨励失敗";
+"TokenInsufficient" = "残高が足りません";
+"NeedMoreHelp" = "他の質問もある?";
diff --git a/res/ElvaChatServiceSDK.bundle/ko.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/ko.lproj/Localizable.strings
index 3468c93..a5cc241 100755
--- a/res/ElvaChatServiceSDK.bundle/ko.lproj/Localizable.strings
+++ b/res/ElvaChatServiceSDK.bundle/ko.lproj/Localizable.strings
@@ -1,23 +1,18 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
+//韩语ko
+"content_too_long"="%ld 단어를 초과 할 수 없습니다!";
 "ContactCustomerService" = "연락하기";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="도움이 되는 내용입니다";
-"elva__mark_no"="아니요";
-"elva__mark_unhelpful_toast"="도움이 안 되요";
-"elva__mark_yes"="예";
-"elva__mark_yes_no_question"="도움이 되는 내용인가요";
-"content_too_long"="No more than %ld chars!";
+"self_service_interface" = "셀프 서비스";
+"offLine"= "네트워크 연결이 끊어졌습니다. 나중에 다시 시도하십시오.";
 "CustomerService"="HELP";
+"elva__mark_helpful_toast"="질문이 도움이 되었다고 표시되었습니다";
+"elva__mark_unhelpful_toast"="질문이 도움이 되지 않았다고 표시되었습니다";
+"elva__mark_yes_no_question"="이 내용이 유용했나요?";
+"elva__mark_no"="아니요";
+"elva__mark_yes"="예";
+"RewardBalance"="포인트 잔고:";
+"GoTo" = "가기";
+"Forum" = "Q&A 커뮤니티";
+"RewardSuccess" = "성공";
+"RewardFailure" = "실패";
+"TokenInsufficient" = "토큰이 부족합니다.";
+"NeedMoreHelp" = "도움이 더 필요하십니까?";
diff --git a/res/ElvaChatServiceSDK.bundle/pl-PL.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/pl-PL.lproj/Localizable.strings
new file mode 100755
index 0000000..dd94a13
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/pl-PL.lproj/Localizable.strings
@@ -0,0 +1,32 @@
+//波兰语pl,pl-PL
+"content_too_long"="Nie więcej niż %ld znaków!";
+"ContactCustomerService" = "Obsługa klienta";
+"self_service_interface" = "Samoobsługa";
+"offLine"= "Brak dostępu do sieci, proszę spróbuj ponownie później.";
+"CustomerService"="HELP";
+"elva__mark_helpful_toast"="Uznałeś to za przydatne.";
+"elva__mark_unhelpful_toast"="Nie uznałeś tego za przydatne.";
+"elva__mark_yes_no_question"="Czy było to przydatne?";
+"elva__mark_no"="Nie";
+"elva__mark_yes"="Tak";
+"RewardBalance"="Twój bilans punktów:";
+"GoTo" = "Idź do";
+"Forum" = "Forum pytań i odpowiedzi.";
+"RewardSuccess" = "Sukces.";
+"RewardFailure" = "Porażka.";
+"TokenInsufficient" = "Niewystarczająca ilość punktów.";
+"NeedMoreHelp" = "Bisogno Di Più Aiuto?";
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/ElvaChatServiceSDK.bundle/pt-PT.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/pt-PT.lproj/Localizable.strings
new file mode 100755
index 0000000..f90698c
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/pt-PT.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+//葡萄牙语pt,pt-BR,pt-PT
+"content_too_long"="Não pode ser mais de %ld palavras!";
+"ContactCustomerService" = "Contate-Nos";
+"self_service_interface" = "Self-Service";
+"offLine"= "Sua conexão foi desconectada, entre novamente!";
+"CustomerService"="HELP";
+"elva__mark_helpful_toast"="Isso é útil";
+"elva__mark_unhelpful_toast"="Isso não é útil";
+"elva__mark_yes_no_question"="É útil?";
+"elva__mark_no"="Não";
+"elva__mark_yes"="Sim";
+"RewardBalance"="Seus saldos de ponto:";
+"GoTo" = "Chegar";
+"Forum" = "Comunidade de pergunta e resposta";
+"RewardSuccess" = "Recompense com sucesso";
+"RewardFailure" = "Recompense não com sucesso";
+"TokenInsufficient" = "Saldos insuficientes";
+"NeedMoreHelp" = "Precisa mais ajuda?";
+
+
+
+
+
+
diff --git a/res/ElvaChatServiceSDK.bundle/ru.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/ru.lproj/Localizable.strings
index b74cae3..c336917 100755
--- a/res/ElvaChatServiceSDK.bundle/ru.lproj/Localizable.strings
+++ b/res/ElvaChatServiceSDK.bundle/ru.lproj/Localizable.strings
@@ -1,23 +1,18 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
-"ContactCustomerService" = "Связаться с Нами";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="Вы считаете это полезным";
-"elva__mark_no"="НЕТ";
-"elva__mark_unhelpful_toast"="Вам это не помогло";
-"elva__mark_yes"="ДА";
-"elva__mark_yes_no_question"="Это было полезно";
-"content_too_long"="No more than %ld chars!";
+//俄语ru
+"content_too_long"="Не более %ld символов!";
+"ContactCustomerService" = "Свяжитесь с нами";
+"self_service_interface" = "Самообслуживание";
+"offLine"= "Вы не подключены к сети, повторите попытку позже";
 "CustomerService"="HELP";
+"elva__mark_helpful_toast"="Вопрос был обозначен как Полезный";
+"elva__mark_unhelpful_toast"="Вопрос был обозначен как Бесполезный";
+"elva__mark_yes_no_question"="Это вам помогло?";
+"elva__mark_no"="НЕТ";
+"elva__mark_yes"="ДА";
+"RewardBalance"="Остаток баллов:";
+"GoTo" = "Перейти";
+"Forum" = "QA форум";
+"RewardSuccess" = "Успешно";
+"RewardFailure" = "Неудачно";
+"TokenInsufficient" = "Недостаточно баллов";
+"NeedMoreHelp" = "Нужна помощь?";
diff --git a/res/ElvaChatServiceSDK.bundle/sv-SE.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/sv-SE.lproj/Localizable.strings
new file mode 100755
index 0000000..59dc1f8
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/sv-SE.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+//瑞典语sv,sv-FI,sv-SE
+"content_too_long"="Får inte vara längre än %ld tecken!";
+"ContactCustomerService" = "Kontakta KS";
+"self_service_interface" = "Självservice";
+"offLine"= "Anslutning bruten, försök igen!";
+"CustomerService"="HELP";
+"elva__mark_helpful_toast"="Fick du hjälp av detta?";
+"elva__mark_unhelpful_toast"="Fick du inte hjälp av detta?";
+"elva__mark_yes_no_question"="Fick du hjälp av detta?";
+"elva__mark_no"="Nej";
+"elva__mark_yes"="Ja";
+"RewardBalance"="Dina poäng:";
+"GoTo" = "Gå till";
+"Forum" = "Frågeforum";
+"RewardSuccess" = "Lyckades";
+"RewardFailure" = "Misslyckades";
+"TokenInsufficient" = "Du har inte tillräckligt med poäng";
+"NeedMoreHelp" = "Behöver mer hjälp?";
+
+
+
+
+
+
diff --git a/res/ElvaChatServiceSDK.bundle/th.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/th.lproj/Localizable.strings
index afda17b..f49c196 100755
--- a/res/ElvaChatServiceSDK.bundle/th.lproj/Localizable.strings
+++ b/res/ElvaChatServiceSDK.bundle/th.lproj/Localizable.strings
@@ -1,23 +1,18 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
+//泰语th
+"content_too_long"="ไม่เกิน %ld ตัวอักษร!";
 "ContactCustomerService" = "ติดต่อเรา";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="มีประโยชน์สำหรับคุณ";
-"elva__mark_no"="ไม่ใช่";
-"elva__mark_unhelpful_toast"="ไม่มีประโยชน์สำหรับคุณ";
-"elva__mark_yes"="ใช่";
-"elva__mark_yes_no_question"="ข้อมูลดังกล่าวมีประโยชน์หรือไม่";
-"content_too_long"="No more than %ld chars!";
+"self_service_interface" = "Self-Service";
+"offLine"= "การเชื่อมต่อผิดพลาด กรุณาเข้าระบบอีกครั้ง!";
 "CustomerService"="HELP";
+"elva__mark_helpful_toast"="คำถามนี้ถูกระบุว่ามีประโยชน์";
+"elva__mark_unhelpful_toast"="คำถามนี้ถูกระบุว่าไม่มีประโยชน์";
+"elva__mark_yes_no_question"="ข้อมูลดังกล่าวมีประโยชน์หรือไม่";
+"elva__mark_no"="ไม่ใช่";
+"elva__mark_yes"="ใช่";
+"RewardBalance"="แต้มของคุณเหลือ:";
+"GoTo" = "ถึง";
+"Forum" = "ถามตอบ";
+"RewardSuccess" = "ให้รางวัลสำเร็จ";
+"RewardFailure" = "ให้รางวัลล้มเหลว";
+"TokenInsufficient" = "จำนวนคงเหลือไม่พอ";
+"NeedMoreHelp" = "ต้องการความช่วยเหลือ?";
diff --git a/res/ElvaChatServiceSDK.bundle/tr.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/tr.lproj/Localizable.strings
index 69d83a5..07c6bca 100755
--- a/res/ElvaChatServiceSDK.bundle/tr.lproj/Localizable.strings
+++ b/res/ElvaChatServiceSDK.bundle/tr.lproj/Localizable.strings
@@ -1,23 +1,18 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Bağlantı hatası, lütfen tekrar deneyin!";
+//土耳其语tr
+"content_too_long"="En fazla %ld karakter kullanılabilir!";
 "ContactCustomerService" = "İletişim";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Bunu faydalı buldunuz mu?";
-"NO"="Hayır";
-"YES"="Evet";
-"elva__mark_helpful_toast"="Bunu faydalı buldum!";
-"elva__mark_no"="Hayır";
-"elva__mark_unhelpful_toast"="Bunu faydalı bulmadım!";
-"elva__mark_yes"="Evet";
-"elva__mark_yes_no_question"="Bunu faydalı buldunuz mu?";
-"content_too_long"="Maks %ld karakter kullanılabilir!";
+"self_service_interface" = "Kendin Hallet";
+"offLine"= "Bağlantı hatası,lütfen tekrar deneyin!";
 "CustomerService"="HELP";
+"elva__mark_helpful_toast"="Bunu faydalı buldum!";
+"elva__mark_unhelpful_toast"="Bunu faydalı bulmadım!";
+"elva__mark_yes_no_question"="Bunu faydalı buldunuz mu?";
+"elva__mark_no"="Hayır";
+"elva__mark_yes"="Evet";
+"RewardBalance"="Puanınız:";
+"GoTo" = "Git:";
+"Forum" = "Sıkça Sorulan Sorular";
+"RewardSuccess" = "Başarılı!";
+"RewardFailure" = "Başarısız!";
+"TokenInsufficient" = "Bakiyeniz yetersiz!";
+"NeedMoreHelp" = "Ihtiyacınız yardıma?";
diff --git a/res/ElvaChatServiceSDK.bundle/vi-VN.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/vi-VN.lproj/Localizable.strings
new file mode 100755
index 0000000..6854988
--- /dev/null
+++ b/res/ElvaChatServiceSDK.bundle/vi-VN.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+//越南语vi,vi-VN
+"content_too_long"="Không vượt quá %ld ký tự!";
+"ContactCustomerService" = "Liên hệ CSKH";
+"self_service_interface" = "Dịch vụ tự động";
+"offLine"= "Đã mất kết nối, hãy vào lại!";
+"CustomerService"="HELP";
+"elva__mark_helpful_toast"="Phát hiện có hỗ trợ";
+"elva__mark_unhelpful_toast"="Phát hiện không có hỗ trợ";
+"elva__mark_yes_no_question"="Ở đây có hỗ trợ không?";
+"elva__mark_no"="Không";
+"elva__mark_yes"="Có";
+"RewardBalance"="Tích điểm còn:";
+"GoTo" = "Đến";
+"Forum" = "Cộng đồng hỏi đáp";
+"RewardSuccess" = "Thưởng thành công";
+"RewardFailure" = "Thưởng thất bại";
+"TokenInsufficient" = "Không còn đủ";
+"NeedMoreHelp" = "cần thêm giúp?";
+
+
+
+
+
+
diff --git a/res/ElvaChatServiceSDK.bundle/zh-Hans.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/zh-Hans.lproj/Localizable.strings
index 8838004..eae8113 100755
--- a/res/ElvaChatServiceSDK.bundle/zh-Hans.lproj/Localizable.strings
+++ b/res/ElvaChatServiceSDK.bundle/zh-Hans.lproj/Localizable.strings
@@ -1,23 +1,18 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "聊天客服";
-"offLine"= "您的链接已经断开,请重新进入!";
-"ContactCustomerService" = "联系我们";
-"self_service_interface" = "自助服务";
-"Message" = "信息";
-"WasHelp"="此信息对您有帮助吗?";
-"NO"="否";
-"YES"="是";
-"elva__mark_helpful_toast"="你发现这有帮助";
-"elva__mark_no"="否";
-"elva__mark_unhelpful_toast"="你发现这无帮助";
-"elva__mark_yes"="是";
-"elva__mark_yes_no_question"="这有帮助吗";
+//中文简体zh-Hans
 "content_too_long"="不能超过%ld个字!";
+"ContactCustomerService" = "联系客服";
+"self_service_interface" = "自助服务";
+"offLine"= "您的链接已经断开,请重新进入!";
 "CustomerService"="HELP";
+"elva__mark_helpful_toast"="你发现这有帮助";
+"elva__mark_unhelpful_toast"="你发现这无帮助";
+"elva__mark_yes_no_question"="这有帮助吗";
+"elva__mark_no"="否";
+"elva__mark_yes"="是";
+"RewardBalance"="您的积分余额:";
+"GoTo" = "到";
+"Forum" = "问答社区";
+"RewardSuccess" = "打赏成功";
+"RewardFailure" = "打赏失败";
+"TokenInsufficient" = "余额不足";
+"NeedMoreHelp" = "需要更多帮助?";
diff --git a/res/ElvaChatServiceSDK.bundle/zh-Hant.lproj/Localizable.strings b/res/ElvaChatServiceSDK.bundle/zh-Hant.lproj/Localizable.strings
index 79ab746..7724fdc 100755
--- a/res/ElvaChatServiceSDK.bundle/zh-Hant.lproj/Localizable.strings
+++ b/res/ElvaChatServiceSDK.bundle/zh-Hant.lproj/Localizable.strings
@@ -1,26 +1,18 @@
-/*
- Localizable.strings
- ElvaTestIOS
- 
- Created by wwj on 16/5/30.
- Copyright © 2016年 im30. All rights reserved.
- */
-
-"ElvaChatService" = "聊天客服";
-
-"offLine"= "您的鏈接已經斷開,請重新進入!";
-
-"ContactCustomerService" = "聯系我們";
-"self_service_interface" = "自助服務";
-
-"Message" = "信息";
-"WasHelp"="此信息對您有幫助嗎?";
-"NO"="否";
-"YES"="是";
-"elva__mark_helpful_toast"="妳發現這有幫助";
-"elva__mark_no"="否";
-"elva__mark_unhelpful_toast"="妳發現這無幫助";
-"elva__mark_yes"="是";
-"elva__mark_yes_no_question"="這有幫助嗎";
+//中文繁体zh-Hant
 "content_too_long"="不能超過%ld個字!";
+"ContactCustomerService" = "聯系客服";
+"self_service_interface" = "自助服務";
+"offLine"= "您的連結已經斷開,請重新進入!";
 "CustomerService"="HELP";
+"elva__mark_helpful_toast"="妳發現這有幫助";
+"elva__mark_unhelpful_toast"="妳發現這無幫助";
+"elva__mark_yes_no_question"="這有幫助嗎?";
+"elva__mark_no"="否";
+"elva__mark_yes"="是";
+"RewardBalance"="您的積分餘額:";
+"GoTo" = "到";
+"Forum" = "問答社區";
+"RewardSuccess" = "打賞成功";
+"RewardFailure" = "打賞失敗";
+"TokenInsufficient" = "餘額不足";
+"NeedMoreHelp" = "需要更多幫助?";
diff --git a/res/Localization/ar.lproj/Localizable.strings b/res/Localization/ar.lproj/Localizable.strings
deleted file mode 100755
index c8be713..0000000
--- a/res/Localization/ar.lproj/Localizable.strings
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
-"ContactCustomerService" = "اِتصل بنا";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="هل وجدت هذا مُفيداً.";
-"elva__mark_no"="لا";
-"elva__mark_unhelpful_toast"="أنت لم تجد هذا مُفيداً.";
-"elva__mark_yes"="أجل";
-"elva__mark_yes_no_question"="هل كان هذا مُفيداً؟";
-"content_too_long"="No more than %ld chars!";
diff --git a/res/Localization/en.lproj/Localizable.strings b/res/Localization/en.lproj/Localizable.strings
deleted file mode 100755
index c9ffed4..0000000
--- a/res/Localization/en.lproj/Localizable.strings
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
-"ContactCustomerService" = "Contact Us";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="You find this helpful";
-"elva__mark_no"="NO";
-"elva__mark_unhelpful_toast"="You didn't find this helpful";
-"elva__mark_yes"="YES";
-"elva__mark_yes_no_question"="Was this helpful?";
-"content_too_long"="No more than %ld chars!";
diff --git a/res/Localization/es.lproj/Localizable.strings b/res/Localization/es.lproj/Localizable.strings
deleted file mode 100755
index 1758951..0000000
--- a/res/Localization/es.lproj/Localizable.strings
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
-"ContactCustomerService" = "CONTÁCTANOS";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="Le resultó útil";
-"elva__mark_no"="NO";
-"elva__mark_unhelpful_toast"="No le resultó útil";
-"elva__mark_yes"="Sí";
-"elva__mark_yes_no_question"="¿Sirvió de ayuda";
-"content_too_long"="No more than %ld chars!";
diff --git a/res/Localization/ja.lproj/Localizable.strings b/res/Localization/ja.lproj/Localizable.strings
deleted file mode 100755
index 4729ad2..0000000
--- a/res/Localization/ja.lproj/Localizable.strings
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
-"ContactCustomerService" = "お問い合わせ";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="役に立ちました";
-"elva__mark_no"="いいえ";
-"elva__mark_unhelpful_toast"="役に立たなかった";
-"elva__mark_yes"="はい";
-"elva__mark_yes_no_question"="お役に立ちましたか";
-"content_too_long"="No more than %ld chars!";
diff --git a/res/Localization/ko.lproj/Localizable.strings b/res/Localization/ko.lproj/Localizable.strings
deleted file mode 100755
index ca46a53..0000000
--- a/res/Localization/ko.lproj/Localizable.strings
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
-"ContactCustomerService" = "연락하기";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="도움이 되는 내용입니다";
-"elva__mark_no"="아니요";
-"elva__mark_unhelpful_toast"="도움이 안 되요";
-"elva__mark_yes"="예";
-"elva__mark_yes_no_question"="도움이 되는 내용인가요";
-"content_too_long"="No more than %ld chars!";
diff --git a/res/Localization/ru.lproj/Localizable.strings b/res/Localization/ru.lproj/Localizable.strings
deleted file mode 100755
index 0f911b2..0000000
--- a/res/Localization/ru.lproj/Localizable.strings
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
-"ContactCustomerService" = "Связаться с Нами";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="Вы считаете это полезным";
-"elva__mark_no"="НЕТ";
-"elva__mark_unhelpful_toast"="Вам это не помогло";
-"elva__mark_yes"="ДА";
-"elva__mark_yes_no_question"="Это было полезно";
-"content_too_long"="No more than %ld chars!";
diff --git a/res/Localization/th.lproj/Localizable.strings b/res/Localization/th.lproj/Localizable.strings
deleted file mode 100755
index dbfbfab..0000000
--- a/res/Localization/th.lproj/Localizable.strings
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "ElvaChat Service";
-"offLine"="Your network is disconnected,please try again later";
-"ContactCustomerService" = "ติดต่อเรา";
-"self_service_interface"="services";
-"Message" = "Message";
-"WasHelp"="Was this helpful?";
-"NO"="NO";
-"YES"="YES";
-"elva__mark_helpful_toast"="มีประโยชน์สำหรับคุณ";
-"elva__mark_no"="ไม่ใช่";
-"elva__mark_unhelpful_toast"="ไม่มีประโยชน์สำหรับคุณ";
-"elva__mark_yes"="ใช่";
-"elva__mark_yes_no_question"="ข้อมูลดังกล่าวมีประโยชน์หรือไม่";
-"content_too_long"="No more than %ld chars!";
diff --git a/res/Localization/zh-Hans.lproj/Localizable.strings b/res/Localization/zh-Hans.lproj/Localizable.strings
deleted file mode 100755
index a0325a0..0000000
--- a/res/Localization/zh-Hans.lproj/Localizable.strings
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 
-  Localizable.strings
-  ElvaTestIOS
-
-  Created by wwj on 16/5/30.
-  Copyright © 2016年 im30. All rights reserved.
-*/
-
-"ElvaChatService" = "聊天客服";
-"offLine"= "您的链接已经断开,请重新进入!";
-"ContactCustomerService" = "联系我们";
-"self_service_interface" = "自助服务";
-"Message" = "信息";
-"WasHelp"="此信息对您有帮助吗?";
-"NO"="否";
-"YES"="是";
-"elva__mark_helpful_toast"="你发现这有帮助";
-"elva__mark_no"="否";
-"elva__mark_unhelpful_toast"="你发现这无帮助";
-"elva__mark_yes"="是";
-"elva__mark_yes_no_question"="这有帮助吗";
-"content_too_long"="不能超过%ld个字!";
diff --git a/res/Localization/zh-Hant.lproj/Localizable.strings b/res/Localization/zh-Hant.lproj/Localizable.strings
deleted file mode 100755
index 71b6b04..0000000
--- a/res/Localization/zh-Hant.lproj/Localizable.strings
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- Localizable.strings
- ElvaTestIOS
- 
- Created by wwj on 16/5/30.
- Copyright © 2016年 im30. All rights reserved.
- */
-
-"ElvaChatService" = "聊天客服";
-
-"offLine"= "您的鏈接已經斷開,請重新進入!";
-
-"ContactCustomerService" = "聯系我們";
-"self_service_interface" = "自助服務";
-
-"Message" = "信息";
-"WasHelp"="此信息對您有幫助嗎?";
-"NO"="否";
-"YES"="是";
-"elva__mark_helpful_toast"="妳發現這有幫助";
-"elva__mark_no"="否";
-"elva__mark_unhelpful_toast"="妳發現這無幫助";
-"elva__mark_yes"="是";
-"elva__mark_yes_no_question"="這有幫助嗎";
-"content_too_long"="不能超過%ld個字!";

--
Gitblit v1.8.0