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 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="公共模块"/> frameworks/ElvaChatServiceSDK.framework/ElvaChatServiceSDKBinary files differ
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 frameworks/ElvaChatServiceSDK.framework/Headers/UnityForwardDecls.h
New file @@ -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 frameworks/ElvaChatServiceSDK.framework/Headers/UnityInterface.h
New file @@ -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 frameworks/ElvaChatServiceSDK.framework/Headers/UnityRendering.h
New file @@ -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 frameworks/ElvaChatServiceSDK.framework/Info.plistBinary files differ
frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeDirectoryBinary files differ
frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeRequirements-1Binary files differ
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> frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeSignatureBinary files differ
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 frameworks/WAAIhelpImpl.framework/Info.plistBinary files differ
frameworks/WAAIhelpImpl.framework/WAAIhelpImplBinary files differ
res/ElvaChatServiceSDK.bundle/ab_reward.png
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" = "هل تريد المزيد من المساعدة؟"; res/ElvaChatServiceSDK.bundle/checkbox_checked.png
res/ElvaChatServiceSDK.bundle/checkbox_unchecked.png
res/ElvaChatServiceSDK.bundle/de.lproj/Localizable.strings
New file @@ -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?"; res/ElvaChatServiceSDK.bundle/el-GR.lproj/Localizable.strings
New file @@ -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" = "Χρειάζεστε βοήθεια?"; 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?"; 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?"; res/ElvaChatServiceSDK.bundle/fa.lproj/Localizable.strings
New file @@ -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" = "نیاز به کمک بیشتری دارید؟"; res/ElvaChatServiceSDK.bundle/fr-FR.lproj/Localizable.strings
New file @@ -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?"; res/ElvaChatServiceSDK.bundle/id-ID.lproj/Localizable.strings
New file @@ -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?"; res/ElvaChatServiceSDK.bundle/it-IT.lproj/Localizable.strings
New file @@ -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?"; 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" = "他の質問もある?"; 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" = "도움이 더 필요하십니까?"; res/ElvaChatServiceSDK.bundle/pl-PL.lproj/Localizable.strings
New file @@ -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?"; res/ElvaChatServiceSDK.bundle/pt-PT.lproj/Localizable.strings
New file @@ -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?"; 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" = "Нужна помощь?"; res/ElvaChatServiceSDK.bundle/sv-SE.lproj/Localizable.strings
New file @@ -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?"; 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" = "ต้องการความช่วยเหลือ?"; 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?"; res/ElvaChatServiceSDK.bundle/vi-VN.lproj/Localizable.strings
New file @@ -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?"; 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" = "需要更多帮助?"; 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" = "需要更多幫助?"; res/Localization/ar.lproj/Localizable.strings
File was deleted res/Localization/en.lproj/Localizable.strings
File was deleted res/Localization/es.lproj/Localizable.strings
File was deleted res/Localization/ja.lproj/Localizable.strings
File was deleted res/Localization/ko.lproj/Localizable.strings
File was deleted res/Localization/ru.lproj/Localizable.strings
File was deleted res/Localization/th.lproj/Localizable.strings
File was deleted res/Localization/zh-Hans.lproj/Localizable.strings
File was deleted res/Localization/zh-Hant.lproj/Localizable.strings
File was deleted