Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased]
- Added support for in-app messages in fully Jetpack Compose apps using a Dialog-based renderer (`IterableInAppDialogNotification`), removing the requirement for a `FragmentActivity`.
- Added `appAlreadyRunning` field to `trackPushOpen`. New `trackPushOpen(int, int, String, boolean, JSONObject)` overload sends the value through; existing overloads default to `false`.

## [3.8.0]
### Added
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1274,7 +1274,7 @@ public void registerDeviceToken(@NonNull String deviceToken) {
}

public void trackPushOpen(int campaignId, int templateId, @NonNull String messageId) {
queueOrExecute(() -> trackPushOpen(campaignId, templateId, messageId, null), "trackPushOpen(" + campaignId + ", " + templateId + ", " + maskPII(messageId) + ")");
trackPushOpen(campaignId, templateId, messageId, false, null);
}

/**
Expand All @@ -1283,14 +1283,26 @@ public void trackPushOpen(int campaignId, int templateId, @NonNull String messag
* @param templateId
*/
public void trackPushOpen(int campaignId, int templateId, @NonNull String messageId, @Nullable JSONObject dataFields) {
trackPushOpen(campaignId, templateId, messageId, false, dataFields);
}

/**
* Tracks when a push notification is opened on device.
* @param campaignId
* @param templateId
* @param messageId
* @param appAlreadyRunning Whether the app was already running when the push was received.
* @param dataFields
*/
public void trackPushOpen(int campaignId, int templateId, @NonNull String messageId, boolean appAlreadyRunning, @Nullable JSONObject dataFields) {
queueOrExecute(() -> {
if (messageId == null) {
IterableLogger.e(TAG, "messageId is null");
return;
}

apiClient.trackPushOpen(campaignId, templateId, messageId, dataFields);
}, "trackPushOpen(" + campaignId + ", " + templateId + ", " + maskPII(messageId) + ", dataFields)");
apiClient.trackPushOpen(campaignId, templateId, messageId, appAlreadyRunning, dataFields);
}, "trackPushOpen(" + campaignId + ", " + templateId + ", " + maskPII(messageId) + ", " + appAlreadyRunning + ", dataFields)");
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -587,13 +587,14 @@ public void trackEmbeddedSession(@NonNull IterableEmbeddedSession session) {
}
}

protected void trackPushOpen(int campaignId, int templateId, @NonNull String messageId, @Nullable JSONObject dataFields) {
protected void trackPushOpen(int campaignId, int templateId, @NonNull String messageId, boolean appAlreadyRunning, @Nullable JSONObject dataFields) {
JSONObject requestJSON = new JSONObject();

try {
if (dataFields == null) {
dataFields = new JSONObject();
}
dataFields.put(IterableConstants.KEY_APP_ALREADY_RUNNING, appAlreadyRunning);

addEmailOrUserIdToJson(requestJSON);
requestJSON.put(IterableConstants.KEY_CAMPAIGN_ID, campaignId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public final class IterableConstants {
public static final String HEADER_SDK_AUTHORIZATION = "Authorization";
public static final String HEADER_SDK_AUTH_FORMAT = "Bearer ";
public static final String HEADER_SDK_PROCESSOR_TYPE = "SDK-Request-Processor";
public static final String KEY_APP_ALREADY_RUNNING = "appAlreadyRunning";
public static final String KEY_APPLICATION_NAME = "applicationName";
public static final String KEY_CAMPAIGN_ID = "campaignId";
public static final String KEY_CURRENT_EMAIL = "currentEmail";
Expand Down
Loading