Skip to content

Commit 0846d70

Browse files
authored
Merge pull request #410 from Iterable/MOB-4207-version-1.3.7
[MOB-4207] version 1.3.7
2 parents 66baa3f + 0d38b65 commit 0846d70

File tree

5 files changed

+508
-397
lines changed

5 files changed

+508
-397
lines changed

CHANGELOG.md

+86
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,89 @@
1+
## 1.3.7
2+
Starting with this release, as a privacy enhancement, Iterable’s React Native
3+
SDK encrypts some data stored at rest.
4+
5+
#### iOS updates
6+
In iOS apps, Iterable's React Native SDK now encrypts the following fields when
7+
storing them at rest:
8+
9+
- `email` — The user's email address.
10+
- `userId` — The user's ID.
11+
- `authToken` — The JWT used to authenticate the user with Iterable's API.
12+
- `lastPushPayload` — The JSON payload that came along with the last push
13+
notification received by the app.
14+
15+
(Note that, in iOS apps, Iterable's React Native SDK does not store in-app
16+
messages at rest—before or after this update.)
17+
18+
When a user upgrades to a version of your app that uses this version of the SDK
19+
(or higher), the fields shown above are encrypted. No data that's already stored
20+
is lost.
21+
22+
For more information about this encryption in iOS, examine the source code for
23+
Iterable's iOS SDK (upon which the React Native SDK relies):
24+
25+
- [`IterableKeychain`](https://github.com/Iterable/swift-sdk/blob/master/swift-sdk/Internal/IterableKeychain.swift)
26+
- [`KeychainWrapper`](https://github.com/Iterable/swift-sdk/blob/master/swift-sdk/Internal/KeychainWrapper.swift)
27+
28+
#### Android updates
29+
For Android, this release includes support for encrypting some data at rest,
30+
and an option to store in-app messages in memory.
31+
32+
##### Encrypted data
33+
In Android apps with `minSdkVersion` 23 or higher ([Android 6.0](https://developer.android.com/studio/releases/platforms#6.0))
34+
Iterable's React Native SDK now encrypts the following fields when storing
35+
them at rest:
36+
37+
- `email` — The user's email address.
38+
- `userId` — The user's ID.
39+
- `authToken` — The JWT used to authenticate the user with Iterable's API.
40+
41+
(Note that, in Android apps, Iterable's React Native SDK does not store the last
42+
push payload at rest—before or after this update.)
43+
44+
For more information about this encryption in Android, examine the source code
45+
for Iterable's Android SDK (upon which the React Native SDK relies):
46+
[`IterableKeychain`](https://github.com/Iterable/iterable-android-sdk/blob/master/iterableapi/src/main/java/com/iterable/iterableapi/IterableKeychain.kt).
47+
48+
##### Storing in-app messages in memory
49+
This release also allows you to have your Android apps (regardless of `minSdkVersion`)
50+
store in-app messages in memory, rather than in an unencrypted local file.
51+
However, an unencrypted local file is still the default option.
52+
53+
To store in-app messages in memory, on `IterableConfig`, set
54+
`androidSdkUseInMemoryStorageForInApps` to `true` (defaults to `false`):
55+
56+
```javascript
57+
const config = new IterableConfig();
58+
// ... other configuration options ...
59+
config.androidSdkUseInMemoryStorageForInApps = true;
60+
Iterable.initialize('<YOUR_API_KEY>', config);
61+
```
62+
63+
When users upgrade to a version of your Android app that uses this version of
64+
the SDK (or higher), and you've set this configuration option to `true`, the
65+
local file used for in-app message storage (if it already exists) is deleted
66+
However, no data is lost.
67+
68+
##### Android upgrade instructions
69+
If your app targets API level 23 or higher, this is a standard SDK upgrade, with
70+
no special instructions.
71+
72+
If your app targets an API level less than 23, you'll need to make the following
73+
changes to your project (which allow your app to build, even though it won't
74+
encrypt data):
75+
76+
1. In `AndroidManifest.xml`, add `<uses-sdk tools:overrideLibrary="androidx.security" />`
77+
2. In your app's `app/build.gradle`:
78+
- Add `multiDexEnabled true` to the `default` object, under `android`.
79+
- Add `implementation androidx.multidex:multidex:2.0.1` to the `dependencies`.
80+
81+
### Objective-C compatibility headers for React Native 0.68+
82+
To help solve build errors that can arise when using Iterable's SDK with React
83+
Native 0.68+, which uses Objective-C++, we've created some Objective-C
84+
compatibility headers that you can import into your project. For details, read
85+
[Installing Iterable's React Native SDK — Step 3.3: Import the SDK](https://support.iterable.com/hc/articles/360045714132#step-3-3-import-the-sdk).
86+
187
## 1.1.0
288
#### Added
389
- Offline events processing

Iterable-React-Native-SDK.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ Pod::Spec.new do |s|
2424

2525
s.swift_version = '5.3'
2626

27-
s.dependency 'Iterable-iOS-SDK', '~> 6.4.7'
27+
s.dependency 'Iterable-iOS-SDK', '~> 6.4.8'
2828
s.dependency 'React-Core'
2929
end

android/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ def getModuleVersion() {
2222

2323
dependencies {
2424
implementation 'com.facebook.react:react-native:+'
25-
api 'com.iterable:iterableapi:3.4.9'
25+
api 'com.iterable:iterableapi:3.4.10'
2626
// api project(':iterableapi') // links to local android SDK repo rather than by release
2727
}

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@iterable/react-native-sdk",
3-
"version": "1.3.6",
3+
"version": "1.3.7",
44
"description": "Iterable SDK for React Native.",
55
"main": "./js/index.js",
66
"types": "./js/index.d.ts",

0 commit comments

Comments
 (0)