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
- 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.
43
+
44
+
Some important notes about custom sounds and notification channels:
45
+
46
+
- Android API level 26 introduced [notification channels](https://developer.android.com/develop/ui/views/notifications/channels). Every notification must be assigned to a channel.
47
+
- 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).
48
+
- 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.
49
+
- Be sure to place the corresponding sound file in your app's `res/raw` directory.
50
+
51
+
- To help you access a user's `email` address, `userId`, and `authToken`, the SDK now provides convenience methods: `getEmail()`, `getUserId()`, and `getAuthToken()`.
52
+
53
+
#### Changed
54
+
55
+
- Updated the [Security library](https://developer.android.com/topic/security/data) and improved `EncryptedSharedPreferences` handling.
56
+
57
+
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).
58
+
59
+
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.
60
+
61
+
- Improved JWT token management. This change addresses an issue where `null` values could prevent the refresh of a JWT token.
62
+
63
+
#### Fixed
19
64
65
+
- Fixed an issue which could prevent in-app messages from respecting the **Position** value selected when setting up the template (top / center / bottom / full).
66
+
67
+
- Fixed crashes that sometimes happened during in-app message animations.
This release includes support for encrypting some data at rest, and an option to
71
+
store in-app messages in memory.
72
+
73
+
#### Encrypted data
74
+
75
+
In Android apps with `minSdkVersion` 23 or higher ([Android 6.0](https://developer.android.com/studio/releases/platforms#6.0))
76
+
Iterable's Android SDK now encrypts the following fields when storing them at
77
+
rest:
78
+
79
+
-`email` — The user's email address.
80
+
-`userId` — The user's ID.
81
+
-`authToken` — The JWT used to authenticate the user with Iterable's API.
82
+
83
+
(Note that Iterable's Android SDK does not store the last push payload at
84
+
rest—before or after this update.)
85
+
86
+
For more information about this encryption in Android, examine the source code
87
+
for Iterable's Android SDK: [`IterableKeychain`](https://github.com/Iterable/iterable-android-sdk/blob/master/iterableapi/src/main/java/com/iterable/iterableapi/IterableKeychain.kt).
88
+
89
+
#### Storing in-app messages in memory
90
+
91
+
This release also allows you to have your Android apps (regardless of `minSdkVersion`)
92
+
store in-app messages in memory, rather than in an unencrypted local file.
93
+
However, an unencrypted local file is still the default option.
94
+
95
+
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
138
- 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