Releases: Iterable/iterable-android-sdk
3.5.0-alpha2
3.5.0-alpha1
3.4.11
Added
-
Custom push notification sounds! To play a custom sound for a push notification, add a sound file to your app's
res/rawfolder and specify that same filename when setting up a template in Iterable.Some important notes about custom sounds and notification channels:
- Android API level 26 introduced notification channels. Every notification must be assigned to a channel.
- 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).
- 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.mp3creates a notification channel calledPaid. The end user can see this notification channel name in their device's notification channel settings. - Be sure to place the corresponding sound file in your app's
res/rawdirectory.
-
To help you access a user's
emailaddress,userId, andauthToken, the SDK now provides convenience methods:getEmail(),getUserId(), andgetAuthToken().
Changed
-
Updated the Security library and improved
EncryptedSharedPreferenceshandling.To work around a known Android issue that can cause crashes when creating
EncryptedSharedPreferences, we've upgradedandroidx.security.cryptofrom version1.0.0to1.1.0-alpha04. WhenEncryptedSharedPreferencescannot be created, the SDK now usesSharedPreferences(unencrypted).If your app requires encryption, you can prevent this fallback to
SharedPreferencesby setting theencryptionEnforcedconfiguration flag totrue. However, if you enable this flag andEncryptedSharedPreferencescannot be created, an exception will be thrown. -
Improved JWT token management. This change addresses an issue where
nullvalues could prevent the refresh of a JWT token.
Fixed
-
Fixed an issue which could prevent in-app messages from respecting the Position value selected when setting up the template (top / center / bottom / full).
-
Fixed crashes that sometimes happened during in-app message animations.
3.4.10
Warning
Some users have reported crashes in apps built with version 3.4.10 of
Iterable's Android SDK. We're investigating the issue. In the meantime, please
test thoroughly. If you see crashes, revert to version 3.4.9.
This release includes support for encrypting some data at rest, and an option to
store in-app messages in memory.
Encrypted data
In Android apps with minSdkVersion 23 or higher (Android 6.0)
Iterable's Android SDK now encrypts the following fields when storing them at
rest:
email— The user's email address.userId— The user's ID.authToken— The JWT used to authenticate the user with Iterable's API.
(Note that Iterable's Android SDK does not store the last push payload at
rest—before or after this update.)
For more information about this encryption in Android, examine the source code
for Iterable's Android SDK: IterableKeychain.
Storing in-app messages in memory
This release also allows you to have your Android apps (regardless of minSdkVersion)
store in-app messages in memory, rather than in an unencrypted local file.
However, an unencrypted local file is still the default option.
To store in-app messages in memory, set the setUseInMemoryStorageForInApps(true)
SDK configuration option (defaults to false):
Java
IterableConfig.Builder configBuilder = new IterableConfig.Builder()
// ... other configuration options ...
.setUseInMemoryStorageForInApps(true);
IterableApi.initialize(context, "<YOUR_API_KEY>", config);Kotlin
val configBuilder = IterableConfig.Builder()
// ... other configuration options ...
.setUseInMemoryStorageForInApps(true);
IterableApi.initialize(context, "<YOUR_API_KEY>", configBuilder.build());When users upgrade to a version of your Android app that uses this version of
the SDK (or higher), and you've set this configuration option to true, the
local file used for in-app message storage (if it already exists) is deleted
However, no data is lost.
Android upgrade instructions
If your app targets API level 23 or higher, this is a standard SDK upgrade, with
no special instructions.
If your app targets an API level less than 23, you'll need to make the following
changes to your project (which allow your app to build, even though it won't
encrypt data):
- In
AndroidManifest.xml, add<uses-sdk tools:overrideLibrary="androidx.security" /> - In your app's
app/build.gradle:- Add
multiDexEnabled trueto thedefaultobject, underandroid. - Add
implementation androidx.multidex:multidex:2.0.1to thedependencies.
- Add
3.4.9
Added
- Added new methods for
setEmail,setUserIdandupdateEmailwhich acceptsauthToken, providing more ways to passauthTokento SDK - Added two interface methods -
onTokenRegistrationSuccessfulandonTokenRegistrationFailed. Override these methods to see if authToken was successfully received by the SDK.
Changed
setAuthTokenmethod is now public allowing additional way to provideauthTokento SDK.
3.4.8
Removed
- Removed collection of advertising ID.
Fixed
- Fixed an issue where
disableDevicewould get called with no device token.
3.4.7
Added
- This release makes offline events processing available to all Iterable customers who'd like to use it — just ask your customer success manager to enable it for your account. Offline events processing saves a local copy of events triggered in your app while the device is offline (up to 1000 events). When a connection is re-established and your app is in the foreground, the events will be sent to Iterable. For more information, read Offline events processing.
3.4.6
Fixed
- Fixed an issue where configurations would not be loaded.
configinIterableApiis now accessed through sharedInstance.
Changed
trackPushOpeninIterableApiis now public.
3.4.5
3.4.4
Fixed
- Fixed a bug that caused in-app messages to always use a
toplayout (making them display at the top of the screen). This issue was introduced in version 3.4.0 of this SDK. If you’re using versions 3.4.0 - 3.4.3, please upgrade to this version (3.4.4) or later.