Skip to content

Commit

Permalink
Merge pull request #23 from CleverTap/2.1.1
Browse files Browse the repository at this point in the history
SDK-650: Release v2.1.1
  • Loading branch information
Aditi3 authored Feb 1, 2021
2 parents 4e48ffb + e7818d0 commit ea47412
Show file tree
Hide file tree
Showing 198 changed files with 1,139 additions and 166 deletions.
63 changes: 34 additions & 29 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)*

Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
11 changes: 5 additions & 6 deletions Plugin/CleverTapUnity/Editor/CleverTapPostBuildProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/CleverTapSDK
Binary file not shown.
Binary file modified Plugin/CleverTapUnity/iOS/CleverTapSDK.framework/Info.plist
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand All @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<SDAnimatedImageCoder> animatedCoder;

@end

/**
Expand All @@ -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(<UIKit/UITraitCollection.h>)
+ (nullable instancetype)imageNamed:(nonnull NSString *)name inBundle:(nullable NSBundle *)bundle compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection; // Cache in memory, no Asset Catalog support
Expand Down Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
/*
* This file is part of the SDWebImage package.
* (c) Olivier Poitrey <rs@dailymotion.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

#import <Foundation/Foundation.h>
#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<SDAnimatedImageProvider>)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<SDAnimatedImageProvider>)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
Loading

0 comments on commit ea47412

Please sign in to comment.