diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c314c86..13972138 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,106 +1,111 @@ Change Log ========== -Version 2.1.0 *(16 Oct 2020)* +Version 2.1.1 *(1 February, 2021)* ------------------------------------------- -* Supports [CleverTap iOS SDK v3.9.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.9.1) +- Update iOS CleverTapPostBuildProcessor.cs to fix Project Target issue on **UNITY_2019_3_OR_NEWER** +- Updated to CleverTap Android SDK v4.0.2 + +Version 2.1.0 *(16 October, 2020)* +------------------------------------------- +- Supports [CleverTap iOS SDK v3.9.1](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/3.9.1) - Supports **Major release** of [CleverTap Android SDK v4.0.0](https://github.com/CleverTap/clevertap-android-sdk/blob/master/docs/CTCORECHANGELOG.md), which will break your existing integration. Please go through [Migration guide](https://github.com/CleverTap/clevertap-android-sdk/blob/master/docs/CTV4CHANGES.md) for smooth integration. -Version 1.3.0 *(19 May 2020)* +Version 1.3.0 *(19 May, 2020)* ------------------------------------------- -* Updated to CleverTap Android SDK v3.8.0 -* Updated to CleverTap iOS SDK v3.8.0 +- Updated to CleverTap Android SDK v3.8.0 +- Updated to CleverTap iOS SDK v3.8.0 -Version 2.0.1 *(19 May 2020)* +Version 2.0.1 *(19 May, 2020)* ------------------------------------------- -* Updated to CleverTap Android SDK v3.8.0 -* Updated to CleverTap iOS SDK v3.8.0 -* Supports Android X +- Updated to CleverTap Android SDK v3.8.0 +- Updated to CleverTap iOS SDK v3.8.0 +- Supports Android X -Version 1.2.9 *(27 Feb 2020)* +Version 1.2.9 *(27 February, 2020)* ------------------------------------------- * Updated to CleverTap Android SDK v3.6.4 -Version 1.2.7 *(24 Feb 2020)* +Version 1.2.7 *(24 February, 2020)* ------------------------------------------- * Updated to CleverTap Android SDK v3.6.3 -Version 1.2.6 *(20 Feb 2020)* +Version 1.2.6 *(20 February, 2020)* ------------------------------------------- * Bug fixes -Version 1.2.5 *(15 Jan 2020)* +Version 1.2.5 *(15 January, 2020)* ------------------------------------------- * Bug fixes and performance improvement -Version 1.2.4 *(31 Oct 2019)* +Version 1.2.4 *(31 October, 2019)* ------------------------------------------- * Exposed method to pass custom install referrer parameters in Android -Version 2.0.0 *(30 Oct 2019)* +Version 2.0.0 *(30 October, 2019)* ------------------------------------------- * Update Play Services Resolver to support Androidx dependencies -Version 1.2.3 *(11 Oct 2019)* +Version 1.2.3 *(11 October, 2019)* ------------------------------------------- * Update to CleverTap Android SDK v3.6.0 * Update to CleverTap iOS SDK v3.7.0 -Version 1.2.2 *(30 May 2019)* +Version 1.2.2 *(30 May, 2019)* ------------------------------------------- * Update to CleverTap Android SDK v3.5.1 * Update to CleverTap iOS SDK v3.5.0 -Version 1.2.1 *(08 March 2019)* +Version 1.2.1 *(08 March, 2019)* ------------------------------------------- * Update Play Services Resolver to support FCM in Android -Version 1.2.0 *(15 February 2019)* +Version 1.2.0 *(15 February, 2019)* ------------------------------------------- * Update to CleverTap Android SDK v3.4.2 * Update to CleverTap iOS SDK v3.4.1 -Version 1.1.5 *(13 November 2018)* +Version 1.1.5 *(13 November, 2018)* ------------------------------------------- * Update to CleverTap Android SDK v3.3.2 -Version 1.1.4 *(01 November 2018)* +Version 1.1.4 *(01 November, 2018)* ------------------------------------------- * Update to CleverTap Android SDK v3.3.1 * Update to CleverTap iOS SDK v3.3.0 -Version 1.1.3 *(26 September 2018)* +Version 1.1.3 *(26 September, 2018)* ------------------------------------------- * Update to CleverTap iOS SDK v 3.2.2 -Version 1.1.2 *(12 September 2018)* +Version 1.1.2 *(12 September, 2018)* ------------------------------------------- * Update to CleverTap Android SDK v 3.2.0 * Update to CleverTap iOS SDK v 3.2.0 -Version 1.1.1 *(22 May 2018)* +Version 1.1.1 *(22 May, 2018)* ------------------------------------------- * Update to CleverTap Android SDK v 3.1.10 -Version 1.1.0 *(18 May 2018)* +Version 1.1.0 *(18 May, 2018)* ------------------------------------------- * Update to CleverTap Android SDK v 3.1.9 * Update to CleverTap iOS SDK v 3.1.7 -Version 1.0.9 *(15 January 2018)* +Version 1.0.9 *(15 January, 2018)* ------------------------------------------- * Update to CleverTap Android SDK v 3.1.8 -Version 1.0.8 *(13 October 2017)* +Version 1.0.8 *(13 October, 2017)* ------------------------------------------- * Update to CleverTap iOS SDK v 3.1.6 -Version 1.0.7 *(10 October 2017)* +Version 1.0.7 *(10 October, 2017)* ------------------------------------------- * Update to CleverTapAndroidSDK v 3.1.7 -Version 1.0.6 *(21 September 2017)* +Version 1.0.6 *(21 September, 2017)* ------------------------------------------- *(Supports CleverTap 3.1.5/3.1.6)* diff --git a/ClevertapUnityPlugin.unitypackage b/CleverTapUnityPlugin.unitypackage similarity index 51% rename from ClevertapUnityPlugin.unitypackage rename to CleverTapUnityPlugin.unitypackage index 3e683c51..5db1c0cf 100644 Binary files a/ClevertapUnityPlugin.unitypackage and b/CleverTapUnityPlugin.unitypackage differ diff --git a/Plugin/CleverTapUnity/Android/clevertap-android-sdk-3.8.0.aar b/Plugin/CleverTapUnity/Android/clevertap-android-sdk-3.8.0.aar deleted file mode 100644 index b48cd12d..00000000 Binary files a/Plugin/CleverTapUnity/Android/clevertap-android-sdk-3.8.0.aar and /dev/null differ diff --git a/Plugin/CleverTapUnity/Android/clevertap-android-sdk-4.0.0.aar b/Plugin/CleverTapUnity/Android/clevertap-android-sdk-4.0.0.aar deleted file mode 100644 index ea308414..00000000 Binary files a/Plugin/CleverTapUnity/Android/clevertap-android-sdk-4.0.0.aar and /dev/null differ diff --git a/Plugin/CleverTapUnity/Android/clevertap-android-sdk-4.0.2.aar b/Plugin/CleverTapUnity/Android/clevertap-android-sdk-4.0.2.aar new file mode 100644 index 00000000..5bb80c27 Binary files /dev/null and b/Plugin/CleverTapUnity/Android/clevertap-android-sdk-4.0.2.aar differ diff --git a/Plugin/CleverTapUnity/Android/clevertapsdk-unity-2.1.0.aar b/Plugin/CleverTapUnity/Android/clevertapsdk-unity-2.1.0.aar deleted file mode 100644 index b6c1e286..00000000 Binary files a/Plugin/CleverTapUnity/Android/clevertapsdk-unity-2.1.0.aar and /dev/null differ diff --git a/Plugin/CleverTapUnity/Android/clevertapsdk-unity-2.1.1.aar b/Plugin/CleverTapUnity/Android/clevertapsdk-unity-2.1.1.aar new file mode 100644 index 00000000..fb951067 Binary files /dev/null and b/Plugin/CleverTapUnity/Android/clevertapsdk-unity-2.1.1.aar differ diff --git a/Plugin/CleverTapUnity/Editor/CleverTapPostBuildProcessor.cs b/Plugin/CleverTapUnity/Editor/CleverTapPostBuildProcessor.cs index 97027a62..658866d3 100644 --- a/Plugin/CleverTapUnity/Editor/CleverTapPostBuildProcessor.cs +++ b/Plugin/CleverTapUnity/Editor/CleverTapPostBuildProcessor.cs @@ -68,12 +68,11 @@ public static void OnPostProcessBuild(BuildTarget target, string path) PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); - #if UNITY_2019_1_OR_NEWER - string targetName = proj.GetUnityFrameworkTargetGuid(); - #else - string targetName = PBXProject.GetUnityTargetName(); - #endif - string projectTarget = proj.TargetGuidByName(targetName); + #if UNITY_2019_3_OR_NEWER + var projectTarget = proj.GetUnityFrameworkTargetGuid(); + #else + var projectTarget = proj.TargetGuidByName(PBXProject.GetUnityTargetName()); + #endif // Add dependencies proj.AddFrameworkToProject(projectTarget, "SystemConfiguration.framework", false); diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~land.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~land.nib new file mode 100644 index 00000000..a9ae126d Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~land.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~land.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~land.nib/objects-13.0+.nib deleted file mode 100644 index 081a5594..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~land.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~land.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~land.nib/runtime.nib deleted file mode 100644 index 952d8f35..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~land.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~port.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~port.nib new file mode 100644 index 00000000..64a95c18 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~port.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~port.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~port.nib/objects-13.0+.nib deleted file mode 100644 index 3a217022..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~port.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~port.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~port.nib/runtime.nib deleted file mode 100644 index ef42d9d5..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageMessageCell~port.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageView.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageView.nib new file mode 100644 index 00000000..f5ef5b1d Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageView.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageView.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageView.nib/objects-13.0+.nib deleted file mode 100644 index 2d75d9fc..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageView.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageView.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageView.nib/runtime.nib deleted file mode 100644 index df816f16..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselImageView.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~land.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~land.nib new file mode 100644 index 00000000..e813396f Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~land.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~land.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~land.nib/objects-13.0+.nib deleted file mode 100644 index a8900584..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~land.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~land.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~land.nib/runtime.nib deleted file mode 100644 index 1ab34f4a..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~land.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~port.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~port.nib new file mode 100644 index 00000000..dd3c72be Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~port.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~port.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~port.nib/objects-13.0+.nib deleted file mode 100644 index 74258cd4..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~port.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~port.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~port.nib/runtime.nib deleted file mode 100644 index 2e875b4e..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCarouselMessageCell~port.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipad.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipad.nib new file mode 100644 index 00000000..e82ced93 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipad.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipad.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipad.nib/objects-13.0+.nib deleted file mode 100644 index 38bb4135..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipad.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipad.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipad.nib/runtime.nib deleted file mode 100644 index 99f11274..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipad.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipadland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipadland.nib new file mode 100644 index 00000000..cb0c155f Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipadland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipadland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipadland.nib/objects-13.0+.nib deleted file mode 100644 index 3f87323c..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipadland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipadland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipadland.nib/runtime.nib deleted file mode 100644 index d7fbfd48..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~ipadland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneland.nib new file mode 100644 index 00000000..59df5d42 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneland.nib/objects-13.0+.nib deleted file mode 100644 index 3946802d..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneland.nib/runtime.nib deleted file mode 100644 index 776d1ba4..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneport.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneport.nib new file mode 100644 index 00000000..fdea0c28 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneport.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneport.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneport.nib/objects-13.0+.nib deleted file mode 100644 index d6788512..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneport.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneport.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneport.nib/runtime.nib deleted file mode 100644 index fcf903b2..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverImageViewController~iphoneport.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipad.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipad.nib new file mode 100644 index 00000000..e880cd1a Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipad.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipad.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipad.nib/objects-13.0+.nib deleted file mode 100644 index 85c288b0..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipad.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipad.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipad.nib/runtime.nib deleted file mode 100644 index ad8a4748..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipad.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipadland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipadland.nib new file mode 100644 index 00000000..c6defc8e Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipadland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipadland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipadland.nib/objects-13.0+.nib deleted file mode 100644 index e9523609..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipadland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipadland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipadland.nib/runtime.nib deleted file mode 100644 index 27c08d95..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~ipadland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneland.nib new file mode 100644 index 00000000..e828ac84 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneland.nib/objects-13.0+.nib deleted file mode 100644 index 954ba1bf..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneland.nib/runtime.nib deleted file mode 100644 index d54dd47f..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneport.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneport.nib new file mode 100644 index 00000000..898f184c Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneport.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneport.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneport.nib/objects-13.0+.nib deleted file mode 100644 index cecec863..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneport.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneport.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneport.nib/runtime.nib deleted file mode 100644 index 3e4d277a..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTCoverViewController~iphoneport.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipad.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipad.nib new file mode 100644 index 00000000..90257d6a Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipad.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipad.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipad.nib/objects-13.0+.nib deleted file mode 100644 index 40acade8..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipad.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipad.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipad.nib/runtime.nib deleted file mode 100644 index e6e9e49c..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipad.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipadland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipadland.nib new file mode 100644 index 00000000..5dc5154c Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipadland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipadland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipadland.nib/objects-13.0+.nib deleted file mode 100644 index 786d9f17..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipadland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipadland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipadland.nib/runtime.nib deleted file mode 100644 index ee01e9f7..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~ipadland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneland.nib new file mode 100644 index 00000000..8e6c73e4 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneland.nib/objects-13.0+.nib deleted file mode 100644 index df73b994..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneland.nib/runtime.nib deleted file mode 100644 index 12526476..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneport.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneport.nib new file mode 100644 index 00000000..7009868d Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneport.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneport.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneport.nib/objects-13.0+.nib deleted file mode 100644 index 86f468ab..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneport.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneport.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneport.nib/runtime.nib deleted file mode 100644 index d6ad25af..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTFooterViewController~iphoneport.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipad.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipad.nib new file mode 100644 index 00000000..9f9371e6 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipad.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipad.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipad.nib/objects-13.0+.nib deleted file mode 100644 index 872b6a5a..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipad.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipad.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipad.nib/runtime.nib deleted file mode 100644 index 048f144d..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipad.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipadland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipadland.nib new file mode 100644 index 00000000..797bd0f4 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipadland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipadland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipadland.nib/objects-13.0+.nib deleted file mode 100644 index 16f3dc31..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipadland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipadland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipadland.nib/runtime.nib deleted file mode 100644 index 8139c7d7..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~ipadland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneland.nib new file mode 100644 index 00000000..20df037a Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneland.nib/objects-13.0+.nib deleted file mode 100644 index 558c3e4e..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneland.nib/runtime.nib deleted file mode 100644 index fe1d19d3..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneport.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneport.nib new file mode 100644 index 00000000..78308286 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneport.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneport.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneport.nib/objects-13.0+.nib deleted file mode 100644 index 217b3bee..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneport.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneport.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneport.nib/runtime.nib deleted file mode 100644 index fd880907..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialImageViewController~iphoneport.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipad.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipad.nib new file mode 100644 index 00000000..81668409 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipad.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipad.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipad.nib/objects-13.0+.nib deleted file mode 100644 index 1b182f30..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipad.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipad.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipad.nib/runtime.nib deleted file mode 100644 index 18434bb3..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipad.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipadland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipadland.nib new file mode 100644 index 00000000..313e035d Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipadland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipadland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipadland.nib/objects-13.0+.nib deleted file mode 100644 index 9d8bb0fe..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipadland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipadland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipadland.nib/runtime.nib deleted file mode 100644 index 62cb8040..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~ipadland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneland.nib new file mode 100644 index 00000000..826a3b30 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneland.nib/objects-13.0+.nib deleted file mode 100644 index ab12cf3b..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneland.nib/runtime.nib deleted file mode 100644 index a8ee4236..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneport.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneport.nib new file mode 100644 index 00000000..be9a00b8 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneport.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneport.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneport.nib/objects-13.0+.nib deleted file mode 100644 index 2cad408d..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneport.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneport.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneport.nib/runtime.nib deleted file mode 100644 index 9de21da2..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHalfInterstitialViewController~iphoneport.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipad.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipad.nib new file mode 100644 index 00000000..2fbb6f26 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipad.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipad.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipad.nib/objects-13.0+.nib deleted file mode 100644 index 21ab53f1..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipad.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipad.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipad.nib/runtime.nib deleted file mode 100644 index e14df5e6..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipad.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipadland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipadland.nib new file mode 100644 index 00000000..8acb9af9 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipadland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipadland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipadland.nib/objects-13.0+.nib deleted file mode 100644 index 9a75bc9c..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipadland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipadland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipadland.nib/runtime.nib deleted file mode 100644 index d890070e..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~ipadland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneland.nib new file mode 100644 index 00000000..c504f312 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneland.nib/objects-13.0+.nib deleted file mode 100644 index 515dbac3..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneland.nib/runtime.nib deleted file mode 100644 index 3b654d45..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneport.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneport.nib new file mode 100644 index 00000000..4866e01c Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneport.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneport.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneport.nib/objects-13.0+.nib deleted file mode 100644 index 99d87109..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneport.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneport.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneport.nib/runtime.nib deleted file mode 100644 index 286c12e4..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTHeaderViewController~iphoneport.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~land.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~land.nib new file mode 100644 index 00000000..e1e52bab Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~land.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~land.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~land.nib/objects-13.0+.nib deleted file mode 100644 index 9833ac6f..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~land.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~land.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~land.nib/runtime.nib deleted file mode 100644 index c9d6a180..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~land.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~port.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~port.nib new file mode 100644 index 00000000..cff4e09d Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~port.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~port.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~port.nib/objects-13.0+.nib deleted file mode 100644 index 4c82d24a..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~port.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~port.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~port.nib/runtime.nib deleted file mode 100644 index 62cee7f2..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxIconMessageCell~port.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~land.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~land.nib new file mode 100644 index 00000000..086fbec9 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~land.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~land.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~land.nib/objects-13.0+.nib deleted file mode 100644 index cebb524c..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~land.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~land.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~land.nib/runtime.nib deleted file mode 100644 index b7f45732..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~land.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~port.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~port.nib new file mode 100644 index 00000000..89b11344 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~port.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~port.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~port.nib/objects-13.0+.nib deleted file mode 100644 index 59f46349..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~port.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~port.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~port.nib/runtime.nib deleted file mode 100644 index 29656edf..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInboxSimpleMessageCell~port.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipad.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipad.nib new file mode 100644 index 00000000..960f55a6 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipad.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipad.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipad.nib/objects-13.0+.nib deleted file mode 100644 index f048af53..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipad.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipad.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipad.nib/runtime.nib deleted file mode 100644 index 66a64a9f..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipad.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipadland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipadland.nib new file mode 100644 index 00000000..e3ed22c1 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipadland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipadland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipadland.nib/objects-13.0+.nib deleted file mode 100644 index 3f258502..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipadland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipadland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipadland.nib/runtime.nib deleted file mode 100644 index 4c047538..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~ipadland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneland.nib new file mode 100644 index 00000000..adf532b0 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneland.nib/objects-13.0+.nib deleted file mode 100644 index ee4cf879..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneland.nib/runtime.nib deleted file mode 100644 index 79371db5..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneport.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneport.nib new file mode 100644 index 00000000..f93e8ac3 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneport.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneport.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneport.nib/objects-13.0+.nib deleted file mode 100644 index ff4226fa..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneport.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneport.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneport.nib/runtime.nib deleted file mode 100644 index 19f45769..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialImageViewController~iphoneport.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipad.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipad.nib new file mode 100644 index 00000000..6830f23c Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipad.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipad.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipad.nib/objects-13.0+.nib deleted file mode 100644 index 97e41b62..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipad.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipad.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipad.nib/runtime.nib deleted file mode 100644 index 22b1f1c9..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipad.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipadland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipadland.nib new file mode 100644 index 00000000..1d17eea5 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipadland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipadland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipadland.nib/objects-13.0+.nib deleted file mode 100644 index 7fc678d2..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipadland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipadland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipadland.nib/runtime.nib deleted file mode 100644 index 893fb966..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~ipadland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneland.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneland.nib new file mode 100644 index 00000000..2e0e77d4 Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneland.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneland.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneland.nib/objects-13.0+.nib deleted file mode 100644 index 8ff46989..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneland.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneland.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneland.nib/runtime.nib deleted file mode 100644 index 40ce6826..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneland.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneport.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneport.nib new file mode 100644 index 00000000..8200010c Binary files /dev/null and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneport.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneport.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneport.nib/objects-13.0+.nib deleted file mode 100644 index 4ce4363d..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneport.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneport.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneport.nib/runtime.nib deleted file mode 100644 index df26a46c..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CTInterstitialViewController~iphoneport.nib/runtime.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapInboxViewController.nib/objects-11.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapInboxViewController.nib/objects-11.0+.nib index ccadd6da..2ebc3e68 100644 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapInboxViewController.nib/objects-11.0+.nib and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapInboxViewController.nib/objects-11.0+.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapInboxViewController.nib/objects-13.0+.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapInboxViewController.nib/objects-13.0+.nib deleted file mode 100644 index 931cf1b2..00000000 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapInboxViewController.nib/objects-13.0+.nib and /dev/null differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapInboxViewController.nib/runtime.nib b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapInboxViewController.nib/runtime.nib index 167ba4d7..9d71731e 100644 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapInboxViewController.nib/runtime.nib and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapInboxViewController.nib/runtime.nib differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapSDK b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapSDK index 0eb782b8..c10006b5 100755 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapSDK and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapSDK differ diff --git a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/Info.plist b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/Info.plist index 4ff06d92..bbab3ff8 100644 Binary files a/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/Info.plist and b/Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/Info.plist differ diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/NSData+ImageContentType.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/NSData+ImageContentType.h index 5bbb4ae6..a9921ea3 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/NSData+ImageContentType.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/NSData+ImageContentType.h @@ -23,6 +23,8 @@ static const SDImageFormat SDImageFormatTIFF = 3; static const SDImageFormat SDImageFormatWebP = 4; static const SDImageFormat SDImageFormatHEIC = 5; static const SDImageFormat SDImageFormatHEIF = 6; +static const SDImageFormat SDImageFormatPDF = 7; +static const SDImageFormat SDImageFormatSVG = 8; /** NSData category about the image content type and UTI. @@ -43,14 +45,16 @@ static const SDImageFormat SDImageFormatHEIF = 6; * * @param format Format as SDImageFormat * @return The UTType as CFStringRef + * @note For unknown format, `kUTTypeImage` abstract type will return */ + (nonnull CFStringRef)sd_UTTypeFromImageFormat:(SDImageFormat)format CF_RETURNS_NOT_RETAINED NS_SWIFT_NAME(sd_UTType(from:)); /** - * Convert UTTyppe to SDImageFormat + * Convert UTType to SDImageFormat * * @param uttype The UTType as CFStringRef * @return The Format as SDImageFormat + * @note For unknown type, `SDImageFormatUndefined` will return */ + (SDImageFormat)sd_imageFormatFromUTType:(nonnull CFStringRef)uttype; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/NSImage+Compatibility.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/NSImage+Compatibility.h index dccc1ffa..0a562cc4 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/NSImage+Compatibility.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/NSImage+Compatibility.h @@ -19,6 +19,10 @@ The underlying Core Graphics image object. This will actually use `CGImageForProposedRect` with the image size. */ @property (nonatomic, readonly, nullable) CGImageRef CGImage; +/** + The underlying Core Image data. This will actually use `bestRepresentationForRect` with the image size to find the `NSCIImageRep`. + */ +@property (nonatomic, readonly, nullable) CIImage *CIImage; /** The scale factor of the image. This wil actually use `bestRepresentationForRect` with image size and pixel size to calculate the scale factor. If failed, use the default value 1.0. Should be greater than or equal to 1.0. */ @@ -38,6 +42,16 @@ The underlying Core Graphics image object. This will actually use `CGImageForPro */ - (nonnull instancetype)initWithCGImage:(nonnull CGImageRef)cgImage scale:(CGFloat)scale orientation:(CGImagePropertyOrientation)orientation; +/** + Initializes and returns an image object with the specified Core Image object. The representation is `NSCIImageRep`. + + @param ciImage A Core Image image object + @param scale The image scale factor + @param orientation The orientation of the image data + @return The image object + */ +- (nonnull instancetype)initWithCIImage:(nonnull CIImage *)ciImage scale:(CGFloat)scale orientation:(CGImagePropertyOrientation)orientation; + /** Returns an image object with the scale factor. The representation is created from the image data. @note The difference between these this and `initWithData:` is that `initWithData:` will always use `backingScaleFactor` as scale factor. diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDAnimatedImage.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDAnimatedImage.h index 2683984f..2e208cdf 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDAnimatedImage.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDAnimatedImage.h @@ -57,6 +57,12 @@ */ @property (nonatomic, assign, readonly, getter=isAllFramesLoaded) BOOL allFramesLoaded; +/** + Return the animated image coder if the image is created with `initWithAnimatedCoder:scale:` method. + @note We use this with animated coder which conforms to `SDProgressiveImageCoder` for progressive animation decoding. + */ +@property (nonatomic, strong, readonly, nullable) id animatedCoder; + @end /** @@ -66,6 +72,7 @@ // This class override these methods from UIImage(NSImage), and it supports NSSecureCoding. // You should use these methods to create a new animated image. Use other methods just call super instead. +// Pay attention, when the animated image frame count <= 1, all the `SDAnimatedImageProvider` protocol methods will return nil or 0 value, you'd better check the frame count before usage and keep fallback. + (nullable instancetype)imageNamed:(nonnull NSString *)name; // Cache in memory, no Asset Catalog support #if __has_include() + (nullable instancetype)imageNamed:(nonnull NSString *)name inBundle:(nullable NSBundle *)bundle compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection; // Cache in memory, no Asset Catalog support @@ -94,11 +101,11 @@ The scale factor of the image. @note For UIKit, this just call super instead. - @note For AppKit, `NSImage` can contains multiple image representations with different scales. However, this class does not do that from the design. We processs the scale like UIKit. This wil actually be calculated from image size and pixel size. + @note For AppKit, `NSImage` can contains multiple image representations with different scales. However, this class does not do that from the design. We process the scale like UIKit. This will actually be calculated from image size and pixel size. */ @property (nonatomic, readonly) CGFloat scale; -// By default, animated image frames are returned by decoding just in time without keeping into memory. But you can choose to preload them into memory as well, See the decsription in `SDAnimatedImage` protocol. +// By default, animated image frames are returned by decoding just in time without keeping into memory. But you can choose to preload them into memory as well, See the description in `SDAnimatedImage` protocol. // After preloaded, there is no huge difference on performance between this and UIImage's `animatedImageWithImages:duration:`. But UIImage's animation have some issues such like blanking and pausing during segue when using in `UIImageView`. It's recommend to use only if need. - (void)preloadAllFrames; - (void)unloadAllFrames; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h new file mode 100644 index 00000000..e71e239c --- /dev/null +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h @@ -0,0 +1,112 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDWebImageCompat.h" +#import "SDImageCoder.h" + +typedef NS_ENUM(NSUInteger, SDAnimatedImagePlaybackMode) { + /** + * From first to last frame and stop or next loop. + */ + SDAnimatedImagePlaybackModeNormal = 0, + /** + * From last frame to first frame and stop or next loop. + */ + SDAnimatedImagePlaybackModeReverse, + /** + * From first frame to last frame and reverse again, like reciprocating. + */ + SDAnimatedImagePlaybackModeBounce, + /** + * From last frame to first frame and reverse again, like reversed reciprocating. + */ + SDAnimatedImagePlaybackModeReversedBounce, +}; + +/// A player to control the playback of animated image, which can be used to drive Animated ImageView or any rendering usage, like CALayer/WatchKit/SwiftUI rendering. +@interface SDAnimatedImagePlayer : NSObject + +/// Current playing frame image. This value is KVO Compliance. +@property (nonatomic, readonly, nullable) UIImage *currentFrame; + +/// Current frame index, zero based. This value is KVO Compliance. +@property (nonatomic, readonly) NSUInteger currentFrameIndex; + +/// Current loop count since its latest animating. This value is KVO Compliance. +@property (nonatomic, readonly) NSUInteger currentLoopCount; + +/// Total frame count for animated image rendering. Defaults is animated image's frame count. +/// @note For progressive animation, you can update this value when your provider receive more frames. +@property (nonatomic, assign) NSUInteger totalFrameCount; + +/// Total loop count for animated image rendering. Default is animated image's loop count. +@property (nonatomic, assign) NSUInteger totalLoopCount; + +/// The animation playback rate. Default is 1.0 +/// `1.0` means the normal speed. +/// `0.0` means stopping the animation. +/// `0.0-1.0` means the slow speed. +/// `> 1.0` means the fast speed. +/// `< 0.0` is not supported currently and stop animation. (may support reverse playback in the future) +@property (nonatomic, assign) double playbackRate; + +/// Asynchronous setup animation playback mode. Default mode is SDAnimatedImagePlaybackModeNormal. +@property (nonatomic, assign) SDAnimatedImagePlaybackMode playbackMode; + +/// Provide a max buffer size by bytes. This is used to adjust frame buffer count and can be useful when the decoding cost is expensive (such as Animated WebP software decoding). Default is 0. +/// `0` means automatically adjust by calculating current memory usage. +/// `1` means without any buffer cache, each of frames will be decoded and then be freed after rendering. (Lowest Memory and Highest CPU) +/// `NSUIntegerMax` means cache all the buffer. (Lowest CPU and Highest Memory) +@property (nonatomic, assign) NSUInteger maxBufferSize; + +/// You can specify a runloop mode to let it rendering. +/// Default is NSRunLoopCommonModes on multi-core device, NSDefaultRunLoopMode on single-core device +@property (nonatomic, copy, nonnull) NSRunLoopMode runLoopMode; + +/// Create a player with animated image provider. If the provider's `animatedImageFrameCount` is less than 1, returns nil. +/// The provider can be any protocol implementation, like `SDAnimatedImage`, `SDImageGIFCoder`, etc. +/// @note This provider can represent mutable content, like progressive animated loading. But you need to update the frame count by yourself +/// @param provider The animated provider +- (nullable instancetype)initWithProvider:(nonnull id)provider; + +/// Create a player with animated image provider. If the provider's `animatedImageFrameCount` is less than 1, returns nil. +/// The provider can be any protocol implementation, like `SDAnimatedImage` or `SDImageGIFCoder`, etc. +/// @note This provider can represent mutable content, like progressive animated loading. But you need to update the frame count by yourself +/// @param provider The animated provider ++ (nullable instancetype)playerWithProvider:(nonnull id)provider; + +/// The handler block when current frame and index changed. +@property (nonatomic, copy, nullable) void (^animationFrameHandler)(NSUInteger index, UIImage * _Nonnull frame); + +/// The handler block when one loop count finished. +@property (nonatomic, copy, nullable) void (^animationLoopHandler)(NSUInteger loopCount); + +/// Return the status whether animation is playing. +@property (nonatomic, readonly) BOOL isPlaying; + +/// Start the animation. Or resume the previously paused animation. +- (void)startPlaying; + +/// Pause the animation. Keep the current frame index and loop count. +- (void)pausePlaying; + +/// Stop the animation. Reset the current frame index and loop count. +- (void)stopPlaying; + +/// Seek to the desired frame index and loop count. +/// @note This can be used for advanced control like progressive loading, or skipping specify frames. +/// @param index The frame index +/// @param loopCount The loop count +- (void)seekToFrameAtIndex:(NSUInteger)index loopCount:(NSUInteger)loopCount; + +/// Clear the frame cache buffer. The frame cache buffer size can be controlled by `maxBufferSize`. +/// By default, when stop or pause the animation, the frame buffer is still kept to ready for the next restart +- (void)clearFrameBuffer; + +@end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDAnimatedImageView.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDAnimatedImageView.h index abf4e5d7..f5f541b1 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDAnimatedImageView.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDAnimatedImageView.h @@ -11,17 +11,24 @@ #if SD_UIKIT || SD_MAC #import "SDAnimatedImage.h" +#import "SDAnimatedImagePlayer.h" /** A drop-in replacement for UIImageView/NSImageView, you can use this for animated image rendering. - Call `setImage:` with `UIImage(NSImage)` which conform to `SDAnimatedImage` protocol will start animated image rendering. Call with normal UIImage(NSImage) will back to normal UIImageView(NSImageView) rendering + Call `setImage:` with `UIImage(NSImage)` which conforms to `SDAnimatedImage` protocol will start animated image rendering. Call with normal UIImage(NSImage) will back to normal UIImageView(NSImageView) rendering For UIKit: use `-startAnimating`, `-stopAnimating` to control animating. `isAnimating` to check animation state. For AppKit: use `-setAnimates:` to control animating, `animates` to check animation state. This view is layer-backed. */ @interface SDAnimatedImageView : UIImageView +/** + The internal animation player. + This property is only used for advanced usage, like inspecting/debugging animation status, control progressive loading, complicated animation frame index control, etc. + @warning Pay attention if you directly update the player's property like `totalFrameCount`, `totalLoopCount`, the same property on `SDAnimatedImageView` may not get synced. + */ +@property (nonatomic, strong, readonly, nullable) SDAnimatedImagePlayer *player; /** - Current display frame image. + Current display frame image. This value is KVO Compliance. */ @property (nonatomic, strong, readonly, nullable) UIImage *currentFrame; /** @@ -43,6 +50,19 @@ This class override UIImageView's `animationRepeatCount` property on iOS, use this property as well. */ @property (nonatomic, assign) NSInteger animationRepeatCount; +/** + The animation playback rate. Default is 1.0. + `1.0` means the normal speed. + `0.0` means stopping the animation. + `0.0-1.0` means the slow speed. + `> 1.0` means the fast speed. + `< 0.0` is not supported currently and stop animation. (may support reverse playback in the future) + */ +@property (nonatomic, assign) double playbackRate; + +/// Asynchronous setup animation playback mode. Default mode is SDAnimatedImagePlaybackModeNormal. +@property (nonatomic, assign) SDAnimatedImagePlaybackMode playbackMode; + /** Provide a max buffer size by bytes. This is used to adjust frame buffer count and can be useful when the decoding cost is expensive (such as Animated WebP software decoding). Default is 0. `0` means automatically adjust by calculating current memory usage. @@ -72,13 +92,19 @@ */ @property (nonatomic, assign) BOOL resetFrameIndexWhenStopped; -#if SD_UIKIT +/** + If the image which conforms to `SDAnimatedImage` protocol has more than one frame, set this value to `YES` will automatically + play/stop the animation when the view become visible/invisible. + Default is YES. + */ +@property (nonatomic, assign) BOOL autoPlayAnimatedImage; + /** You can specify a runloop mode to let it rendering. - Default is NSRunLoopCommonModes on multi-core iOS device, NSDefaultRunLoopMode on single-core iOS device + Default is NSRunLoopCommonModes on multi-core device, NSDefaultRunLoopMode on single-core device + @note This is useful for some cases, for example, always specify NSDefaultRunLoopMode, if you want to pause the animation when user scroll (for Mac user, drag the mouse or touchpad) */ @property (nonatomic, copy, nonnull) NSRunLoopMode runLoopMode; -#endif @end #endif diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDDiskCache.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDDiskCache.h index ffc440e5..dc5e1fae 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDDiskCache.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDDiskCache.h @@ -54,6 +54,26 @@ */ - (void)setData:(nullable NSData *)data forKey:(nonnull NSString *)key; +/** + Returns the extended data associated with a given key. + This method may blocks the calling thread until file read finished. + + @param key A string identifying the data. If nil, just return nil. + @return The value associated with key, or nil if no value is associated with key. + */ +- (nullable NSData *)extendedDataForKey:(nonnull NSString *)key; + +/** + Set extended data with a given key. + + @discussion You can set any extended data to exist cache key. Without override the exist disk file data. + on UNIX, the common way for this is to use the Extended file attributes (xattr) + + @param extendedData The extended data (pass nil to remove). + @param key The key with which to associate the value. If nil, this method has no effect. +*/ +- (void)setExtendedData:(nullable NSData *)extendedData forKey:(nonnull NSString *)key; + /** Removes the value of the specified key in the cache. This method may blocks the calling thread until file delete finished. diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h new file mode 100644 index 00000000..900acd76 --- /dev/null +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h @@ -0,0 +1,73 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDWebImageCompat.h" + +/** + These following class are provided to use `UIGraphicsImageRenderer` with polyfill, which allows write cross-platform(AppKit/UIKit) code and avoid runtime version check. + Compared to `UIGraphicsBeginImageContext`, `UIGraphicsImageRenderer` use dynamic bitmap from your draw code to generate CGContext, not always use ARGB8888, which is more performant on RAM usage. + Which means, if you draw CGImage/CIImage which contains grayscale only, the underlaying bitmap context use grayscale, it's managed by system and not a fixed type. (actually, the `kCGContextTypeAutomatic`) + For usage, See more in Apple's documentation: https://developer.apple.com/documentation/uikit/uigraphicsimagerenderer + For UIKit on iOS/tvOS 10+, these method just use the same `UIGraphicsImageRenderer` API. + For others (macOS/watchOS or iOS/tvOS 10-), these method use the `SDImageGraphics.h` to implements the same behavior (but without dynamic bitmap support) +*/ + +typedef void (^SDGraphicsImageDrawingActions)(CGContextRef _Nonnull context); +typedef NS_ENUM(NSInteger, SDGraphicsImageRendererFormatRange) { + SDGraphicsImageRendererFormatRangeUnspecified = -1, + SDGraphicsImageRendererFormatRangeAutomatic = 0, + SDGraphicsImageRendererFormatRangeExtended, + SDGraphicsImageRendererFormatRangeStandard +}; + +/// A set of drawing attributes that represent the configuration of an image renderer context. +@interface SDGraphicsImageRendererFormat : NSObject + +/// The display scale of the image renderer context. +/// The default value is equal to the scale of the main screen. +@property (nonatomic) CGFloat scale; + +/// A Boolean value indicating whether the underlying Core Graphics context has an alpha channel. +/// The default value is NO. +@property (nonatomic) BOOL opaque; + +/// Specifying whether the bitmap context should use extended color. +/// For iOS 12+, the value is from system `preferredRange` property +/// For iOS 10-11, the value is from system `prefersExtendedRange` property +/// For iOS 9-, the value is `.standard` +@property (nonatomic) SDGraphicsImageRendererFormatRange preferredRange; + +/// Init the default format. See each properties's default value. +- (nonnull instancetype)init; + +/// Returns a new format best suited for the main screen’s current configuration. ++ (nonnull instancetype)preferredFormat; + +@end + +/// A graphics renderer for creating Core Graphics-backed images. +@interface SDGraphicsImageRenderer : NSObject + +/// Creates an image renderer for drawing images of a given size. +/// @param size The size of images output from the renderer, specified in points. +/// @return An initialized image renderer. +- (nonnull instancetype)initWithSize:(CGSize)size; + +/// Creates a new image renderer with a given size and format. +/// @param size The size of images output from the renderer, specified in points. +/// @param format A SDGraphicsImageRendererFormat object that encapsulates the format used to create the renderer context. +/// @return An initialized image renderer. +- (nonnull instancetype)initWithSize:(CGSize)size format:(nonnull SDGraphicsImageRendererFormat *)format; + +/// Creates an image by following a set of drawing instructions. +/// @param actions A SDGraphicsImageDrawingActions block that, when invoked by the renderer, executes a set of drawing instructions to create the output image. +/// @note You should not retain or use the context outside the block, it's non-escaping. +/// @return A UIImage object created by the supplied drawing actions. +- (nonnull UIImage *)imageWithActions:(nonnull NS_NOESCAPE SDGraphicsImageDrawingActions)actions; + +@end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageAWebPCoder.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageAWebPCoder.h new file mode 100644 index 00000000..4b585a99 --- /dev/null +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageAWebPCoder.h @@ -0,0 +1,23 @@ +/* + * This file is part of the SDWebImage package. + * (c) Olivier Poitrey + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#import +#import "SDImageIOAnimatedCoder.h" + +/** + This coder is used for Google WebP and Animated WebP(AWebP) image format. + Image/IO provide the WebP decoding support in iOS 14/macOS 11/tvOS 14/watchOS 7+. + @note Currently Image/IO seems does not supports WebP encoding, if you need WebP encoding, use the custom codec below. + @note If you need to support lower firmware version for WebP, you can have a try at https://github.com/SDWebImage/SDWebImageWebPCoder + */ +API_AVAILABLE(ios(14.0), tvos(14.0), macos(11.0), watchos(7.0)) +@interface SDImageAWebPCoder : SDImageIOAnimatedCoder + +@property (nonatomic, class, readonly, nonnull) SDImageAWebPCoder *sharedCoder; + +@end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCache.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCache.h index 688d3fc2..ad3afd53 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCache.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCache.h @@ -40,7 +40,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { */ SDImageCacheAvoidDecodeImage = 1 << 4, /** - * By default, we decode the animated image. This flag can force decode the first frame only and produece the static image. + * By default, we decode the animated image. This flag can force decode the first frame only and produce the static image. */ SDImageCacheDecodeFirstFrameOnly = 1 << 5, /** @@ -49,7 +49,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { SDImageCachePreloadAllFrames = 1 << 6, /** * By default, when you use `SDWebImageContextAnimatedImageClass` context option (like using `SDAnimatedImageView` which designed to use `SDAnimatedImage`), we may still use `UIImage` when the memory cache hit, or image decoder is not available, to behave as a fallback solution. - * Using this option, can ensure we always produce image with your provided class. If failed, a error with code `SDWebImageErrorBadImageData` will been used. + * Using this option, can ensure we always produce image with your provided class. If failed, an error with code `SDWebImageErrorBadImageData` will be used. * Note this options is not compatible with `SDImageCacheDecodeFirstFrameOnly`, which always produce a UIImage/NSImage. */ SDImageCacheMatchAnimatedImageClass = 1 << 7, @@ -65,7 +65,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { /** * Cache Config object - storing all kind of settings. - * The property is copy so change of currrent config will not accidentally affect other cache's config. + * The property is copy so change of current config will not accidentally affect other cache's config. */ @property (nonatomic, copy, nonnull, readonly) SDImageCacheConfig *config; @@ -103,8 +103,18 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { */ @property (nonatomic, class, readonly, nonnull) SDImageCache *sharedImageCache; +/** + * Control the default disk cache directory. This will effect all the SDImageCache instance created after modification, even for shared image cache. + * This can be used to share the same disk cache with the App and App Extension (Today/Notification Widget) using `- [NSFileManager.containerURLForSecurityApplicationGroupIdentifier:]`. + * @note If you pass nil, the value will be reset to `~/Library/Caches/com.hackemist.SDImageCache`. + * @note We still preserve the `namespace` arg, which means, if you change this property into `/path/to/use`, the `SDImageCache.sharedImageCache.diskCachePath` should be `/path/to/use/default` because shared image cache use `default` as namespace. + * Defaults to nil. + */ +@property (nonatomic, class, readwrite, null_resettable) NSString *defaultDiskCacheDirectory; + /** * Init a new cache store with a specific namespace + * The final disk cache directory should looks like ($directory/$namespace). And the default config of shared cache, should result in (~/Library/Caches/com.hackemist.SDImageCache/default/) * * @param ns The namespace to use for this cache store */ @@ -112,7 +122,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { /** * Init a new cache store with a specific namespace and directory. - * If you don't provide the disk cache directory, we will use the User Cache directory with prefix (~/Library/Caches/com.hackemist.SDImageCache/). + * The final disk cache directory should looks like ($directory/$namespace). And the default config of shared cache, should result in (~/Library/Caches/com.hackemist.SDImageCache/default/) * * @param ns The namespace to use for this cache store * @param directory Directory to cache disk images in @@ -121,7 +131,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { diskCacheDirectory:(nullable NSString *)directory; /** - * Init a new cache store with a specific namespace, directory and file manager + * Init a new cache store with a specific namespace, directory and config. * The final disk cache directory should looks like ($directory/$namespace). And the default config of shared cache, should result in (~/Library/Caches/com.hackemist.SDImageCache/default/) * * @param ns The namespace to use for this cache store @@ -162,6 +172,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { * @param key The unique image cache key, usually it's image absolute URL * @param toDisk Store the image to disk cache if YES. If NO, the completion block is called synchronously * @param completionBlock A block executed after the operation is finished + * @note If no image data is provided and encode to disk, we will try to detect the image format (using either `sd_imageFormat` or `SDAnimatedImage` protocol method) and animation status, to choose the best matched format, including GIF, JPEG or PNG. */ - (void)storeImage:(nullable UIImage *)image forKey:(nullable NSString *)key @@ -178,6 +189,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { * @param key The unique image cache key, usually it's image absolute URL * @param toDisk Store the image to disk cache if YES. If NO, the completion block is called synchronously * @param completionBlock A block executed after the operation is finished + * @note If no image data is provided and encode to disk, we will try to detect the image format (using either `sd_imageFormat` or `SDAnimatedImage` protocol method) and animation status, to choose the best matched format, including GIF, JPEG or PNG. */ - (void)storeImage:(nullable UIImage *)image imageData:(nullable NSData *)imageData @@ -225,8 +237,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { #pragma mark - Query and Retrieve Ops /** - * Asynchronously queries the cache with operation and call the completion when done. - * Query the image data for the given key synchronously. + * Synchronously query the image data for the given key in disk cache. You can decode the image data to image after loaded. * * @param key The unique key used to store the wanted image * @return The image data for the given key, or nil if not found. @@ -234,9 +245,18 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { - (nullable NSData *)diskImageDataForKey:(nullable NSString *)key; /** - * Operation that queries the cache asynchronously and call the completion when done. + * Asynchronously query the image data for the given key in disk cache. You can decode the image data to image after loaded. + * + * @param key The unique key used to store the wanted image + * @param completionBlock the block to be executed when the query is done. + * @note the completion block will be always executed on the main queue + */ +- (void)diskImageDataQueryForKey:(nullable NSString *)key completion:(nullable SDImageCacheQueryDataCompletionBlock)completionBlock; + +/** + * Asynchronously queries the cache with operation and call the completion when done. * - * @param key The unique key used to store the wanted image + * @param key The unique key used to store the wanted image. If you want transformed or thumbnail image, calculate the key with `SDTransformedKeyForKey`, `SDThumbnailedKeyForKey`, or generate the cache key from url with `cacheKeyForURL:context:`. * @param doneBlock The completion block. Will not get called if the operation is cancelled * * @return a NSOperation instance containing the cache op @@ -246,7 +266,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { /** * Asynchronously queries the cache with operation and call the completion when done. * - * @param key The unique key used to store the wanted image + * @param key The unique key used to store the wanted image. If you want transformed or thumbnail image, calculate the key with `SDTransformedKeyForKey`, `SDThumbnailedKeyForKey`, or generate the cache key from url with `cacheKeyForURL:context:`. * @param options A mask to specify options to use for this cache query * @param doneBlock The completion block. Will not get called if the operation is cancelled * @@ -257,7 +277,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { /** * Asynchronously queries the cache with operation and call the completion when done. * - * @param key The unique key used to store the wanted image + * @param key The unique key used to store the wanted image. If you want transformed or thumbnail image, calculate the key with `SDTransformedKeyForKey`, `SDThumbnailedKeyForKey`, or generate the cache key from url with `cacheKeyForURL:context:`. * @param options A mask to specify options to use for this cache query * @param context A context contains different options to perform specify changes or processes, see `SDWebImageContextOption`. This hold the extra objects which `options` enum can not hold. * @param doneBlock The completion block. Will not get called if the operation is cancelled @@ -266,6 +286,19 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { */ - (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context done:(nullable SDImageCacheQueryCompletionBlock)doneBlock; +/** + * Asynchronously queries the cache with operation and call the completion when done. + * + * @param key The unique key used to store the wanted image. If you want transformed or thumbnail image, calculate the key with `SDTransformedKeyForKey`, `SDThumbnailedKeyForKey`, or generate the cache key from url with `cacheKeyForURL:context:`. + * @param options A mask to specify options to use for this cache query + * @param context A context contains different options to perform specify changes or processes, see `SDWebImageContextOption`. This hold the extra objects which `options` enum can not hold. + * @param queryCacheType Specify where to query the cache from. By default we use `.all`, which means both memory cache and disk cache. You can choose to query memory only or disk only as well. Pass `.none` is invalid and callback with nil immediately. + * @param doneBlock The completion block. Will not get called if the operation is cancelled + * + * @return a NSOperation instance containing the cache op + */ +- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context cacheType:(SDImageCacheType)queryCacheType done:(nullable SDImageCacheQueryCompletionBlock)doneBlock; + /** * Synchronously query the memory cache. * @@ -282,6 +315,16 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { */ - (nullable UIImage *)imageFromDiskCacheForKey:(nullable NSString *)key; +/** + * Synchronously query the disk cache. With the options and context which may effect the image generation. (Such as transformer, animated image, thumbnail, etc) + * + * @param key The unique key used to store the image + * @param options A mask to specify options to use for this cache query + * @param context A context contains different options to perform specify changes or processes, see `SDWebImageContextOption`. This hold the extra objects which `options` enum can not hold. + * @return The image for the given key, or nil if not found. + */ +- (nullable UIImage *)imageFromDiskCacheForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context; + /** * Synchronously query the cache (memory and or disk) after checking the memory cache. * @@ -290,6 +333,16 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) { */ - (nullable UIImage *)imageFromCacheForKey:(nullable NSString *)key; +/** + * Synchronously query the cache (memory and or disk) after checking the memory cache. With the options and context which may effect the image generation. (Such as transformer, animated image, thumbnail, etc) + * + * @param key The unique key used to store the image + * @param options A mask to specify options to use for this cache query + * @param context A context contains different options to perform specify changes or processes, see `SDWebImageContextOption`. This hold the extra objects which `options` enum can not hold. + * @return The image for the given key, or nil if not found. + */ +- (nullable UIImage *)imageFromCacheForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context; + #pragma mark - Remove Ops /** diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCacheConfig.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCacheConfig.h index 460fd06b..4d6e79b0 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCacheConfig.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCacheConfig.h @@ -12,13 +12,21 @@ /// Image Cache Expire Type typedef NS_ENUM(NSUInteger, SDImageCacheConfigExpireType) { /** - * When the image is accessed it will update this value + * When the image cache is accessed it will update this value */ SDImageCacheConfigExpireTypeAccessDate, /** - * The image was obtained from the disk cache (Default) + * When the image cache is created or modified it will update this value (Default) */ - SDImageCacheConfigExpireTypeModificationDate + SDImageCacheConfigExpireTypeModificationDate, + /** + * When the image cache is created it will update this value + */ + SDImageCacheConfigExpireTypeCreationDate, + /** + * When the image cache is created, modified, renamed, file attribute updated (like permission, xattr) it will update this value + */ + SDImageCacheConfigExpireTypeChangeDate, }; /** @@ -49,7 +57,7 @@ typedef NS_ENUM(NSUInteger, SDImageCacheConfigExpireType) { /* * The option to control weak memory cache for images. When enable, `SDImageCache`'s memory cache will use a weak maptable to store the image at the same time when it stored to memory, and get removed at the same time. * However when memory warning is triggered, since the weak maptable does not hold a strong reference to image instance, even when the memory cache itself is purged, some images which are held strongly by UIImageViews or other live instances can be recovered again, to avoid later re-query from disk cache or network. This may be helpful for the case, for example, when app enter background and memory is purged, cause cell flashing after re-enter foreground. - * Defautls to YES. You can change this option dynamically. + * Defaults to YES. You can change this option dynamically. */ @property (assign, nonatomic) BOOL shouldUseWeakMemoryCache; @@ -107,7 +115,7 @@ typedef NS_ENUM(NSUInteger, SDImageCacheConfigExpireType) { /** * The custom file manager for disk cache. Pass nil to let disk cache choose the proper file manager. * Defaults to nil. - * @note This value does not support dynamic changes. Which means further modification on this value after cache initlized has no effect. + * @note This value does not support dynamic changes. Which means further modification on this value after cache initialized has no effect. * @note Since `NSFileManager` does not support `NSCopying`. We just pass this by reference during copying. So it's not recommend to set this value on `defaultCacheConfig`. */ @property (strong, nonatomic, nullable) NSFileManager *fileManager; @@ -115,14 +123,14 @@ typedef NS_ENUM(NSUInteger, SDImageCacheConfigExpireType) { /** * The custom memory cache class. Provided class instance must conform to `SDMemoryCache` protocol to allow usage. * Defaults to built-in `SDMemoryCache` class. - * @note This value does not support dynamic changes. Which means further modification on this value after cache initlized has no effect. + * @note This value does not support dynamic changes. Which means further modification on this value after cache initialized has no effect. */ @property (assign, nonatomic, nonnull) Class memoryCacheClass; /** * The custom disk cache class. Provided class instance must conform to `SDDiskCache` protocol to allow usage. * Defaults to built-in `SDDiskCache` class. - * @note This value does not support dynamic changes. Which means further modification on this value after cache initlized has no effect. + * @note This value does not support dynamic changes. Which means further modification on this value after cache initialized has no effect. */ @property (assign ,nonatomic, nonnull) Class diskCacheClass; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCacheDefine.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCacheDefine.h index be4e0211..48f7b5ca 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCacheDefine.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCacheDefine.h @@ -36,6 +36,7 @@ typedef NS_ENUM(NSInteger, SDImageCacheType) { }; typedef void(^SDImageCacheCheckCompletionBlock)(BOOL isInCache); +typedef void(^SDImageCacheQueryDataCompletionBlock)(NSData * _Nullable data); typedef void(^SDImageCacheCalculateSizeBlock)(NSUInteger fileCount, NSUInteger totalSize); typedef NSString * _Nullable (^SDImageCacheAdditionalCachePathBlock)(NSString * _Nonnull key); typedef void(^SDImageCacheQueryCompletionBlock)(UIImage * _Nullable image, NSData * _Nullable data, SDImageCacheType cacheType); @@ -63,7 +64,7 @@ FOUNDATION_EXPORT UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonn @required /** Query the cached image from image cache for given key. The operation can be used to cancel the query. - If image is cached in memory, completion is called synchronously, else aynchronously and depends on the options arg (See `SDWebImageQueryDiskSync`) + If image is cached in memory, completion is called synchronously, else asynchronously and depends on the options arg (See `SDWebImageQueryDiskSync`) @param key The image cache key @param options A mask to specify options to use for this query @@ -77,7 +78,24 @@ FOUNDATION_EXPORT UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonn completion:(nullable SDImageCacheQueryCompletionBlock)completionBlock; /** - Store the image into image cache for the given key. If cache type is memory only, completion is called synchronously, else aynchronously. + Query the cached image from image cache for given key. The operation can be used to cancel the query. + If image is cached in memory, completion is called synchronously, else asynchronously and depends on the options arg (See `SDWebImageQueryDiskSync`) + + @param key The image cache key + @param options A mask to specify options to use for this query + @param context A context contains different options to perform specify changes or processes, see `SDWebImageContextOption`. This hold the extra objects which `options` enum can not hold. + @param cacheType Specify where to query the cache from. By default we use `.all`, which means both memory cache and disk cache. You can choose to query memory only or disk only as well. Pass `.none` is invalid and callback with nil immediately. + @param completionBlock The completion block. Will not get called if the operation is cancelled + @return The operation for this query + */ +- (nullable id)queryImageForKey:(nullable NSString *)key + options:(SDWebImageOptions)options + context:(nullable SDWebImageContext *)context + cacheType:(SDImageCacheType)cacheType + completion:(nullable SDImageCacheQueryCompletionBlock)completionBlock; + +/** + Store the image into image cache for the given key. If cache type is memory only, completion is called synchronously, else asynchronously. @param image The image to store @param imageData The image data to be used for disk storage @@ -92,7 +110,7 @@ FOUNDATION_EXPORT UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonn completion:(nullable SDWebImageNoParamsBlock)completionBlock; /** - Remove the image from image cache for the given key. If cache type is memory only, completion is called synchronously, else aynchronously. + Remove the image from image cache for the given key. If cache type is memory only, completion is called synchronously, else asynchronously. @param key The image cache key @param cacheType The image remove op cache type @@ -103,7 +121,7 @@ FOUNDATION_EXPORT UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonn completion:(nullable SDWebImageNoParamsBlock)completionBlock; /** - Check if image cache contains the image for the given key (does not load the image). If image is cached in memory, completion is called synchronously, else aynchronously. + Check if image cache contains the image for the given key (does not load the image). If image is cached in memory, completion is called synchronously, else asynchronously. @param key The image cache key @param cacheType The image contains op cache type @@ -114,7 +132,7 @@ FOUNDATION_EXPORT UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonn completion:(nullable SDImageCacheContainsCompletionBlock)completionBlock; /** - Clear all the cached images for image cache. If cache type is memory only, completion is called synchronously, else aynchronously. + Clear all the cached images for image cache. If cache type is memory only, completion is called synchronously, else asynchronously. @param cacheType The image clear op cache type @param completionBlock A block executed after the operation is finished diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCoder.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCoder.h index 3b2049e5..53b52e5d 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCoder.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCoder.h @@ -21,12 +21,30 @@ typedef NSMutableDictionary SDImageCoderMutableOptions; @note works for `SDImageCoder`. */ FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderDecodeFirstFrameOnly; + /** A CGFloat value which is greater than or equal to 1.0. This value specify the image scale factor for decoding. If not provide, use 1.0. (NSNumber) @note works for `SDImageCoder`, `SDProgressiveImageCoder`, `SDAnimatedImageCoder`. */ FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderDecodeScaleFactor; +/** + A Boolean value indicating whether to keep the original aspect ratio when generating thumbnail images (or bitmap images from vector format). + Defaults to YES. + @note works for `SDImageCoder`, `SDProgressiveImageCoder`, `SDAnimatedImageCoder`. + */ +FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderDecodePreserveAspectRatio; + +/** + A CGSize value indicating whether or not to generate the thumbnail images (or bitmap images from vector format). When this value is provided, the decoder will generate a thumbnail image which pixel size is smaller than or equal to (depends the `.preserveAspectRatio`) the value size. + Defaults to CGSizeZero, which means no thumbnail generation at all. + @note Supports for animated image as well. + @note When you pass `.preserveAspectRatio == NO`, the thumbnail image is stretched to match each dimension. When `.preserveAspectRatio == YES`, the thumbnail image's width is limited to pixel size's width, the thumbnail image's height is limited to pixel size's height. For common cases, you can just pass a square size to limit both. + @note works for `SDImageCoder`, `SDProgressiveImageCoder`, `SDAnimatedImageCoder`. + */ +FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderDecodeThumbnailPixelSize; + + // These options are for image encoding /** A Boolean value indicating whether to encode the first frame only for animated image during encoding. (NSNumber). If not provide, encode animated image if need. @@ -39,13 +57,43 @@ FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeFirstFrame */ FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeCompressionQuality; +/** + A UIColor(NSColor) value to used for non-alpha image encoding when the input image has alpha channel, the background color will be used to compose the alpha one. If not provide, use white color. + @note works for `SDImageCoder` + */ +FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeBackgroundColor; + +/** + A CGSize value indicating the max image resolution in pixels during encoding. For vector image, this also effect the output vector data information about width and height. The encoder will not generate the encoded image larger than this limit. Note it always use the aspect ratio of input image.. + Defaults to CGSizeZero, which means no max size limit at all. + @note Supports for animated image as well. + @note The output image's width is limited to pixel size's width, the output image's height is limited to pixel size's height. For common cases, you can just pass a square size to limit both. + @note works for `SDImageCoder` + */ +FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeMaxPixelSize; + +/** + A NSUInteger value specify the max output data bytes size after encoding. Some lossy format like JPEG/HEIF supports the hint for codec to automatically reduce the quality and match the file size you want. Note this option will override the `SDImageCoderEncodeCompressionQuality`, because now the quality is decided by the encoder. (NSNumber) + @note This is a hint, no guarantee for output size because of compression algorithm limit. And this options does not works for vector images. + @note works for `SDImageCoder` + */ +FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeMaxFileSize; + +/** + A Boolean value indicating the encoding format should contains a thumbnail image into the output data. Only some of image format (like JPEG/HEIF/AVIF) support this behavior. The embed thumbnail will be used during next time thumbnail decoding (provided `.thumbnailPixelSize`), which is faster than full image thumbnail decoding. (NSNumber) + Defaults to NO, which does not embed any thumbnail. + @note The thumbnail image's pixel size is not defined, the encoder can choose the proper pixel size which is suitable for encoding quality. + @note works for `SDImageCoder` + */ +FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeEmbedThumbnail; + /** A SDWebImageContext object which hold the original context options from top-level API. (SDWebImageContext) This option is ignored for all built-in coders and take no effect. - But this may be useful for some custom coders, because some business logic may dependent on things other than image or image data inforamtion only. + But this may be useful for some custom coders, because some business logic may dependent on things other than image or image data information only. See `SDWebImageContext` for more detailed information. */ -FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderWebImageContext; +FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderWebImageContext API_DEPRECATED("The coder component will be seperated from Core subspec in the future. Update your code to not rely on this context option.", macos(10.10, API_TO_BE_DEPRECATED), ios(8.0, API_TO_BE_DEPRECATED), tvos(9.0, API_TO_BE_DEPRECATED), watchos(2.0, API_TO_BE_DEPRECATED)); #pragma mark - Coder /** diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCoderHelper.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCoderHelper.h index dcf1da2b..77b9d779 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCoderHelper.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageCoderHelper.h @@ -73,6 +73,16 @@ */ + (CGImageRef _Nullable)CGImageCreateDecoded:(_Nonnull CGImageRef)cgImage orientation:(CGImagePropertyOrientation)orientation CF_RETURNS_RETAINED; +/** + Create a scaled CGImage by the provided CGImage and size. This follows The Create Rule and you are response to call release after usage. + It will detect whether the image size matching the scale size, if not, stretch the image to the target size. + + @param cgImage The CGImage + @param size The scale size in pixel. + @return A new created scaled image + */ ++ (CGImageRef _Nullable)CGImageCreateScaled:(_Nonnull CGImageRef)cgImage size:(CGSize)size CF_RETURNS_RETAINED; + /** Return the decoded image by the provided image. This one unlike `CGImageCreateDecoded:`, will not decode the image which contains alpha channel or animated image @param image The image to be decoded @@ -81,7 +91,8 @@ + (UIImage * _Nullable)decodedImageWithImage:(UIImage * _Nullable)image; /** - Return the decoded and probably scaled down image by the provided image. If the image is large than the limit size, will try to scale down. Or just works as `decodedImageWithImage:` + Return the decoded and probably scaled down image by the provided image. If the image pixels bytes size large than the limit bytes, will try to scale down. Or just works as `decodedImageWithImage:`, never scale up. + @warning You should not pass too small bytes, the suggestion value should be larger than 1MB. Even we use Tile Decoding to avoid OOM, however, small bytes will consume much more CPU time because we need to iterate more times to draw each tile. @param image The image to be decoded and scaled down @param bytes The limit bytes size. Provide 0 to use the build-in limit. @@ -89,6 +100,12 @@ */ + (UIImage * _Nullable)decodedAndScaledDownImageWithImage:(UIImage * _Nullable)image limitBytes:(NSUInteger)bytes; +/** + Control the default limit bytes to scale down largest images. + This value must be larger than 4 Bytes (at least 1x1 pixel). Defaults to 60MB on iOS/tvOS, 90MB on macOS, 30MB on watchOS. + */ +@property (class, readwrite) NSUInteger defaultScaleDownLimitBytes; + #if SD_UIKIT || SD_WATCH /** Convert an EXIF image orientation to an iOS one. diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageGraphics.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageGraphics.h index 67019c5b..131d6850 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageGraphics.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageGraphics.h @@ -13,6 +13,7 @@ These following graphics context method are provided to easily write cross-platform(AppKit/UIKit) code. For UIKit, these methods just call the same method in `UIGraphics.h`. See the documentation for usage. For AppKit, these methods use `NSGraphicsContext` to create image context and match the behavior like UIKit. + @note If you don't care bitmap format (ARGB8888) and just draw image, use `SDGraphicsImageRenderer` instead. It's more performant on RAM usage.` */ /// Returns the current graphics context. diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageHEICCoder.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageHEICCoder.h index 3b6036d9..f7dd6612 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageHEICCoder.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageHEICCoder.h @@ -17,6 +17,7 @@ @note This coder is not in the default coder list for now, since HEIC animated image is really rare, and Apple's implementation still contains performance issues. You can enable if you need this. @note If you need to support lower firmware version for HEIF, you can have a try at https://github.com/SDWebImage/SDWebImageHEIFCoder */ +API_AVAILABLE(ios(13.0), tvos(13.0), macos(10.15), watchos(6.0)) @interface SDImageHEICCoder : SDImageIOAnimatedCoder @property (nonatomic, class, readonly, nonnull) SDImageHEICCoder *sharedCoder; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h index 4d651e8d..3f4149a4 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h @@ -12,7 +12,7 @@ /** This is the abstract class for all animated coder, which use the Image/IO API. You can not use this directly as real coders. A exception will be raised if you use this class. - All of the properties need the subclass to implment and works as expceted. + All of the properties need the subclass to implement and works as expected. For Image/IO, See Apple's documentation: https://developer.apple.com/documentation/imageio */ @interface SDImageIOAnimatedCoder : NSObject @@ -35,7 +35,7 @@ */ @property (class, readonly, nonnull) NSString *dictionaryProperty; /** - The image unclamped deply time property key used in Image/IO API. Such as `kCGImagePropertyGIFUnclampedDelayTime` + The image unclamped delay time property key used in Image/IO API. Such as `kCGImagePropertyGIFUnclampedDelayTime` @note Subclass override. */ @property (class, readonly, nonnull) NSString *unclampedDelayTimeProperty; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageLoader.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageLoader.h index 941268c4..25f1af40 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageLoader.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageLoader.h @@ -18,7 +18,7 @@ typedef void(^SDImageLoaderCompletedBlock)(UIImage * _Nullable image, NSData * _ /** A `UIImage` instance from `SDWebImageManager` when you specify `SDWebImageRefreshCached` and image cache hit. This can be a hint for image loader to load the image from network and refresh the image from remote location if needed. If the image from remote location does not change, you should call the completion with `SDWebImageErrorCacheNotModified` error. (UIImage) - @note If you don't implement `SDWebImageRefreshCached` support, you do not need to care abot this context option. + @note If you don't implement `SDWebImageRefreshCached` support, you do not need to care about this context option. */ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextLoaderCachedImage; @@ -53,22 +53,38 @@ FOUNDATION_EXPORT UIImage * _Nullable SDImageLoaderDecodeProgressiveImageData(NS #pragma mark - SDImageLoader /** - This is the protocol to specify custom image load process. You can create your own class to conform this protocol and use as a image loader to load image from network or any avaiable remote resources defined by yourself. + This is the protocol to specify custom image load process. You can create your own class to conform this protocol and use as a image loader to load image from network or any available remote resources defined by yourself. If you want to implement custom loader for image download from network or local file, you just need to concentrate on image data download only. After the download finish, call `SDImageLoaderDecodeImageData` or `SDImageLoaderDecodeProgressiveImageData` to use the built-in decoding process and produce image (Remember to call in the global queue). And finally callback the completion block. - If you directlly get the image instance using some third-party SDKs, such as image directlly from Photos framework. You can process the image data and image instance by yourself without that built-in decoding process. And finally callback the completion block. + If you directly get the image instance using some third-party SDKs, such as image directly from Photos framework. You can process the image data and image instance by yourself without that built-in decoding process. And finally callback the completion block. @note It's your responsibility to load the image in the desired global queue(to avoid block main queue). We do not dispatch these method call in a global queue but just from the call queue (For `SDWebImageManager`, it typically call from the main queue). */ @protocol SDImageLoader +@required /** Whether current image loader supports to load the provide image URL. - This will be checked everytime a new image request come for loader. If this return NO, we will mark this image load as failed. If return YES, we will start to call `requestImageWithURL:options:context:progress:completed:`. + This will be checked every time a new image request come for loader. If this return NO, we will mark this image load as failed. If return YES, we will start to call `requestImageWithURL:options:context:progress:completed:`. @param url The image URL to be loaded. @return YES to continue download, NO to stop download. */ -- (BOOL)canRequestImageForURL:(nullable NSURL *)url; +- (BOOL)canRequestImageForURL:(nullable NSURL *)url API_DEPRECATED("Use canRequestImageForURL:options:context: instead", macos(10.10, API_TO_BE_DEPRECATED), ios(8.0, API_TO_BE_DEPRECATED), tvos(9.0, API_TO_BE_DEPRECATED), watchos(2.0, API_TO_BE_DEPRECATED)); +@optional +/** + Whether current image loader supports to load the provide image URL, with associated options and context. + This will be checked every time a new image request come for loader. If this return NO, we will mark this image load as failed. If return YES, we will start to call `requestImageWithURL:options:context:progress:completed:`. + + @param url The image URL to be loaded. + @param options A mask to specify options to use for this request + @param context A context contains different options to perform specify changes or processes, see `SDWebImageContextOption`. This hold the extra objects which `options` enum can not hold. + @return YES to continue download, NO to stop download. + */ +- (BOOL)canRequestImageForURL:(nullable NSURL *)url + options:(SDWebImageOptions)options + context:(nullable SDWebImageContext *)context; + +@required /** Load the image and image data with the given URL and return the image data. You're responsible for producing the image instance. @@ -88,7 +104,7 @@ FOUNDATION_EXPORT UIImage * _Nullable SDImageLoaderDecodeProgressiveImageData(NS /** - Whether the error from image loader should be marked indded un-recoverable or not. + Whether the error from image loader should be marked indeed un-recoverable or not. If this return YES, failed URL which does not using `SDWebImageRetryFailed` will be blocked into black list. Else not. @param url The URL represent the image. Note this may not be a HTTP URL @@ -96,6 +112,22 @@ FOUNDATION_EXPORT UIImage * _Nullable SDImageLoaderDecodeProgressiveImageData(NS @return Whether to block this url or not. Return YES to mark this URL as failed. */ - (BOOL)shouldBlockFailedURLWithURL:(nonnull NSURL *)url - error:(nonnull NSError *)error; + error:(nonnull NSError *)error API_DEPRECATED("Use shouldBlockFailedURLWithURL:error:options:context: instead", macos(10.10, API_TO_BE_DEPRECATED), ios(8.0, API_TO_BE_DEPRECATED), tvos(9.0, API_TO_BE_DEPRECATED), watchos(2.0, API_TO_BE_DEPRECATED)); + +@optional +/** + Whether the error from image loader should be marked indeed un-recoverable or not, with associated options and context. + If this return YES, failed URL which does not using `SDWebImageRetryFailed` will be blocked into black list. Else not. + + @param url The URL represent the image. Note this may not be a HTTP URL + @param error The URL's loading error, from previous `requestImageWithURL:options:context:progress:completed:` completedBlock's error. + @param options A mask to specify options to use for this request + @param context A context contains different options to perform specify changes or processes, see `SDWebImageContextOption`. This hold the extra objects which `options` enum can not hold. + @return Whether to block this url or not. Return YES to mark this URL as failed. + */ +- (BOOL)shouldBlockFailedURLWithURL:(nonnull NSURL *)url + error:(nonnull NSError *)error + options:(SDWebImageOptions)options + context:(nullable SDWebImageContext *)context; @end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageLoadersManager.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageLoadersManager.h index d80887ee..9886f459 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageLoadersManager.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageLoadersManager.h @@ -31,7 +31,7 @@ - (void)addLoader:(nonnull id)loader; /** - Remove a image loader in the loaders array. + Remove an image loader in the loaders array. @param loader loader */ diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageTransformer.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageTransformer.h index f165cce5..3031bfe0 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageTransformer.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDImageTransformer.h @@ -18,6 +18,16 @@ */ FOUNDATION_EXPORT NSString * _Nullable SDTransformedKeyForKey(NSString * _Nullable key, NSString * _Nonnull transformerKey); +/** + Return the thumbnailed cache key which applied with specify thumbnailSize and preserveAspectRatio control. + @param key The original cache key + @param thumbnailPixelSize The thumbnail pixel size + @param preserveAspectRatio The preserve aspect ratio option + @return The thumbnailed cache key + @note If you have both transformer and thumbnail applied for image, call `SDThumbnailedKeyForKey` firstly and then with `SDTransformedKeyForKey`.` + */ +FOUNDATION_EXPORT NSString * _Nullable SDThumbnailedKeyForKey(NSString * _Nullable key, CGSize thumbnailPixelSize, BOOL preserveAspectRatio); + /** A transformer protocol to transform the image load from cache or from download. You can provide transformer to cache and manager (Through the `transformer` property or context option `SDWebImageContextImageTransformer`). @@ -38,10 +48,10 @@ FOUNDATION_EXPORT NSString * _Nullable SDTransformedKeyForKey(NSString * _Nullab Transform the image to another image. @param image The image to be transformed - @param key The cache key associated to the image + @param key The cache key associated to the image. This arg is a hint for image source, not always useful and should be nullable. In the future we will remove this arg. @return The transformed image, or nil if transform failed */ -- (nullable UIImage *)transformedImageWithImage:(nonnull UIImage *)image forKey:(nonnull NSString *)key; +- (nullable UIImage *)transformedImageWithImage:(nonnull UIImage *)image forKey:(nonnull NSString *)key API_DEPRECATED("The key arg will be removed in the future. Update your code and don't rely on that.", macos(10.10, API_TO_BE_DEPRECATED), ios(8.0, API_TO_BE_DEPRECATED), tvos(9.0, API_TO_BE_DEPRECATED), watchos(2.0, API_TO_BE_DEPRECATED)); @end @@ -49,7 +59,7 @@ FOUNDATION_EXPORT NSString * _Nullable SDTransformedKeyForKey(NSString * _Nullab /** Pipeline transformer. Which you can bind multiple transformers together to let the image to be transformed one by one in order and generate the final image. - @note Because transformers are lightweight, if you want to append or arrange transfomers, create another pipeline transformer instead. This class is considered as immutable. + @note Because transformers are lightweight, if you want to append or arrange transformers, create another pipeline transformer instead. This class is considered as immutable. */ @interface SDImagePipelineTransformer : NSObject diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDMemoryCache.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDMemoryCache.h index 8b415816..43c39e84 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDMemoryCache.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDMemoryCache.h @@ -15,6 +15,7 @@ @protocol SDMemoryCache @required + /** Create a new memory cache instance with the specify cache config. You can check `maxMemoryCost` and `maxMemoryCount` used for memory cache. @@ -25,7 +26,7 @@ /** Returns the value associated with a given key. - + @param key An object identifying the value. If nil, just return nil. @return The value associated with key, or nil if no value is associated with key. */ @@ -33,7 +34,7 @@ /** Sets the value of the specified key in the cache (0 cost). - + @param object The object to be stored in the cache. If nil, it calls `removeObjectForKey:`. @param key The key with which to associate the value. If nil, this method has no effect. @discussion Unlike an NSMutableDictionary object, a cache does not copy the key @@ -44,7 +45,7 @@ /** Sets the value of the specified key in the cache, and associates the key-value pair with the specified cost. - + @param object The object to store in the cache. If nil, it calls `removeObjectForKey`. @param key The key with which to associate the value. If nil, this method has no effect. @param cost The cost with which to associate the key-value pair. @@ -55,7 +56,7 @@ /** Removes the value of the specified key in the cache. - + @param key The key identifying the value to be removed. If nil, this method has no effect. */ - (void)removeObjectForKey:(nonnull id)key; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImage.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImage.h index 7dfe22f2..0e568003 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImage.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImage.h @@ -9,17 +9,13 @@ #import -#if SD_UIKIT -#import -#endif - -//! Project version number for WebImage. -FOUNDATION_EXPORT double WebImageVersionNumber; +//! Project version number for SDWebImage. +FOUNDATION_EXPORT double SDWebImageVersionNumber; -//! Project version string for WebImage. -FOUNDATION_EXPORT const unsigned char WebImageVersionString[]; +//! Project version string for SDWebImage. +FOUNDATION_EXPORT const unsigned char SDWebImageVersionString[]; -// In this header, you should import all the public headers of your framework using statements like #import +// In this header, you should import all the public headers of your framework using statements like #import #import #import @@ -36,6 +32,8 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[]; #import #import #import +#import +#import #import #import #import @@ -44,6 +42,7 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[]; #import #import #import +#import #import #import #import @@ -53,6 +52,7 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[]; #import #import #import +#import #import #import #import @@ -61,6 +61,7 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[]; #import #import #import +#import #import #import #import @@ -69,6 +70,7 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[]; #import #import #import +#import // Mac #if __has_include() diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h index 84c92a37..3c271b1f 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h @@ -17,6 +17,10 @@ typedef NSData * _Nullable(^SDWebImageCacheSerializerBlock)(UIImage * _Nonnull i */ @protocol SDWebImageCacheSerializer +/// Provide the image data associated to the image and store to disk cache +/// @param image The loaded image +/// @param data The original loaded image data +/// @param imageURL The image URL - (nullable NSData *)cacheDataWithImage:(nonnull UIImage *)image originalData:(nullable NSData *)data imageURL:(nullable NSURL *)imageURL; @end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDefine.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDefine.h index 0c7a120f..43df0464 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDefine.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDefine.h @@ -28,7 +28,7 @@ FOUNDATION_EXPORT CGFloat SDImageScaleFactorForKey(NSString * _Nullable key); /** Scale the image with the scale factor for the specify key. If no need to scale, return the original image. This works for `UIImage`(UIKit) or `NSImage`(AppKit). And this function also preserve the associated value in `UIImage+Metadata.h`. - @note This is actually a convenience function, which firstlly call `SDImageScaleFactorForKey` and then call `SDScaledImageForScaleFactor`, kept for backward compatibility. + @note This is actually a convenience function, which firstly call `SDImageScaleFactorForKey` and then call `SDScaledImageForScaleFactor`, kept for backward compatibility. @param key The image cache key @param image The image @@ -122,9 +122,12 @@ typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) { SDWebImageAvoidAutoSetImage = 1 << 10, /** - * By default, images are decoded respecting their original size. On iOS, this flag will scale down the - * images to a size compatible with the constrained memory of devices. - * This flag take no effect if `SDWebImageAvoidDecodeImage` is set. And it will be ignored if `SDWebImageProgressiveLoad` is set. + * By default, images are decoded respecting their original size. + * This flag will scale down the images to a size compatible with the constrained memory of devices. + * To control the limit memory bytes, check `SDImageCoderHelper.defaultScaleDownLimitBytes` (Defaults to 60MB on iOS) + * This will actually translate to use context option `.imageThumbnailPixelSize` from v5.5.0 (Defaults to (3966, 3966) on iOS). Previously does not. + * This flags effect the progressive and animated images as well from v5.5.0. Previously does not. + * @note If you need detail controls, it's better to use context option `imageThumbnailPixelSize` and `imagePreserveAspectRatio` instead. */ SDWebImageScaleDownLargeImages = 1 << 11, @@ -157,7 +160,8 @@ typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) { SDWebImageFromLoaderOnly = 1 << 16, /** - * By default, when you use `SDWebImageTransition` to do some view transition after the image load finished, this transition is only applied for image download from the network. This mask can force to apply view transition for memory and disk cache as well. + * By default, when you use `SDWebImageTransition` to do some view transition after the image load finished, this transition is only applied for image when the callback from manager is asynchronous (from network, or disk cache query) + * This mask can force to apply view transition for any cases, like memory cache query, or sync disk cache query. */ SDWebImageForceTransition = 1 << 17, @@ -168,7 +172,7 @@ typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) { SDWebImageAvoidDecodeImage = 1 << 18, /** - * By default, we decode the animated image. This flag can force decode the first frame only and produece the static image. + * By default, we decode the animated image. This flag can force decode the first frame only and produce the static image. */ SDWebImageDecodeFirstFrameOnly = 1 << 19, @@ -184,6 +188,20 @@ typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) { * Note this options is not compatible with `SDWebImageDecodeFirstFrameOnly`, which always produce a UIImage/NSImage. */ SDWebImageMatchAnimatedImageClass = 1 << 21, + + /** + * By default, when we load the image from network, the image will be written to the cache (memory and disk, controlled by your `storeCacheType` context option) + * This maybe an asynchronously operation and the final `SDInternalCompletionBlock` callback does not guarantee the disk cache written is finished and may cause logic error. (For example, you modify the disk data just in completion block, however, the disk cache is not ready) + * If you need to process with the disk cache in the completion block, you should use this option to ensure the disk cache already been written when callback. + * Note if you use this when using the custom cache serializer, or using the transformer, we will also wait until the output image data written is finished. + */ + SDWebImageWaitStoreCache = 1 << 22, + + /** + * We usually don't apply transform on vector images, because vector images supports dynamically changing to any size, rasterize to a fixed size will loss details. To modify vector images, you can process the vector data at runtime (such as modifying PDF tag / SVG element). + * Use this flag to transform them anyway. + */ + SDWebImageTransformVectorImage = 1 << 23 }; @@ -196,11 +214,31 @@ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextSetIma /** A SDWebImageManager instance to control the image download and cache process using in UIImageView+WebCache category and likes. If not provided, use the shared manager (SDWebImageManager *) + @deprecated Deprecated in the future. This context options can be replaced by other context option control like `.imageCache`, `.imageLoader`, `.imageTransformer` (See below), which already matches all the properties in SDWebImageManager. */ -FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextCustomManager; +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextCustomManager API_DEPRECATED("Use individual context option like .imageCache, .imageLoader and .imageTransformer instead", macos(10.10, API_TO_BE_DEPRECATED), ios(8.0, API_TO_BE_DEPRECATED), tvos(9.0, API_TO_BE_DEPRECATED), watchos(2.0, API_TO_BE_DEPRECATED)); /** - A id instance which conforms `SDImageTransformer` protocol. It's used for image transform after the image load finished and store the transformed image to cache. If you provide one, it will ignore the `transformer` in manager and use provided one instead. (id) + A id instance which conforms to `SDImageCache` protocol. It's used to override the image manager's cache during the image loading pipeline. + In other word, if you just want to specify a custom cache during image loading, you don't need to re-create a dummy SDWebImageManager instance with the cache. If not provided, use the image manager's cache (id) + */ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImageCache; + +/** + A id instance which conforms to `SDImageLoader` protocol. It's used to override the image manager's loader during the image loading pipeline. + In other word, if you just want to specify a custom loader during image loading, you don't need to re-create a dummy SDWebImageManager instance with the loader. If not provided, use the image manager's cache (id) +*/ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImageLoader; + +/** + A id instance which conforms to `SDImageCoder` protocol. It's used to override the default image coder for image decoding(including progressive) and encoding during the image loading process. + If you use this context option, we will not always use `SDImageCodersManager.shared` to loop through all registered coders and find the suitable one. Instead, we will arbitrarily use the exact provided coder without extra checking (We may not call `canDecodeFromData:`). + @note This is only useful for cases which you can ensure the loading url matches your coder, or you find it's too hard to write a common coder which can used for generic usage. This will bind the loading url with the coder logic, which is not always a good design, but possible. (id) +*/ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImageCoder; + +/** + A id instance which conforms `SDImageTransformer` protocol. It's used for image transform after the image load finished and store the transformed image to cache. If you provide one, it will ignore the `transformer` in manager and use provided one instead. If you pass NSNull, the transformer feature will be disabled. (id) */ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImageTransformer; @@ -209,6 +247,25 @@ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImageT */ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImageScaleFactor; +/** + A Boolean value indicating whether to keep the original aspect ratio when generating thumbnail images (or bitmap images from vector format). + Defaults to YES. (NSNumber) + */ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImagePreserveAspectRatio; + +/** + A CGSize raw value indicating whether or not to generate the thumbnail images (or bitmap images from vector format). When this value is provided, the decoder will generate a thumbnail image which pixel size is smaller than or equal to (depends the `.imagePreserveAspectRatio`) the value size. + @note When you pass `.preserveAspectRatio == NO`, the thumbnail image is stretched to match each dimension. When `.preserveAspectRatio == YES`, the thumbnail image's width is limited to pixel size's width, the thumbnail image's height is limited to pixel size's height. For common cases, you can just pass a square size to limit both. + Defaults to CGSizeZero, which means no thumbnail generation at all. (NSValue) + */ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImageThumbnailPixelSize; + +/** + A SDImageCacheType raw value which specify the source of cache to query. Specify `SDImageCacheTypeDisk` to query from disk cache only; `SDImageCacheTypeMemory` to query from memory only. And `SDImageCacheTypeAll` to query from both memory cache and disk cache. Specify `SDImageCacheTypeNone` is invalid and totally ignore the cache query. + If not provide or the value is invalid, we will use `SDImageCacheTypeAll`. (NSNumber) + */ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextQueryCacheType; + /** A SDImageCacheType raw value which specify the store cache type when the image has just been downloaded and will be stored to the cache. Specify `SDImageCacheTypeNone` to disable cache storage; `SDImageCacheTypeDisk` to store in disk cache only; `SDImageCacheTypeMemory` to store in memory only. And `SDImageCacheTypeAll` to store in both memory cache and disk cache. If you use image transformer feature, this actually apply for the transformed image, but not the original image itself. Use `SDWebImageContextOriginalStoreCacheType` if you want to control the original image's store cache type at the same time. @@ -216,9 +273,17 @@ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImageS */ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextStoreCacheType; +/** + The same behavior like `SDWebImageContextQueryCacheType`, but control the query cache type for the original image when you use image transformer feature. This allows the detail control of cache query for these two images. For example, if you want to query the transformed image from both memory/disk cache, query the original image from disk cache only, use `[.queryCacheType : .all, .originalQueryCacheType : .disk]` + If not provide or the value is invalid, we will use `SDImageCacheTypeNone`, which does not query the original image from cache. (NSNumber) + @note Which means, if you set this value to not be `.none`, we will query the original image from cache, then do transform with transformer, instead of actual downloading, which can save bandwidth usage. + */ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextOriginalQueryCacheType; + /** The same behavior like `SDWebImageContextStoreCacheType`, but control the store cache type for the original image when you use image transformer feature. This allows the detail control of cache storage for these two images. For example, if you want to store the transformed image into both memory/disk cache, store the original image into disk cache only, use `[.storeCacheType : .all, .originalStoreCacheType : .disk]` If not provide or the value is invalid, we will use `SDImageCacheTypeNone`, which does not store the original image into cache. (NSNumber) + @note This only store the original image, if you want to use the original image without downloading in next query, specify `SDWebImageContextOriginalQueryCacheType` as well. */ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextOriginalStoreCacheType; @@ -233,6 +298,16 @@ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextAnimat */ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextDownloadRequestModifier; +/** + A id instance to modify the image download response. It's used for downloader to modify the original response from URL and options. If you provide one, it will ignore the `responseModifier` in downloader and use provided one instead. (id) + */ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextDownloadResponseModifier; + +/** + A id instance to decrypt the image download data. This can be used for image data decryption, such as Base64 encoded image. If you provide one, it will ignore the `decryptor` in downloader and use provided one instead. (id) + */ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextDownloadDecryptor; + /** A id instance to convert an URL into a cache key. It's used when manager need cache key to use image cache. If you provide one, it will ignore the `cacheKeyFilter` in manager and use provided one instead. (id) */ diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloader.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloader.h index 1222802d..49ecd5d3 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloader.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloader.h @@ -12,6 +12,8 @@ #import "SDWebImageOperation.h" #import "SDWebImageDownloaderConfig.h" #import "SDWebImageDownloaderRequestModifier.h" +#import "SDWebImageDownloaderResponseModifier.h" +#import "SDWebImageDownloaderDecryptor.h" #import "SDImageLoader.h" /// Downloader options @@ -76,7 +78,7 @@ typedef NS_OPTIONS(NSUInteger, SDWebImageDownloaderOptions) { SDWebImageDownloaderAvoidDecodeImage = 1 << 9, /** - * By default, we decode the animated image. This flag can force decode the first frame only and produece the static image. + * By default, we decode the animated image. This flag can force decode the first frame only and produce the static image. */ SDWebImageDownloaderDecodeFirstFrameOnly = 1 << 10, @@ -126,6 +128,11 @@ typedef SDImageLoaderCompletedBlock SDWebImageDownloaderCompletedBlock; */ @property (nonatomic, strong, nullable, readonly) NSURLResponse *response; +/** + The download's metrics. This will be nil if download operation does not support metrics. + */ +@property (nonatomic, strong, nullable, readonly) NSURLSessionTaskMetrics *metrics API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); + @end @@ -142,12 +149,29 @@ typedef SDImageLoaderCompletedBlock SDWebImageDownloaderCompletedBlock; /** * Set the request modifier to modify the original download request before image load. - * This request modifier method will be called for each downloading image request. Return the original request means no modication. Return nil will cancel the download request. + * This request modifier method will be called for each downloading image request. Return the original request means no modification. Return nil will cancel the download request. * Defaults to nil, means does not modify the original download request. * @note If you want to modify single request, consider using `SDWebImageContextDownloadRequestModifier` context option. */ @property (nonatomic, strong, nullable) id requestModifier; +/** + * Set the response modifier to modify the original download response during image load. + * This request modifier method will be called for each downloading image response. Return the original response means no modification. Return nil will mark current download as cancelled. + * Defaults to nil, means does not modify the original download response. + * @note If you want to modify single response, consider using `SDWebImageContextDownloadResponseModifier` context option. + */ +@property (nonatomic, strong, nullable) id responseModifier; + +/** + * Set the decryptor to decrypt the original download data before image decoding. This can be used for encrypted image data, like Base64. + * This decryptor method will be called for each downloading image data. Return the original data means no modification. Return nil will mark this download failed. + * Defaults to nil, means does not modify the original download data. + * @note When using decryptor, progressive decoding will be disabled, to avoid data corrupt issue. + * @note If you want to decrypt single download data, consider using `SDWebImageContextDownloadDecryptor` context option. + */ +@property (nonatomic, strong, nullable) id decryptor; + /** * The configuration in use by the internal NSURLSession. If you want to provide a custom sessionConfiguration, use `SDWebImageDownloaderConfig.sessionConfiguration` and create a new downloader instance. @note This is immutable according to NSURLSession's documentation. Mutating this object directly has no effect. diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h index c17090b1..5a8cf583 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h @@ -91,7 +91,7 @@ typedef NS_ENUM(NSInteger, SDWebImageDownloaderExecutionOrder) { /** * Set password using for HTTP Basic authentication. - * Defautls to nil. + * Defaults to nil. */ @property (nonatomic, copy, nullable) NSString *password; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h new file mode 100644 index 00000000..0923f297 --- /dev/null +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h @@ -0,0 +1,49 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDWebImageCompat.h" + +typedef NSData * _Nullable (^SDWebImageDownloaderDecryptorBlock)(NSData * _Nonnull data, NSURLResponse * _Nullable response); + +/** +This is the protocol for downloader decryptor. Which decrypt the original encrypted data before decoding. Note progressive decoding is not compatible for decryptor. +We can use a block to specify the downloader decryptor. But Using protocol can make this extensible, and allow Swift user to use it easily instead of using `@convention(block)` to store a block into context options. +*/ +@protocol SDWebImageDownloaderDecryptor + +/// Decrypt the original download data and return a new data. You can use this to decrypt the data using your preferred algorithm. +/// @param data The original download data +/// @param response The URL response for data. If you modify the original URL response via response modifier, the modified version will be here. This arg is nullable. +/// @note If nil is returned, the image download will be marked as failed with error `SDWebImageErrorBadImageData` +- (nullable NSData *)decryptedDataWithData:(nonnull NSData *)data response:(nullable NSURLResponse *)response; + +@end + +/** +A downloader response modifier class with block. +*/ +@interface SDWebImageDownloaderDecryptor : NSObject + +/// Create the data decryptor with block +/// @param block A block to control decrypt logic +- (nonnull instancetype)initWithBlock:(nonnull SDWebImageDownloaderDecryptorBlock)block; + +/// Create the data decryptor with block +/// @param block A block to control decrypt logic ++ (nonnull instancetype)decryptorWithBlock:(nonnull SDWebImageDownloaderDecryptorBlock)block; + +@end + +/// Convenience way to create decryptor for common data encryption. +@interface SDWebImageDownloaderDecryptor (Conveniences) + +/// Base64 Encoded image data decryptor +@property (class, readonly, nonnull) SDWebImageDownloaderDecryptor *base64Decryptor; + +@end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h index e987ba42..7f073b77 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h @@ -36,6 +36,7 @@ @optional @property (strong, nonatomic, readonly, nullable) NSURLSessionTask *dataTask; +@property (strong, nonatomic, readonly, nullable) NSURLSessionTaskMetrics *metrics API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); @property (strong, nonatomic, nullable) NSURLCredential *credential; @property (assign, nonatomic) double minimumProgressInterval; @@ -62,6 +63,12 @@ */ @property (strong, nonatomic, readonly, nullable) NSURLSessionTask *dataTask; +/** + * The collected metrics from `-URLSession:task:didFinishCollectingMetrics:`. + * This can be used to collect the network metrics like download duration, DNS lookup duration, SSL handshake duration, etc. See Apple's documentation: https://developer.apple.com/documentation/foundation/urlsessiontaskmetrics + */ +@property (strong, nonatomic, readonly, nullable) NSURLSessionTaskMetrics *metrics API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); + /** * The credential used for authentication challenges in `-URLSession:task:didReceiveChallenge:completionHandler:`. * diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h index ed07b2dc..42c8a402 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h @@ -17,6 +17,9 @@ typedef NSURLRequest * _Nullable (^SDWebImageDownloaderRequestModifierBlock)(NSU */ @protocol SDWebImageDownloaderRequestModifier +/// Modify the original URL request and return a new one instead. You can modify the HTTP header, cachePolicy, etc for this URL. +/// @param request The original URL request for image loading +/// @note If return nil, the URL request will be cancelled. - (nullable NSURLRequest *)modifiedRequestWithRequest:(nonnull NSURLRequest *)request; @end @@ -26,7 +29,41 @@ typedef NSURLRequest * _Nullable (^SDWebImageDownloaderRequestModifierBlock)(NSU */ @interface SDWebImageDownloaderRequestModifier : NSObject +/// Create the request modifier with block +/// @param block A block to control modifier logic - (nonnull instancetype)initWithBlock:(nonnull SDWebImageDownloaderRequestModifierBlock)block; + +/// Create the request modifier with block +/// @param block A block to control modifier logic + (nonnull instancetype)requestModifierWithBlock:(nonnull SDWebImageDownloaderRequestModifierBlock)block; @end + +/** +A convenient request modifier to provide the HTTP request including HTTP Method, Headers and Body. +*/ +@interface SDWebImageDownloaderRequestModifier (Conveniences) + +/// Create the request modifier with HTTP Method. +/// @param method HTTP Method, nil means to GET. +/// @note This is for convenience, if you need code to control the logic, use block API instead. +- (nonnull instancetype)initWithMethod:(nullable NSString *)method; + +/// Create the request modifier with HTTP Headers. +/// @param headers HTTP Headers. Case insensitive according to HTTP/1.1(HTTP/2) standard. The headers will override the same fields from original request. +/// @note This is for convenience, if you need code to control the logic, use block API instead. +- (nonnull instancetype)initWithHeaders:(nullable NSDictionary *)headers; + +/// Create the request modifier with HTTP Body. +/// @param body HTTP Body. +/// @note This is for convenience, if you need code to control the logic, use block API instead. +- (nonnull instancetype)initWithBody:(nullable NSData *)body; + +/// Create the request modifier with HTTP Method, Headers and Body. +/// @param method HTTP Method, nil means to GET. +/// @param headers HTTP Headers. Case insensitive according to HTTP/1.1(HTTP/2) standard. The headers will override the same fields from original request. +/// @param body HTTP Body. +/// @note This is for convenience, if you need code to control the logic, use block API instead. +- (nonnull instancetype)initWithMethod:(nullable NSString *)method headers:(nullable NSDictionary *)headers body:(nullable NSData *)body; + +@end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h new file mode 100644 index 00000000..63c1456e --- /dev/null +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h @@ -0,0 +1,69 @@ +/* + * This file is part of the SDWebImage package. + * (c) Olivier Poitrey + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#import +#import "SDWebImageCompat.h" + +typedef NSURLResponse * _Nullable (^SDWebImageDownloaderResponseModifierBlock)(NSURLResponse * _Nonnull response); + +/** + This is the protocol for downloader response modifier. + We can use a block to specify the downloader response modifier. But Using protocol can make this extensible, and allow Swift user to use it easily instead of using `@convention(block)` to store a block into context options. + */ +@protocol SDWebImageDownloaderResponseModifier + +/// Modify the original URL response and return a new response. You can use this to check MIME-Type, mock server response, etc. +/// @param response The original URL response, note for HTTP request it's actually a `NSHTTPURLResponse` instance +/// @note If nil is returned, the image download will marked as cancelled with error `SDWebImageErrorInvalidDownloadResponse` +- (nullable NSURLResponse *)modifiedResponseWithResponse:(nonnull NSURLResponse *)response; + +@end + +/** + A downloader response modifier class with block. + */ +@interface SDWebImageDownloaderResponseModifier : NSObject + +/// Create the response modifier with block +/// @param block A block to control modifier logic +- (nonnull instancetype)initWithBlock:(nonnull SDWebImageDownloaderResponseModifierBlock)block; + +/// Create the response modifier with block +/// @param block A block to control modifier logic ++ (nonnull instancetype)responseModifierWithBlock:(nonnull SDWebImageDownloaderResponseModifierBlock)block; + +@end + +/** +A convenient response modifier to provide the HTTP response including HTTP Status Code, Version and Headers. +*/ +@interface SDWebImageDownloaderResponseModifier (Conveniences) + +/// Create the response modifier with HTTP Status code. +/// @param statusCode HTTP Status Code. +/// @note This is for convenience, if you need code to control the logic, use block API instead. +- (nonnull instancetype)initWithStatusCode:(NSInteger)statusCode; + +/// Create the response modifier with HTTP Version. Status code defaults to 200. +/// @param version HTTP Version, nil means "HTTP/1.1". +/// @note This is for convenience, if you need code to control the logic, use block API instead. +- (nonnull instancetype)initWithVersion:(nullable NSString *)version; + +/// Create the response modifier with HTTP Headers. Status code defaults to 200. +/// @param headers HTTP Headers. Case insensitive according to HTTP/1.1(HTTP/2) standard. The headers will override the same fields from original response. +/// @note This is for convenience, if you need code to control the logic, use block API instead. +- (nonnull instancetype)initWithHeaders:(nullable NSDictionary *)headers; + +/// Create the response modifier with HTTP Status Code, Version and Headers. +/// @param statusCode HTTP Status Code. +/// @param version HTTP Version, nil means "HTTP/1.1". +/// @param headers HTTP Headers. Case insensitive according to HTTP/1.1(HTTP/2) standard. The headers will override the same fields from original response. +/// @note This is for convenience, if you need code to control the logic, use block API instead. +- (nonnull instancetype)initWithStatusCode:(NSInteger)statusCode version:(nullable NSString *)version headers:(nullable NSDictionary *)headers; + +@end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageError.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageError.h index cd875421..2b412010 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageError.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageError.h @@ -19,7 +19,9 @@ typedef NS_ERROR_ENUM(SDWebImageErrorDomain, SDWebImageError) { SDWebImageErrorInvalidURL = 1000, // The URL is invalid, such as nil URL or corrupted URL SDWebImageErrorBadImageData = 1001, // The image data can not be decoded to image, or the image data is empty SDWebImageErrorCacheNotModified = 1002, // The remote location specify that the cached image is not modified, such as the HTTP response 304 code. It's useful for `SDWebImageRefreshCached` + SDWebImageErrorBlackListed = 1003, // The URL is blacklisted because of unrecoverable failure marked by downloader (such as 404), you can use `.retryFailed` option to avoid this SDWebImageErrorInvalidDownloadOperation = 2000, // The image download operation is invalid, such as nil operation or unexpected error occur when operation initialized SDWebImageErrorInvalidDownloadStatusCode = 2001, // The image download response a invalid status code. You can check the status code in error's userInfo under `SDWebImageErrorDownloadStatusCodeKey` SDWebImageErrorCancelled = 2002, // The image loading operation is cancelled before finished, during either async disk cache query, or waiting before actual network request. For actual network request error, check `NSURLErrorDomain` error domain and code. + SDWebImageErrorInvalidDownloadResponse = 2003, // When using response modifier, the modified download response is nil and marked as failed. }; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageManager.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageManager.h index d1ab013e..ee90724e 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageManager.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageManager.h @@ -87,7 +87,7 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager]; [manager loadImageWithURL:imageURL options:0 progress:nil - completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { + completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { if (image) { // do something with image } @@ -98,7 +98,7 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager]; @interface SDWebImageManager : NSObject /** - * The delegate for manager. Defatuls to nil. + * The delegate for manager. Defaults to nil. */ @property (weak, nonatomic, nullable) id delegate; @@ -136,8 +136,8 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager]; /** * The cache serializer is used to convert the decoded image, the source downloaded data, to the actual data used for storing to the disk cache. If you return nil, means to generate the data from the image instance, see `SDImageCache`. - * For example, if you are using WebP images and facing the slow decoding time issue when later retriving from disk cache again. You can try to encode the decoded image to JPEG/PNG format to disk cache instead of source downloaded data. - * @note The `image` arg is nonnull, but when you also provide a image transformer and the image is transformed, the `data` arg may be nil, take attention to this case. + * For example, if you are using WebP images and facing the slow decoding time issue when later retrieving from disk cache again. You can try to encode the decoded image to JPEG/PNG format to disk cache instead of source downloaded data. + * @note The `image` arg is nonnull, but when you also provide an image transformer and the image is transformed, the `data` arg may be nil, take attention to this case. * @note This method is called from a global queue in order to not to block the main thread. * @code SDWebImageManager.sharedManager.cacheSerializer = [SDWebImageCacheSerializer cacheSerializerWithBlock:^NSData * _Nullable(UIImage * _Nonnull image, NSData * _Nullable data, NSURL * _Nullable imageURL) { @@ -225,7 +225,7 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager]; * The forth parameter is an `SDImageCacheType` enum indicating if the image was retrieved from the local cache * or from the memory cache or from the network. * - * The fith parameter is set to NO when the SDWebImageProgressiveLoad option is used and the image is + * The fifth parameter is set to NO when the SDWebImageProgressiveLoad option is used and the image is * downloading. This block is thus called repeatedly with a partial image. When image is fully downloaded, the * block is called a last time with the full image and the last parameter set to YES. * @@ -262,8 +262,26 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager]; - (void)cancelAll; /** - * Return the cache key for a given URL + * Remove the specify URL from failed black list. + * @param url The failed URL. + */ +- (void)removeFailedURL:(nonnull NSURL *)url; + +/** + * Remove all the URL from failed black list. + */ +- (void)removeAllFailedURLs; + +/** + * Return the cache key for a given URL, does not considerate transformer or thumbnail. + * @note This method does not have context option, only use the url and manager level cacheKeyFilter to generate the cache key. */ - (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url; +/** + * Return the cache key for a given URL and context option. + * @note The context option like `.thumbnailPixelSize` and `.imageTransformer` will effect the generated cache key, using this if you have those context associated. +*/ +- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url context:(nullable SDWebImageContext *)context; + @end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImagePrefetcher.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImagePrefetcher.h index 6ee37d32..a9b2c1f4 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImagePrefetcher.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImagePrefetcher.h @@ -92,7 +92,7 @@ typedef void(^SDWebImagePrefetcherCompletionBlock)(NSUInteger noOfFinishedUrls, @property (strong, nonatomic, nonnull) dispatch_queue_t delegateQueue; /** - * The delegate for the prefetcher. Defatuls to nil. + * The delegate for the prefetcher. Defaults to nil. */ @property (weak, nonatomic, nullable) id delegate; @@ -108,7 +108,7 @@ typedef void(^SDWebImagePrefetcherCompletionBlock)(NSUInteger noOfFinishedUrls, /** * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching. It based on the image manager so the image may from the cache and network according to the `options` property. - * Prefetching is seperate to each other, which means the progressBlock and completionBlock you provide is bind to the prefetching for the list of urls. + * Prefetching is separate to each other, which means the progressBlock and completionBlock you provide is bind to the prefetching for the list of urls. * Attention that call this will not cancel previous fetched urls. You should keep the token return by this to cancel or cancel all the prefetch. * * @param urls list of URLs to prefetch @@ -118,7 +118,7 @@ typedef void(^SDWebImagePrefetcherCompletionBlock)(NSUInteger noOfFinishedUrls, /** * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching. It based on the image manager so the image may from the cache and network according to the `options` property. - * Prefetching is seperate to each other, which means the progressBlock and completionBlock you provide is bind to the prefetching for the list of urls. + * Prefetching is separate to each other, which means the progressBlock and completionBlock you provide is bind to the prefetching for the list of urls. * Attention that call this will not cancel previous fetched urls. You should keep the token return by this to cancel or cancel all the prefetch. * * @param urls list of URLs to prefetch diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageTransition.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageTransition.h index ea52b313..889372e4 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageTransition.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/SDWebImageTransition.h @@ -15,7 +15,21 @@ typedef UIViewAnimationOptions SDWebImageAnimationOptions; #else typedef NS_OPTIONS(NSUInteger, SDWebImageAnimationOptions) { - SDWebImageAnimationOptionAllowsImplicitAnimation = 1 << 0, // specify `allowsImplicitAnimation` for the `NSAnimationContext` + SDWebImageAnimationOptionAllowsImplicitAnimation = 1 << 0, // specify `allowsImplicitAnimation` for the `NSAnimationContext` + + SDWebImageAnimationOptionCurveEaseInOut = 0 << 16, // default + SDWebImageAnimationOptionCurveEaseIn = 1 << 16, + SDWebImageAnimationOptionCurveEaseOut = 2 << 16, + SDWebImageAnimationOptionCurveLinear = 3 << 16, + + SDWebImageAnimationOptionTransitionNone = 0 << 20, // default + SDWebImageAnimationOptionTransitionFlipFromLeft = 1 << 20, + SDWebImageAnimationOptionTransitionFlipFromRight = 2 << 20, + SDWebImageAnimationOptionTransitionCurlUp = 3 << 20, + SDWebImageAnimationOptionTransitionCurlDown = 4 << 20, + SDWebImageAnimationOptionTransitionCrossDissolve = 5 << 20, + SDWebImageAnimationOptionTransitionFlipFromTop = 6 << 20, + SDWebImageAnimationOptionTransitionFlipFromBottom = 7 << 20, }; #endif @@ -32,7 +46,7 @@ typedef void (^SDWebImageTransitionCompletionBlock)(BOOL finished); @interface SDWebImageTransition : NSObject /** - By default, we set the image to the view at the beginning of the animtions. You can disable this and provide custom set image process + By default, we set the image to the view at the beginning of the animations. You can disable this and provide custom set image process */ @property (nonatomic, assign) BOOL avoidAutoSetImage; /** @@ -42,7 +56,7 @@ typedef void (^SDWebImageTransitionCompletionBlock)(BOOL finished); /** The timing function used for all animations within this transition animation (macOS). */ -@property (nonatomic, strong, nullable) CAMediaTimingFunction *timingFunction API_UNAVAILABLE(ios, tvos, watchos); +@property (nonatomic, strong, nullable) CAMediaTimingFunction *timingFunction API_UNAVAILABLE(ios, tvos, watchos) API_DEPRECATED("Use SDWebImageAnimationOptions instead, or grab NSAnimationContext.currentContext and modify the timingFunction", macos(10.10, 10.10)); /** A mask of options indicating how you want to perform the animations. */ @@ -69,7 +83,7 @@ typedef void (^SDWebImageTransitionCompletionBlock)(BOOL finished); */ @interface SDWebImageTransition (Conveniences) -/// Fade transition. +/// Fade-in transition. @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *fadeTransition; /// Flip from left transition. @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *flipFromLeftTransition; @@ -84,6 +98,34 @@ typedef void (^SDWebImageTransitionCompletionBlock)(BOOL finished); /// Curl down transition. @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *curlDownTransition; +/// Fade-in transition with duration. +/// @param duration transition duration, use ease-in-out ++ (nonnull instancetype)fadeTransitionWithDuration:(NSTimeInterval)duration NS_SWIFT_NAME(fade(duration:)); + +/// Flip from left transition with duration. +/// @param duration transition duration, use ease-in-out ++ (nonnull instancetype)flipFromLeftTransitionWithDuration:(NSTimeInterval)duration NS_SWIFT_NAME(flipFromLeft(duration:)); + +/// Flip from right transition with duration. +/// @param duration transition duration, use ease-in-out ++ (nonnull instancetype)flipFromRightTransitionWithDuration:(NSTimeInterval)duration NS_SWIFT_NAME(flipFromRight(duration:)); + +/// Flip from top transition with duration. +/// @param duration transition duration, use ease-in-out ++ (nonnull instancetype)flipFromTopTransitionWithDuration:(NSTimeInterval)duration NS_SWIFT_NAME(flipFromTop(duration:)); + +/// Flip from bottom transition with duration. +/// @param duration transition duration, use ease-in-out ++ (nonnull instancetype)flipFromBottomTransitionWithDuration:(NSTimeInterval)duration NS_SWIFT_NAME(flipFromBottom(duration:)); + +/// Curl up transition with duration. +/// @param duration transition duration, use ease-in-out ++ (nonnull instancetype)curlUpTransitionWithDuration:(NSTimeInterval)duration NS_SWIFT_NAME(curlUp(duration:)); + +/// Curl down transition with duration. +/// @param duration transition duration, use ease-in-out ++ (nonnull instancetype)curlDownTransitionWithDuration:(NSTimeInterval)duration NS_SWIFT_NAME(curlDown(duration:)); + @end #endif diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h new file mode 100644 index 00000000..482c8c40 --- /dev/null +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h @@ -0,0 +1,24 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* (c) Fabrice Aneche +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDWebImageCompat.h" + +@interface UIImage (ExtendedCacheData) + +/** + Read and Write the extended object and bind it to the image. Which can hold some extra metadata like Image's scale factor, URL rich link, date, etc. + The extended object should conforms to NSCoding, which we use `NSKeyedArchiver` and `NSKeyedUnarchiver` to archive it to data, and write to disk cache. + @note The disk cache preserve both of the data and extended data with the same cache key. For manual query, use the `SDDiskCache` protocol method `extendedDataForKey:` instead. + @note You can specify arbitrary object conforms to NSCoding (NSObject protocol here is used to support object using `NS_ROOT_CLASS`, which is not NSObject subclass). If you load image from disk cache, you should check the extended object class to avoid corrupted data. + @warning This object don't need to implements NSSecureCoding (but it's recommended), because we allows arbitrary class. + */ +@property (nonatomic, strong, nullable) id sd_extendedObject; + +@end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+GIF.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+GIF.h index 7504c71a..5da8e197 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+GIF.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+GIF.h @@ -10,7 +10,7 @@ #import "SDWebImageCompat.h" /** - This category is just use as a convenience method. For more detail control, use methods in `UIImage+MultiFormat.h` or directlly use `SDImageCoder`. + This category is just use as a convenience method. For more detail control, use methods in `UIImage+MultiFormat.h` or directly use `SDImageCoder`. */ @interface UIImage (GIF) diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h index 5b0fe585..0ff2f2fd 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h @@ -17,7 +17,7 @@ The memory cache cost for specify image used by image cache. The cost function is the bytes size held in memory. If you set some associated object to `UIImage`, you can set the custom value to indicate the memory cost. - For `UIImage`, this method return the single frame bytes size when `image.images` is nil for static image. Retuen full frame bytes size when `image.images` is not nil for animated image. + For `UIImage`, this method return the single frame bytes size when `image.images` is nil for static image. Return full frame bytes size when `image.images` is not nil for animated image. For `NSImage`, this method return the single frame bytes size because `NSImage` does not store all frames in memory. @note Note that because of the limitations of category this property can get out of sync if you create another instance with CGImage or other methods. @note For custom animated class conforms to `SDAnimatedImage`, you can override this getter method in your subclass to return a more proper value instead, which representing the current frame's total bytes. diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+Metadata.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+Metadata.h index e42ff697..8328c261 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+Metadata.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+Metadata.h @@ -28,12 +28,20 @@ /** * UIKit: - * Check the `images` array property + * Check the `images` array property. * AppKit: * NSImage currently only support animated via GIF imageRep unlike UIImage. It will check the imageRep's frame count. */ @property (nonatomic, assign, readonly) BOOL sd_isAnimated; +/** + * UIKit: + * Check the `isSymbolImage` property. Also check the system PDF(iOS 11+) && SVG(iOS 13+) support. + * AppKit: + * NSImage supports PDF && SVG && EPS imageRep, check the imageRep class. + */ +@property (nonatomic, assign, readonly) BOOL sd_isVector; + /** * The image format represent the original compressed image data format. * If you don't manually specify a format, this information is retrieve from CGImage using `CGImageGetUTType`, which may return nil for non-CG based image. At this time it will return `SDImageFormatUndefined` as default value. diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+MultiFormat.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+MultiFormat.h index 84313344..a0935b57 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+MultiFormat.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+MultiFormat.h @@ -45,6 +45,7 @@ /** Encode the current image to the data, the image format is unspecified + @note If the receiver is `SDAnimatedImage`, this will return the animated image data if available. No more extra encoding process. @return The encoded data. If can't encode, return nil */ - (nullable NSData *)sd_imageData; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+Transform.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+Transform.h index 717c08cc..06cb66da 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+Transform.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIImage+Transform.h @@ -27,7 +27,7 @@ typedef NS_OPTIONS(NSUInteger, SDRectCorner) { #endif /** - Provide some commen method for `UIImage`. + Provide some common method for `UIImage`. Image process is based on Core Graphics and vImage. */ @interface UIImage (Transform) diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIView+WebCache.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIView+WebCache.h index d0a7966f..ee9f761b 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIView+WebCache.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIView+WebCache.h @@ -31,11 +31,19 @@ typedef void(^SDSetImageBlock)(UIImage * _Nullable image, NSData * _Nullable ima */ @property (nonatomic, strong, readonly, nullable) NSURL *sd_imageURL; +/** + * Get the current image operation key. Operation key is used to identify the different queries for one view instance (like UIButton). + * See more about this in `SDWebImageContextSetImageOperationKey`. + * If you cancel current image load, the key will be set to nil. + * @note You can use method `UIView+WebCacheOperation` to investigate different queries' operation. + */ +@property (nonatomic, strong, readonly, nullable) NSString *sd_latestOperationKey; + /** * The current image loading progress associated to the view. The unit count is the received size and excepted size of download. * The `totalUnitCount` and `completedUnitCount` will be reset to 0 after a new image loading start (change from current queue). And they will be set to `SDWebImageProgressUnitCountUnknown` if the progressBlock not been called but the image loading success to mark the progress finished (change from main queue). - * @note You can use Key-Value Observing on the progress, but you should take care that the change to progress is from a background queue during download(the same as progressBlock). If you want to using KVO and update the UI, make sure to dispatch on the main queue. And it's recommand to use some KVO libs like KVOController because it's more safe and easy to use. - * @note The getter will create a progress instance if the value is nil. But by default, we don't create one. If you need to use Key-Value Observing, you must trigger the getter or set a custom progresss instance before the loading start. The default value is nil. + * @note You can use Key-Value Observing on the progress, but you should take care that the change to progress is from a background queue during download(the same as progressBlock). If you want to using KVO and update the UI, make sure to dispatch on the main queue. And it's recommend to use some KVO libs like KVOController because it's more safe and easy to use. + * @note The getter will create a progress instance if the value is nil. But by default, we don't create one. If you need to use Key-Value Observing, you must trigger the getter or set a custom progress instance before the loading start. The default value is nil. * @note Note that because of the limitations of categories this property can get out of sync if you update the progress directly. */ @property (nonatomic, strong, null_resettable) NSProgress *sd_imageProgress; @@ -59,7 +67,7 @@ typedef void(^SDSetImageBlock)(UIImage * _Nullable image, NSData * _Nullable ima * The forth parameter is an `SDImageCacheType` enum indicating if the image was retrieved from the local cache * or from the memory cache or from the network. * - * The fith parameter normally is always YES. However, if you provide SDWebImageAvoidAutoSetImage with SDWebImageProgressiveLoad options to enable progressive downloading and set the image yourself. This block is thus called repeatedly with a partial image. When image is fully downloaded, the + * The fifth parameter normally is always YES. However, if you provide SDWebImageAvoidAutoSetImage with SDWebImageProgressiveLoad options to enable progressive downloading and set the image yourself. This block is thus called repeatedly with a partial image. When image is fully downloaded, the * block is called a last time with the full image and the last parameter set to YES. * * The last parameter is the original image URL @@ -83,7 +91,7 @@ typedef void(^SDSetImageBlock)(UIImage * _Nullable image, NSData * _Nullable ima /** The image transition when image load finished. See `SDWebImageTransition`. - If you specify nil, do not do transition. Defautls to nil. + If you specify nil, do not do transition. Defaults to nil. */ @property (nonatomic, strong, nullable) SDWebImageTransition *sd_imageTransition; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIView+WebCacheOperation.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIView+WebCacheOperation.h index 3a0eb2ac..53a7045c 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIView+WebCacheOperation.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Headers/UIView+WebCacheOperation.h @@ -11,7 +11,7 @@ /** These methods are used to support canceling for UIView image loading, it's designed to be used internal but not external. - All the stored operations are weak, so it will be dalloced after image loading finished. If you need to store operations, use your own class to keep a strong reference for them. + All the stored operations are weak, so it will be dealloced after image loading finished. If you need to store operations, use your own class to keep a strong reference for them. */ @interface UIView (WebCacheOperation) diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Info.plist b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Info.plist index 3b03f250..1be43f38 100644 Binary files a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Info.plist and b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/Info.plist differ diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+RoundedCorners.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h similarity index 93% rename from Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+RoundedCorners.h rename to Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h index 224f2597..dfec18b7 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+RoundedCorners.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h @@ -12,7 +12,7 @@ #import "UIImage+Transform.h" -@interface NSBezierPath (RoundedCorners) +@interface NSBezierPath (SDRoundedCorners) /** Convenience way to create a bezier path with the specify rounding corners on macOS. Same as the one on `UIBezierPath`. diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h new file mode 100644 index 00000000..199cf4fc --- /dev/null +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h @@ -0,0 +1,14 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDWebImageCompat.h" + +/// Copy the associated object from source image to target image. The associated object including all the category read/write properties. +/// @param source source +/// @param target target +FOUNDATION_EXPORT void SDImageCopyAssociatedObject(UIImage * _Nullable source, UIImage * _Nullable target); diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h index ecc68be8..a3480deb 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h @@ -11,6 +11,7 @@ @class SDAsyncBlockOperation; typedef void (^SDAsyncBlock)(SDAsyncBlockOperation * __nonnull asyncOperation); +/// A async block operation, success after you call `completer` (not like `NSBlockOperation` which is for sync block, success on return) @interface SDAsyncBlockOperation : NSOperation - (nonnull instancetype)initWithBlock:(nonnull SDAsyncBlock)block; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h new file mode 100644 index 00000000..5d5676b1 --- /dev/null +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h @@ -0,0 +1,18 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDWebImageCompat.h" + +/// Device information helper methods +@interface SDDeviceHelper : NSObject + ++ (NSUInteger)totalMemory; ++ (NSUInteger)freeMemory; + +@end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h new file mode 100644 index 00000000..3ee8c6fd --- /dev/null +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h @@ -0,0 +1,29 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDWebImageCompat.h" + +/// Cross-platform display link wrapper. Do not retain the target +/// Use `CADisplayLink` on iOS/tvOS, `CVDisplayLink` on macOS, `NSTimer` on watchOS +@interface SDDisplayLink : NSObject + +@property (readonly, nonatomic, weak, nullable) id target; +@property (readonly, nonatomic, assign, nonnull) SEL selector; +@property (readonly, nonatomic) CFTimeInterval duration; +@property (readonly, nonatomic) BOOL isRunning; + ++ (nonnull instancetype)displayLinkWithTarget:(nonnull id)target selector:(nonnull SEL)sel; + +- (void)addToRunLoop:(nonnull NSRunLoop *)runloop forMode:(nonnull NSRunLoopMode)mode; +- (void)removeFromRunLoop:(nonnull NSRunLoop *)runloop forMode:(nonnull NSRunLoopMode)mode; + +- (void)start; +- (void)stop; + +@end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h new file mode 100644 index 00000000..3ce6bade --- /dev/null +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h @@ -0,0 +1,19 @@ +// +// This file is from https://gist.github.com/zydeco/6292773 +// +// Created by Jesús A. Álvarez on 2008-12-17. +// Copyright 2008-2009 namedfork.net. All rights reserved. +// + +#import + +/// File Extended Attribute (xattr) helper methods +@interface SDFileAttributeHelper : NSObject + ++ (nullable NSArray *)extendedAttributeNamesAtPath:(nonnull NSString *)path traverseLink:(BOOL)follow error:(NSError * _Nullable * _Nullable)err; ++ (BOOL)hasExtendedAttribute:(nonnull NSString *)name atPath:(nonnull NSString *)path traverseLink:(BOOL)follow error:(NSError * _Nullable * _Nullable)err; ++ (nullable NSData *)extendedAttribute:(nonnull NSString *)name atPath:(nonnull NSString *)path traverseLink:(BOOL)follow error:(NSError * _Nullable * _Nullable)err; ++ (BOOL)setExtendedAttribute:(nonnull NSString *)name value:(nonnull NSData *)value atPath:(nonnull NSString *)path traverseLink:(BOOL)follow overwrite:(BOOL)overwrite error:(NSError * _Nullable * _Nullable)err; ++ (BOOL)removeExtendedAttribute:(nonnull NSString *)name atPath:(nonnull NSString *)path traverseLink:(BOOL)follow error:(NSError * _Nullable * _Nullable)err; + +@end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h index 68184187..88dee489 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h @@ -9,8 +9,8 @@ #import #import "SDWebImageCompat.h" -// Apple parse the Asset Catalog compiled file(`Assets.car`) by CoreUI.framework, however it's a private framework and there are no other ways to directly get the data. So we just process the normal bundle files :) - +/// A Image-Asset manager to work like UIKit/AppKit's image cache behavior +/// Apple parse the Asset Catalog compiled file(`Assets.car`) by CoreUI.framework, however it's a private framework and there are no other ways to directly get the data. So we just process the normal bundle files :) @interface SDImageAssetManager : NSObject @property (nonatomic, strong, nonnull) NSMapTable *imageTable; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h index fddf78c1..0debe6ca 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h @@ -9,7 +9,7 @@ #import #import "SDWebImageCompat.h" -// This is used for operation management, but not for operation queue execute +/// This is used for operation management, but not for operation queue execute @interface SDImageCachesManagerOperation : NSOperation @property (nonatomic, assign, readonly) NSUInteger pendingCount; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageHEICCoderInternal.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageHEICCoderInternal.h deleted file mode 100644 index e7017bba..00000000 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageHEICCoderInternal.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -* This file is part of the SDWebImage package. -* (c) Olivier Poitrey -* -* For the full copyright and license information, please view the LICENSE -* file that was distributed with this source code. -*/ - -#import -#import "SDImageHEICCoder.h" - -// AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation -#define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic") -#define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif") -// HEIC Sequence (Animated Image) -#define kSDUTTypeHEICS ((__bridge CFStringRef)@"public.heics") - -@interface SDImageHEICCoder () - -+ (BOOL)canDecodeFromHEICFormat; -+ (BOOL)canDecodeFromHEIFFormat; -+ (BOOL)canEncodeToHEICFormat; -+ (BOOL)canEncodeToHEIFFormat; - -@end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h index 4b500131..022cf7dc 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h @@ -9,9 +9,20 @@ #import #import "SDImageIOAnimatedCoder.h" +// AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation +#define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic") +#define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif") +// HEIC Sequence (Animated Image) +#define kSDUTTypeHEICS ((__bridge CFStringRef)@"public.heics") +// kUTTypeWebP seems not defined in public UTI framework, Apple use the hardcode string, we define them :) +#define kSDUTTypeWebP ((__bridge CFStringRef)@"org.webmproject.webp") + @interface SDImageIOAnimatedCoder () + (NSTimeInterval)frameDurationAtIndex:(NSUInteger)index source:(nonnull CGImageSourceRef)source; + (NSUInteger)imageLoopCountWithSource:(nonnull CGImageSourceRef)source; ++ (nullable UIImage *)createFrameAtIndex:(NSUInteger)index source:(nonnull CGImageSourceRef)source scale:(CGFloat)scale preserveAspectRatio:(BOOL)preserveAspectRatio thumbnailSize:(CGSize)thumbnailSize options:(nullable NSDictionary *)options; ++ (BOOL)canEncodeToFormat:(SDImageFormat)format; ++ (BOOL)canDecodeFromFormat:(SDImageFormat)format; @end diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h index 837d77b0..46352db5 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h @@ -7,20 +7,62 @@ */ #import +#import +#import #import "SDmetamacros.h" +#ifndef SD_LOCK_DECLARE +#if TARGET_OS_MACCATALYST +#define SD_LOCK_DECLARE(lock) os_unfair_lock lock; +#else +#define SD_LOCK_DECLARE(lock) os_unfair_lock lock API_AVAILABLE(ios(10.0), tvos(10), watchos(3), macos(10.12)); \ +OSSpinLock lock##_deprecated; +#endif +#endif + +#ifndef SD_LOCK_INIT +#if TARGET_OS_MACCATALYST +#define SD_LOCK_INIT(lock) lock = OS_UNFAIR_LOCK_INIT; +#else +#define SD_LOCK_INIT(lock) if (@available(iOS 10, tvOS 10, watchOS 3, macOS 10.12, *)) lock = OS_UNFAIR_LOCK_INIT; \ +else lock##_deprecated = OS_SPINLOCK_INIT; +#endif +#endif + #ifndef SD_LOCK -#define SD_LOCK(lock) dispatch_semaphore_wait(lock, DISPATCH_TIME_FOREVER); +#if TARGET_OS_MACCATALYST +#define SD_LOCK(lock) os_unfair_lock_lock(&lock); +#else +#define SD_LOCK(lock) if (@available(iOS 10, tvOS 10, watchOS 3, macOS 10.12, *)) os_unfair_lock_lock(&lock); \ +else OSSpinLockLock(&lock##_deprecated); +#endif #endif #ifndef SD_UNLOCK -#define SD_UNLOCK(lock) dispatch_semaphore_signal(lock); +#if TARGET_OS_MACCATALYST +#define SD_UNLOCK(lock) os_unfair_lock_unlock(&lock); +#else +#define SD_UNLOCK(lock) if (@available(iOS 10, tvOS 10, watchOS 3, macOS 10.12, *)) os_unfair_lock_unlock(&lock); \ +else OSSpinLockUnlock(&lock##_deprecated); +#endif #endif #ifndef SD_OPTIONS_CONTAINS #define SD_OPTIONS_CONTAINS(options, value) (((options) & (value)) == (value)) #endif +#ifndef SD_CSTRING +#define SD_CSTRING(str) #str +#endif + +#ifndef SD_NSSTRING +#define SD_NSSTRING(str) @(SD_CSTRING(str)) +#endif + +#ifndef SD_SEL_SPI +#define SD_SEL_SPI(name) NSSelectorFromString([NSString stringWithFormat:@"_%@", SD_NSSTRING(name)]) +#endif + #ifndef weakify #define weakify(...) \ sd_keywordify \ diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h index 4fd16228..d92c682b 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h @@ -9,6 +9,7 @@ #import #import "SDWebImageCompat.h" +/// A weak proxy which forward all the message to the target @interface SDWeakProxy : NSProxy @property (nonatomic, weak, readonly, nullable) id target; diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h new file mode 100644 index 00000000..1b70649a --- /dev/null +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h @@ -0,0 +1,19 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDWebImageCompat.h" + +#if SD_MAC + +#import + +/// Helper method for Core Animation transition +FOUNDATION_EXPORT CAMediaTimingFunction * _Nullable SDTimingFunctionFromAnimationOptions(SDWebImageAnimationOptions options); +FOUNDATION_EXPORT CATransition * _Nullable SDTransitionFromAnimationOptions(SDWebImageAnimationOptions options); + +#endif diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/UIColor+HexString.h b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h similarity index 93% rename from Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/UIColor+HexString.h rename to Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h index 2a8a3d80..cf67186f 100644 --- a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/UIColor+HexString.h +++ b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h @@ -8,7 +8,7 @@ #import "SDWebImageCompat.h" -@interface UIColor (HexString) +@interface UIColor (SDHexString) /** Convenience way to get hex string from color. The output should always be 32-bit RGBA hex string like `#00000000`. diff --git a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/SDWebImage b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/SDWebImage index 3d400f65..2609c3d7 100755 Binary files a/Plugin/CleverTapUnity/iOS/SDWebImage.framework/SDWebImage and b/Plugin/CleverTapUnity/iOS/SDWebImage.framework/SDWebImage differ diff --git a/README.md b/README.md index e2ff20f7..4e620fbd 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,9 @@ To get started, sign up [here](https://clevertap.com/live-product-demo/). - Configure the Framework - In Xcode, go to your Targets, under your app’s name - - Under General, Navigate to Frameworks, Libraries and Embedded Content, please ensure that **CleverTapSDK** and **SDWebImage** frameworks are marked as **Embed & Sign** + - Under General, Navigate to Frameworks, Libraries and Embedded Content, please ensure that **CleverTapSDK** and **SDWebImage** frameworks are marked as **Embed & Sign** and **Embedded** to your project. + + ![alt text](example/images/ct_xcode12.x_framework.png "frameworks") - Add a run script to your build phases, In Xcode, go to your Targets, under your app’s name, select Build Phases after embed frameworks, add a run script phase and set it to use `/bin/sh` and the [script found here](https://github.com/CleverTap/clevertap-unity-sdk/blob/master/Plugin/CleverTapUnity/iOS/strip.sh). diff --git a/example/images/ct_xcode12.x_framework.png b/example/images/ct_xcode12.x_framework.png new file mode 100644 index 00000000..71583746 Binary files /dev/null and b/example/images/ct_xcode12.x_framework.png differ diff --git a/src/Android/CleverTapUnityPlugin/build.gradle b/src/Android/CleverTapUnityPlugin/build.gradle index 7bfa0c10..dc8df0f2 100644 --- a/src/Android/CleverTapUnityPlugin/build.gradle +++ b/src/Android/CleverTapUnityPlugin/build.gradle @@ -5,7 +5,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:4.0.2' + classpath 'com.android.tools.build:gradle:4.1.2' } } diff --git a/src/Android/CleverTapUnityPlugin/clevertapsdk-unity/build.gradle b/src/Android/CleverTapUnityPlugin/clevertapsdk-unity/build.gradle index 13326c0b..30c2ce3c 100644 --- a/src/Android/CleverTapUnityPlugin/clevertapsdk-unity/build.gradle +++ b/src/Android/CleverTapUnityPlugin/clevertapsdk-unity/build.gradle @@ -11,7 +11,7 @@ ext { targetSdkVersionVal = compileSdkVersionVal buildToolsVersionVal = "29.0.3" - libraryVersion = "2.1.0" + libraryVersion = "2.1.1" } android { @@ -49,7 +49,7 @@ repositories { dependencies { compileOnly fileTree('libs') - implementation 'com.clevertap.android:clevertap-android-sdk:4.0.0' + implementation 'com.clevertap.android:clevertap-android-sdk:4.0.2' implementation 'androidx.annotation:annotation:1.1.0' implementation 'androidx.appcompat:appcompat:1.2.0' } \ No newline at end of file diff --git a/src/Android/CleverTapUnityPlugin/gradle/wrapper/gradle-wrapper.properties b/src/Android/CleverTapUnityPlugin/gradle/wrapper/gradle-wrapper.properties index 554c8acd..73d59170 100644 --- a/src/Android/CleverTapUnityPlugin/gradle/wrapper/gradle-wrapper.properties +++ b/src/Android/CleverTapUnityPlugin/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Oct 06 15:49:42 IST 2020 +#Fri Jan 29 12:19:25 IST 2021 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip