All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- nothing yet
- nothing yet
- nothing yet
- nothing yet
- In-app messages are now only consumed if they are shown
- The new email is now persisted when
updateEmail:
is called - SDK now ensures that only one in-app message can be shown at a time
- Fixed
spawnInAppNotification
to not block the current thread when creating the in-app notification
- Added support for push action buttons
- Added a new SDK initialization method that takes
IterableConfig
object with configuration options - User ID/email is now decoupled from SDK initialization. It can be changed by calling
setEmail:
orsetUserId:
on theIterableAPI
instance. - Added automatic detection of APNS/APNS_SANDBOX, as long as both
pushIntegrationName
andsandboxPushIntegrationName
are set inIterableConfig
- The SDK now stores attribution data within 24 hours of opening the app from a push notififcation or from a Universal Link in an email
- Added two delegates:
IterableUrlDelegate
andIterableCustomActionDelegate
that can be used to customize URL and custom action handling for push notifications
- Old initialization methods (
sharedInstanceWithApiKey:
) are now deprecated - Old
registerToken
methods are now deprecated
- Added safety checks for cases when email or userId is nil
- Replace
[IterableAPI sharedInstanceWithApiKey:...]
with the following:
IterableConfig *config = [[IterableConfig alloc] init];
config.pushIntegrationName = "myPushIntegration_Prod";
config.sandboxPushIntegrationName = "myPushIntegration_Dev";
config.urlDelegate = self; // If you want to handle URLs coming from push notifications
[IterableAPI initializeWithApiKey:@"YOUR API KEY" launchOptions:launchOptions config:config];
- Since both pushIntegrationName and sandboxPushIntegrationName are now set in the configuration, call
[[IterableAPI sharedInstance] registerToken:token]
when registering the token, and it will choose the correct integration name automatically. [IterableAPI clearSharedInstance]
will do nothing if you initialize the SDK with the new initialization method. If you were previously calling[IterableAPI clearSharedInstance]
to reinitialize the API with a new user, just callsetEmail:
orsetUserId:
instead.- User email/userId is now persisted, so you'll only need to call
setEmail:
orsetUserId:
when the user logs in or logs out. - The SDK now tracks push opens automatically, as long as calls to
userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
are passed to it. See README for instructions. Once it is set up, remove all direct calls totrackPushOpen:
.
- Fixed an unhandled exception in response handling on network errors
- Added the
updateEmail
function to update the user's email.
- SDK methods now properly handle 4xx and 5xx status codes, calling onFailure with the error message received from the server.
- Fixed missing compiled version of the IterableDeeplinkManager.
- Changed logic for
getAndTrackDeeplink
to not follow re-directs and return the first url redirect location instead.
- Fixes nil data in sendRequest onFailureHandler
- Fixes outdated artifacts file for
updateSubscriptions
release
- Added the
updateSubscriptions
function to create to modify channel, list, and message subscription preferences.
- Added the
showIterableNotificationHTML
function to create html based in-app notifications
- Changed the
spawnInAppNotification
function to parse html formatted notifications.
- Added the
clearSharedInstance
function to reset the stored Iterable instance. - Added the
updateUser
function to add or modify user Fields.
- Changed the
spawnInAppNotification
function to automatically consume messages from the user messages queue.
- Fixed missing header files for constants.
- Added the
inAppConsume
function to remove in-app messages from the user queue.
- Changed the
spawnInAppNotification
function to automatically consume messages from the user messages queue.
- Fixed url query string parameter encoding for get requests.
- Fixed rendering of In-App notification to be on top of other views.
- added the
getAndTrackDeeplink
function to track links sent by Iterable and retrieves the destination deeplink url
- added support for In-App Notifications with different views layouts
- Full screen
- Bottom
- Center
- Top
- includes tracking for In-App opens and clicks
- includes support for GET requests
- added support for system styled dialogs
- Prefixed common method names
- included the latest artifacts
- added in new overloaded function for
initWithApiKey
to allow for custom launchOptions not passed fromapplication:didFinishLaunchingWithOptions
- include the latest artifacts
- added back in
initWithApiKey
- added
userId
property - added new overloaded function for sharedInstanceWithApiKey to pass in a userId instead of an email.
- removed header for
initWithApiKey
- changed the arguments of the following apis to use
userId
if anemail
does not exist:track
,trackPushOpen
,registerToken
, anddisableDevice
.
Released on 2016-09-08
- now includes transactionIds along with push notifications
Released on 2016-07-19
- now includes disableDevice API
- removed device name from
registerToken
call as it might contain user sensitive data (the user's name)
Released on 2016-06-22
- removed JSONModel from dependencies in Podspec
Released on 2016-06-22
- now comes with compiled universal static library and public headers in the
Artifacts
directory
registerToken
no longer checks the token to be 32 bytes/64 hex charsJSONModel
removed from project; no longer needs any outside libraries; someCommerceItem
/trackPurchase
APIs changed as a result of this- removed
Pods
integration
registerToken
now calls the failure handler if an invalidPushServicePlatform
is passed in
Released on 2016-06-07
- completion handler blocks for all the Iterable APIs
- class to represent Iterable notification metadata
- no longer tracks push opens from test and proof pushes
- no longer tracks push opens from ghost pushes
Released on 2016-06-06
- NSURLConnection is deprecated as of iOS9; this release drops in its replacement, NSURLSession
Released on 2016-06-02
- fleshed out README
- added CHANGELOG
- added CONTRIBUTING
- new logging system
- nullability annotations
- overrides/defaults for methods that take nullable params
- unessential logging in non-DEBUG builds
- updated pod version to 7.0 (from 5.0) in preparation for NSURLSession
- logging changes
Released on 2016-05-25
- Unit tests for several internal methods
- More documentation