Changelog
Version 4.6.1 (October 30, 2024)
Changed
- Increased version number only.
Version 4.6.0 (October 22, 2024)
Added
- Added fraud detection measure
- Support 16kb page in Android15
getSdkVersion
added additional methodint getPatch()
Changed
- Change SDK version scheme to support semantic versioning.
getAppVersionAtInstall
now containsString getVersionName()
andString getVersionCode()
Version 4.5.6 (July 22, 2024)
Bug fixes
- Fixed Install Referrer not working properly.
Version 4.5.5 (13th June 2024)
Changed
- Increased version number only.
Version 4.5.4 (31th May 2024)
Changed
- Change Kotlin version from 1.6 to 1.8.
Version 4.5.3 (29th April 2024)
Changed
- Support for IronSource 8.0.0 was added.
Version 4.5.2 (8th April 2024)
Bug fixes
- The timestamps on user events now carry the millisecond the event happened instead of just the second.
Version 4.5.1 (5th February 2024)
Changed
- Increased version number only.
Version 4.5.0 (12th December 2023)
Changes
- The
UserEvent
classes have been changed such that you can now submit named custom dimensions instead of dimensions custom1/2/3. - All predefined event classes have been renamed, some have been removed or merged. See the migration guide you received for more details.
forwardAdImpression
now requires you to construct anAdImpression
object instead of passing individual parameters.
Bug fixes
- An issue was fixed on certain devices which would result in an invalid Advertiser ID to be reported.
- An issue was fixed which would have caused some internal events to be duplicated in some cases.
Removed
- The
EventDetails
class has been removed, the event name is now just a single string.
Version 4.4.1 (30th August 2023)
Changed
- Methods returning
Future<?>
have been changed to returnFuture<Void>
(which always resolves to null). - All methods returning
Future<T>
have been changed to returnAsyncFuture<T>
, allowing you to await the result from a coroutine usingAsyncFuture.await
. JustTrackSdk.toPromise
has been deprecated in favor ofAsyncFuture.registerPromiseCallback
.
Bug fixes
- Fixed a bug which would cause some methods of the predefined events to get obfuscated.
- Fixed a bug which would cause a crash if the AppSetId info is null.
- The handling of being in restricted mode when targeting Android SDK 33+ has been improved.
Version 4.4.0 (14th July 2023)
Added
JustTrackSdk.getUserId
was added to retrieve a future for the justtrack user ID.
Changed
- The justtrack SDK now provides the user and test group ID without waiting for the justtrack backend.
JustTrackSdk.attributeUser
was renamed toJustTrackSdk.getAttribution
.JustTrackSdk.onDestroy
was renamed toJustTrackSdk.shutdown
.JustTrackSdk.getAffiliateLink
was renamed toJustTrackSdk.createAffiliateLink
.JustTrackSdk.publishFirebaseAppInstanceId
was renamed toJustTrackSdk.setFirebaseAppInstanceId
.- Support was added to track in-app purchases made by version 6 of the BillingClient library.
- The bounds of many dependencies have been relaxed. OkHttp has been removed as a dependency.
Removed
JustTrackSdk.getCachedAttribution
was removed. UsegetUserId
orgetAttribution
instead.- The version of
JustTrackSdk.integrateWithIronSource
without any parameters was removed. UseintegrateWithIronSource(IronSourceUserIdSource.JustTrack)
instead. SdkBuilder.setEnableIronSourceIntegration(booean)
was removed. UsesetEnableIronSourceIntegration(boolean, IronSourceUserIdSource.JustTrack)
instead.
Bug fixes
- The justtrack SDK no longer performs disk I/O on the main thread.
- A potential deadlock has been removed when calling
JustTrack.notifyAppStart
from another thread while initializing the justtrack SDK at the same time.
Version 4.3.8 (29th March 2023)
Added
JustTrack.getInstance
now returns the current SDK instance if one was already created.setAutomaticInAppPurchaseTracking
was added to configure automatic in-app purchase tracking. It's enabled by default.
Removed
- You can now no longer manually forward in-app purchases. Use the automatic integration instead.
Version 4.3.7 (17th March 2023)
Added
runCallbacksOnMainThread
was added to the SDK builder to ensure all callbacks from the SDK run on the main thread.
Bug fixes
- Fixed a problem with the Unity Ads integration on minified builds.
Version 4.3.6 (2nd March 2023)
Added
forwardAdImpression
can now be called with an arbitrary string parameter instead of anAdFormat
.integrateWithAdColony
was added to automatically track ad impressions from AdColony.integrateWithAppLovin
was added to automatically track ad impressions from AppLovin.integrateWithChartboost
was added to automatically track ad impressions from Chartboost.integrateWithUnityAds
was added to automatically track ad impressions from Unity Ads.
Changed
- The
AdUnit
enum was renamed toAdFormat
and theRewardedVideo
value was renamed toRewarded
.RewardedInterstitial
,Native
, andAppOpen
have been added as new values, too. - The SDK now forwards the App Set ID to the backend.
Removed
- The deprecated versions of
forwardAdImpression
have been removed.
Version 4.3.5 (16th December 2022)
Changed
- Removed the length restriction for the in-app purchase token.
Version 4.3.4 (2nd December 2022)
Added
- The SDK now provides a method to track in-app purchases.
Changed
- You can now attach a currency to the events you are sending.
- If you are forwarding ad impressions, you now have to specify the currency for the revenue of the event.
- The integration with IronSource was changed to allow specifying the user ID source.
Version 4.3.3 (26th October 2022)
Added
- The SDK now provides the install source to the backend.
- You can now provide a custom user ID to the backend.
- Support for deep links was improved.
Changed
- The AD_ID permission was added to support Android 13.
- The SDK now imposes restrictions about the data you can send to the backend.
- The integration with Google Ads campaigns was improved.
Version 4.3.2 (4th August 2022)
Changed
- The SDK now provides a method
forwardAdImpression
to report ad impressions to the justtrack backend.
Bug fixes
- The SDK now validates the advertiser ID before handing it out to an app.
Version 4.3.1 (7th July 2022)
Changed
- Updated
androidx.lifecycle:lifecycle-process
from2.4.1
to2.5.0
.
Bug fixes
- The SDK now stores internal logs and metrics more carefully to avoid excessive memory usage.
Version 4.3.0 (6th May 2022)
Changed
- The SDK now handles timeouts while collecting information for a correct attribution better. This will make it more likely to receive an attribution event after the initial
Future
resolves should you have registered a listener.
Version 4.2.9 (1st April 2022)
Changed
- Renamed all occurrences of the Firebase instance ID to Firebase app instance ID. For example,
publishFirebaseInstanceId
is now calledpublishFirebaseAppInstanceId
.
Bug fixes
- The SDK now retrieves the Firebase app instance ID instead of the Firebase (installation) instance ID during automatic integration.
Version 4.2.8 (30th March 2022)
Added
- The SDK can now automatically detect the Firebase instance ID of a user and send it to the justtrack backend.
Changed
- Updated
androidx.lifecycle:lifecycle-process
from2.4.0
to2.4.1
. - Updated
com.squareup.okhttp3:okhttp
from3.14.9
to4.9.3
. - The targeted Android SDK version was changed from 31 to 30.
Bug fixes
- The SDK no longer crashes if it's destroyed while an HTTP request is still running.
- The SDK no longer deadlocks if someone is publishing hundreds of events per second.
Version 4.2.6 (11th February 2022)
Changed
- Updated
com.google.android.gms:play-services-ads-identifier
from18.0.1
to18.0.1
. - The minimum Android SDK version was raised from 16 to 21.
- Improved attribution precision.
Version 4.2.5 (17th December 2021)
Changed
- Updated
com.google.android.gms:play-services-ads-identifier
from17.1.0
to18.0.0
.
Version 4.2.4 (11th November 2021)
Added
- The SDK now provides methods to get the advertiser ID of the user and the test group ID of the user.
Changed
- The SDK now includes logic to retry fetching the attribution if it failed last time and some time has passed.
Bug fixes
- The SDK no longer blocks upon handling a new intent, instead this is done on a worker thread.
- The SDK no longer deadlocks when processing an event while handling an event produced from the session manager.
- The SDK no longer reports the end of the last session a second time upon the next app start.
Version 4.2.3 (25th August 2021)
Changed
- The SDK now automatically handles a network reconnect when fetching an attribution.
- Improved the error messages when you try to use an invalid API token.
- The SDK will now automatically send the revenue value with user events generated from ad impressions to the backend.
Version 4.2.2 (29th July 2021)
Changed
- Increased version to align with unity version.
Version 4.2.1 (28th July 2021)
Changed
- Increased likelihood that events reach the backend if the user is only using the app for a short time.
- Removed session debouncing logic, this is now completely handled on backend side.
Bug fixes
- Fixed a bug which could cause events to be published multiple times.
Version 4.2.0 (25th June 2021)
Changed
- Events tracking the progress of a user for a level or quest have been extended to automatically track the progress of the user and provide the duration the app was active during that time upon completion.
- The SDK no longer requests the
READ_PHONE_STATE
andACCESS_WIFI_STATE
permissions. - The session ID is now included in all events sent to the backend.
setTrackingId
now takes the provider of the tracking ID as a second parameter.- There can be only a single instance of the SDK from now on.
- Events without a unit are now tracked with a value of 0 (previously there were tracked with a value of 1).
Removed
- Removed
setRealTime
from all interfaces again as well asrealTime
event functionality. - It's no longer possible to set the duration for progression events by hand.
Bug fixes
- Fixed a bug where in some locales string would be converted to upper/lower case with the wrong locale.
Version 4.1.1 (18th Mai 2021)
Added
- Added
setRealTime
toHasCustomDimensions
to send predefined events without any delay.
Version 4.1.0 (17th Mai 2021)
Added
- Added
setRealTime
to theUserEventBuilder
to send events without any delay.
Removed
- Removed
setCurrentActivity
fromSdkBuilder
interface as it's no longer required.
Changed
- Replaced
com.google.android.gms:play-services-ads:20.0.0
dependency withcom.google.android.gms:play-services-ads-identifier:17.0.0
. - Added new dependency
androidx.lifecycle:lifecycle-process:2.3.1
. - Events are now persisted until they reached the justtrack servers at least once.
- Updated predefined user events:
- Added
UserCardShowEvent
- Added
UserNotificationClickEvent
- Added
UserCardClickEvent
- Added
AdOfferwallShowEvent
- Added
AdInterstitialShowEvent
- Added
AdRewardedShowEvent
- Added
AdBannerShowEvent
- Changed unit on
AdOfferwallCloseEvent
from seconds or milliseconds to count. - Changed unit on
AdInterstitialCloseEvent
from seconds or milliseconds to count. - Changed unit on
AdRewardedCloseEvent
from seconds or milliseconds to count. - Changed unit on
AdBannerCloseEvent
from seconds or milliseconds to count.
- Added
Bug fixes
- Fixed the timestamp on events which are constructed at app start and sent later.
Version 4.0.1 (30th April 2021)
Bug fixes
- Fixed predefined events to publish their custom parameters with the correct dimensions.
Version 4.0.0 (22nd April 2021)
Changed
- The implementation for standard events changed significantly. Each standard event now has an associated class and should be created via an instance of this class.
- Standard events now carry built-in dimensions next to the three custom dimensions.
- A
UserEvent
now takes aEventDetails
instance instead of aString
as thename
parameter. You can create aEventDetails
instance from a string, leaving category, element, and action empty. - There is now a short delay before sending user events to batch them.
- The justtrack SDK is now licensed under the MIT license.
- Added the current version name (if available) to the app version send to the backend.
- The
JustTrackSdkBuilder
has been simplified and now only depends on anActivity
orApplication
.
Added
- Added the
EventDetails
class to group event name, category, element, and action. Only the event name is mandatory. - Added a static class justtrack to record application start and load times before initializing the SDK.
Removed
- Removed units for level, currency, and average count.
- Removed
setEnableActivityTracking
from theSdkBuilder
interface.
Version 3.2.0 (6th April 2021)
Changed
AttributionResponse#getCampaign()
,AttributionResponse#getChannel()
andAttributionResponse#getNetwork()
now returnCampaign
,Channel
andNetwork
interfaces instead of the oldIdString
interface.RetargetingParameters#getUrl()
was replaced byRetargetingParameters#getUri()
to allow URIs with an unknown protocol (e.g., your app name) to be returned.
Added
- Added
Campaign
,Channel
andNetwork
interfaces. - Added
Campaign#getType()
to retrieve the type of a campaign. - Added
Channel#isIncent()
to retrieve the incent flag of the channel. - Added support for a preliminary retargeting result. This allows you to already display some welcome screen while the SDK is still waiting for the retargeting attribution to be confirmed by the justtrack backend (as this can take a few seconds). Therefore there is a new interface
PreliminaryRetargetingParameters
, a new methodJustTrackSdk#getPreliminaryRetargetingParameters()
, a new listener interfacePreliminaryRetargetingParametersListener
and a new methodJustTrackSdk#registerPreliminaryRetargetingParametersListener(PreliminaryRetargetingParametersListener)
to register said listener. After obtaining an instance ofPreliminaryRetargetingParameters
, you canvalidate()
them to check whether the user did really a retargeting campaign or whether they e.g. crafted theIntent
by hand.
Version 3.1.0 (16th March 2021)
Changed
- The SDK now fetches the attribution again after 5 seconds (default, can be changed) after a re-attribution opportunity was detected.
Added
- Added
setReFetchReAttributionDelaySeconds
to the SDK builder to control when attributions are fetched a second time after a re-attribution opportunity was detected.
Version 3.0.0 (22nd February 2021)
Changed
- Renamed various parts of the attribution response:
uuid
>userId
subId
>sourceId
subAppId
>sourceBundleId
adSetId
>adsetId
(small S)recruiter.clientId
>recruiter.packageId
- Added
recruiter.userId
,recruiter.platform
,installId
,userType
,sourcePlacement
to the attribution response - Updated
okhttp
dependency to 3.14.9 and play-services-ads dependency to 19.7.0 JustTrackSdkBuilder
andExistingJustTrackSdkBuilder
now take anIntent
as the second parameter.- Starting with this version, you have to implement
Activity#onNewIntent(Intent)
to allow the SDK to detect receiving intents while the app is already running.
Added
- Added
setInactivityTimeFrame(long)
andsetReAttributionTimeFrame(long)
to theSdkBuilder
interface. Use it to specify how often we need to fetch for a new (re-)attribution. By default we will fetch a new attribution every 14 days or after the SDK wasn't initialized for more than 48 hours. - Added
getRetargetingParameters
to theJustTrackSdk
interface. It provides the retargeting parameters the app was started with (if any, otherwisenull
). - Added
registerAttributionListener
andregisterRetargetingParametersListener
to the SDK as well as needed companion types. - Added
onNewIntent
to the SDK to notify it about new intents (if you don't callsetIntent
in your activity).
Version 2.4.2 (11th January 2021)
Changed
- The SDK now waits for some time before retrying requests.
- Allow the advertiser ID to be missing if we have a tracking ID.
Version 2.4.1 (11th December 2020)
Bug fixes
- Fixed wrong ad unit names in IronSource integration.
Version 2.4.0 (8th December 2020)
Added
- Added
setTrackingId(String)
toSdkBuilder
interface to provide a tracking ID (e.g., the AppsFlyer ID of the user) as an additional means of identifying the user. - Added
integrateWithIronSource()
toJustTrackSdk
interface. - Added
setEnableIronSourceIntegration(boolean)
toSdkBuilder
interface. - When you have the IronSource SDK integrated into your app, you can now automatically sent the
userId
to IronSource as well as subscribing to impression events as user events by callingintegrateWithIronSource()
orsetEnableIronSourceIntegration(true)
.
Version 2.3.3 (22th October 2020)
Changed
- The Logger interface was changed and supports additional fields now.
- The SDK now automatically sends logs to the justtrack backend.
- The SDK now sends additional information about the install referrer to the backend.
Bug fixes
- The SDK now correctly reports the Version of the app upon install.
Version 2.3.2 (8th October 2020)
Added
- Added setFirebaseInstanceId and publishFirebaseInstanceId methods to forward a firebase ID to the justtrack backend.
Version 2.3.1 (17th September 2020)
Changed
- The SDK now automatically publishes SESSION_APP_OPEN events each time the SDK detects an app launch.
Version 2.3.0 (7th September 2020)
Added
- Added getCachedAttribution method.
Changed
- The SDK will now automatically fetch a new attribution should the first attribution be younger than 15 minutes to make sure any changes on the backend side are propagated to the app eventually.
- An attribution now includes the campaign ID and name instead of just the ID.
Bug fixes
- Fixed a race condition resulting in invalid date strings.
Removed
- Removed the old event tracking ("notify"-calls) as the server side no longer accepts these messages.
- Removed
getAppInstallCount
method.
Version 2.2.3 (29th July 2020)
Added
- You can now get an existing SDK instance if one exists
- You can specify an activity which is currently active should you instantiate the SDK while the activity is already running (see
SdkBuilder#setCurrentActivity
).
Changed
- We're now sending the Android version instead of the Linux kernel version to the backend.
Version 2.2.2 (17th July 2020)
Added
- Added
level
andcurrency
units.
Version 2.2.1 (13th July 2020)
Added
- Added
setEnableBroadcastReceiver(boolean)
andsetEnableActivityTracking(boolean)
methods toSdkBuilder
.
Changed
- Changed package name to
io.justtrack
and updated domains to*.justtrack.io
. - It's no longer legal to call
get()
of a future returned by the SDK on the main thread.