You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- SDK now handles `null` scenarios preventing crashes when `IterableEncryptedSharedPreference` creation fails.
24
+
- Updated crypto library to version [1.1.0-alpha06](https://developer.android.com/jetpack/androidx/releases/security#1.1.0-alpha06). [1.1.0-alpha05](https://developer.android.com/jetpack/androidx/releases/security#1.1.0-alpha05) solves a race condition during creation process.
This release allows you to use projects hosted on Iterable's EU data center. If your project is hosted on Iterable's [European data center (EUDC)](https://support.iterable.com/hc/articles/17572750887444), configure the SDK to use Iterable's EU-based API endpoints:
- Addressed React Native SDK push notification deep linking issues where the app would restart instead of resuming the last activity upon being backgrounded.
53
+
- Resolves an additional push notification problem wherein the customActionHandler and urlHandler were not being invoked in specific scenarios, as documented in issue #470. (Credit to @tnortman-jabra for the report and the fix)
- Custom push notification sounds! To play a custom sound for a push notification, add a sound file to your app's `res/raw` folder and specify that same filename when setting up a template in Iterable.
80
+
81
+
Some important notes about custom sounds and notification channels:
82
+
83
+
- Android API level 26 introduced [notification channels](https://developer.android.com/develop/ui/views/notifications/channels). Every notification must be assigned to a channel.
84
+
- Each custom sound you add to an Iterable template creates a new Android notification channel. The notification channel's name matches the filename of the sound (without its extension).
85
+
- To ensure sensible notification channel names for end users, give friendly names to your sound files. For example, a custom sound file with name `Paid.mp3` creates a notification channel called `Paid`. The end user can see this notification channel name in their device's notification channel settings.
86
+
- Be sure to place the corresponding sound file in your app's `res/raw` directory.
87
+
88
+
- To help you access a user's `email` address, `userId`, and `authToken`, the SDK now provides convenience methods: `getEmail()`, `getUserId()`, and `getAuthToken()`.
19
89
90
+
#### Changed
91
+
92
+
- Updated the [Security library](https://developer.android.com/topic/security/data) and improved `EncryptedSharedPreferences` handling.
93
+
94
+
To work around a [known Android issue](https://issuetracker.google.com/issues/164901843) that can cause crashes when creating `EncryptedSharedPreferences`, we've upgraded `androidx.security.crypto` from version `1.0.0` to `1.1.0-alpha04`. When `EncryptedSharedPreferences` cannot be created, the SDK now uses `SharedPreferences` (unencrypted).
95
+
96
+
If your app requires encryption, you can prevent this fallback to `SharedPreferences` by setting the `encryptionEnforced` configuration flag to `true`. However, if you enable this flag and `EncryptedSharedPreferences` cannot be created, an exception will be thrown.
97
+
98
+
- Improved JWT token management. This change addresses an issue where `null` values could prevent the refresh of a JWT token.
99
+
100
+
#### Fixed
101
+
102
+
- Fixed an issue which could prevent in-app messages from respecting the **Position** value selected when setting up the template (top / center / bottom / full).
103
+
104
+
- Fixed crashes that sometimes happened during in-app message animations.
This release includes support for encrypting some data at rest, and an option to
108
+
store in-app messages in memory.
109
+
110
+
#### Encrypted data
111
+
112
+
In Android apps with `minSdkVersion` 23 or higher ([Android 6.0](https://developer.android.com/studio/releases/platforms#6.0))
113
+
Iterable's Android SDK now encrypts the following fields when storing them at
114
+
rest:
115
+
116
+
-`email` — The user's email address.
117
+
-`userId` — The user's ID.
118
+
-`authToken` — The JWT used to authenticate the user with Iterable's API.
119
+
120
+
(Note that Iterable's Android SDK does not store the last push payload at
121
+
rest—before or after this update.)
122
+
123
+
For more information about this encryption in Android, examine the source code
124
+
for Iterable's Android SDK: [`IterableKeychain`](https://github.com/Iterable/iterable-android-sdk/blob/master/iterableapi/src/main/java/com/iterable/iterableapi/IterableKeychain.kt).
125
+
126
+
#### Storing in-app messages in memory
127
+
128
+
This release also allows you to have your Android apps (regardless of `minSdkVersion`)
129
+
store in-app messages in memory, rather than in an unencrypted local file.
130
+
However, an unencrypted local file is still the default option.
131
+
132
+
To store in-app messages in memory, set the `setUseInMemoryStorageForInApps(true)`
- Added new methods for `setEmail`, `setUserId` and `updateEmail` which accepts `authToken`, providing more ways to pass `authToken` to SDK
22
175
- Added two interface methods - `onTokenRegistrationSuccessful` and `onTokenRegistrationFailed`. Override these methods to see if authToken was successfully received by the SDK.
def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/classes", excludes: fileFilter) //we use "debug" build type for test coverage (can be other)
def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/classes", excludes: fileFilter) //we use "debug" build type for test coverage (can be other)
0 commit comments