From b6b5be7c5cdbe7317ae76d555a59cca235d3366d Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Mon, 11 Nov 2024 18:51:01 +0100 Subject: [PATCH 01/46] Add Adobe Air SDK v5 migration guide --- .../en/sdk/migration/adobe-air/index.mdoc | 7 + .../en/sdk/migration/adobe-air/v4-to-v5.mdoc | 491 ++++++++++++++++++ 2 files changed, 498 insertions(+) create mode 100644 src/content/docs/en/sdk/migration/adobe-air/index.mdoc create mode 100644 src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc diff --git a/src/content/docs/en/sdk/migration/adobe-air/index.mdoc b/src/content/docs/en/sdk/migration/adobe-air/index.mdoc new file mode 100644 index 000000000..889621018 --- /dev/null +++ b/src/content/docs/en/sdk/migration/adobe-air/index.mdoc @@ -0,0 +1,7 @@ +--- + title: Adjust Adobe Air + sidebar-label: Adobe Air + description: Follow these guides to migrate between SDK versions + type: category + sidebar-position: 8 +--- diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc new file mode 100644 index 000000000..4de1fe5fb --- /dev/null +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -0,0 +1,491 @@ +--- +title: Adobe Air SDK v5 migration guide +description: Follow this guide to upgrade from SDK v4 to SDK v5 +sidebar-label: SDK v5 migration guide +sidebar-position: 1 +--- + + +The [Adjust Adobe Air SDK](https://github.com/adjust/adobe_air_sdk) has been updated to v5. Follow this guide to migrate from v4 to the latest version. + +## Before you begin {%#before-you-begin%} + +Here's what you need to do before updating to Adobe Air SDK v5: + +1. Adobe Air SDK v5 has native support for the [SDK signature verification](https://help.adjust.com/en/article/sdk-signature) library. If you use the SDK signature library, remove it from your app. +2. The minimum supported iOS and Android versions have been updated. If your app targets a lower version, update it first. + + - iOS: **12.0** + - Android: **21** + +### Install the SDK {%#install-the-sdk%} + +To start using Adobe Air SDK v5, you need to add it as a dependency in your project. To do this, follow these steps: + +``` +package { + import com.adjust.sdk.Adjust; + import com.adjust.sdk.AdjustConfig; + import com.adjust.sdk.AdjustEnvironment; + import com.adjust.sdk.AdjustLogLevel; + } +``` + +### Android permissions + +In Adobe Air SDK v4, you needed to declare several permissions so that your Adobe Air app for Android could access device information via the Adjust SDK for Android. + +```xml + + + + +``` + +In Adobe Air SDK v5, you might not need to declare these permissions, depending on your setup. + +First, take advantage of two permissions included in the Adjust SDK for Android by default: +- `android.permission.INTERNET` +- `com.google.android.gms.permission.AD_ID` + +{% callout type="tip" %} + +you can [remove the](https://dev.adjust.com/en/sdk/android#add-permissions) `com.google.android.gms.AD_ID` permission from your Android manifest file with the following snippet: + +```xml + +``` + +{%/callout%} + +- `android.permission.ACCESS_WIFI_STATE` is no longer required. +- `android.permission.ACCESS_NETWORK_STATE` is optional. Use it to allow the SDK to access information about the network to which a device is connected and send callbacks parameters. + +### Update the initialization method {%#init-method%} + +{% minorversion changed="v5" size="large" /%} + +In Adobe Air SDK v5, the initialization method has changed to `Adjust.initSdk(adjustConfig)`. + +{% codeblock useDiffSyntax=true%} + +``` +-Adjust.start(adjustConfig); // v4 ++Adjust.initSdk(adjustConfig); // v5 +``` + +{% /codeblock %} + +#### Environment enumeration + +The environment enumeration has been renamed from `Environment` to `AdjustEnvironment`. + +``` +var environment:String = AdjustEnvironment.SANDBOX; +``` + +{% deflist %} + `environment`: `String` + + : The environment in which your device is running. + + - Pass `AdjustEnvironment.SANDBOX` when testing. + - Pass `AdjustEnvironment.PRODUCTION` when running the app in production. +{% /deflist %} + +#### Log level enumeration + +The log level enumeration has been renamed from `LogLevel` to `AdjustLogLevel`. + +``` +adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); +``` + +{% deflist %} + `setLogLevel`: `String` + + : The level of logging you want to enable. + + - `adjustConfig.setLogLevel(LogLevel.VERBOSE)`: enable all logging + - `adjustConfig.setLogLevel(LogLevel.DEBUG)`: enable more logging. + - `adjustConfig.setLogLevel(LogLevel.INFO)`: the default. + - `adjustConfig.setLogLevel(LogLevel.WARN)`: disable info logging. + - `adjustConfig.setLogLevel(LogLevel.ERROR)`: disable warnings as well. + - `adjustConfig.setLogLevel(LogLevel.ASSERT);`: disable errors as well. + - `adjustConfig.setLogLevel(LogLevel.SUPPRESS);`: disable all log output. +{% /deflist %} + +## Changed APIs {%#changed-apis%} + +{% minorversion changed="v5" size="large" /%} + +The following APIs have changed in Adobe Air SDK v5. + +### Disable and enable the SDK {%#disable-enable-sdk%} + +The `setEnabled` method is renamed and no longer called with a `boolean` value. + +Adobe Air SDK v5 introduces two separate methods, for clarity: + +- Call `Adjust.disable` to disable the SDK. +- Call `Adjust.enable` to enable the SDK. + +``` +Adjust.disable(); // disable SDK +Adjust.enable(); // enable SDK +``` + +### Send information in background {%#send-in-background%} + +The `setSendInBackground` method has been renamed to `enableSendingInBackground`. + +To enable the Adobe Air SDK v5 to send information to Adjust while your app is running in the background, call the `enableSendingInBackground` method on your `adjustConfig` instance. The default state is `false`. + +``` +adjustConfig.enableSendingInBackground(); +``` + +### Set attribution callback {%#attribution-callback%} + +The `setAttributionCallbackDelegate` method has been renamed in Adobe Air SDK v5 to `setAttributionCallback`. + +The properties of the `attribution` parameter have also changed: + +- The `var adid:String` is no longer part of the attribution. +- The `getAdGroup()` getter method has been renamed to `getAdgroup()`. + +The following properties have been added to the `attribution` parameter: + +- `var costType:String` +- `var costAmount:Number` +- `var costCurrency:String` +- `var fbInstallReferrer:String` + +Below is a sample snippet that implements these changes: + +``` +adjustConfig.setAttributionCallback(function (attribution:AdjustAttribution): void { +    trace("Tracker token = " + attribution.getTrackerToken()); +    trace("Tracker name = " + attribution.getTrackerName()); +    trace("Campaign = " + attribution.getCampaign()); +    trace("Network = " + attribution.getNetwork()); +    trace("Creative = " + attribution.getCreative()); +    trace("Adgroup = " + attribution.getAdgroup()); +    trace("Click label = " + attribution.getClickLabel()); +    trace("Cost type = " + attribution.getCostType()); +    trace("Cost amount = " + isNaN(attribution.getCostAmount()) ? "NaN" : attribution.getCostAmount().toString()); +    trace("Cost currency = " + attribution.getCostCurrency()); +    trace("FB install referrer = " + attribution.getFbInstallReferrer()); +}); +``` + +### Offline mode {%#offline-mode%} + +The `setOfflineMode` method is renamed and no longer called with a `boolean` value. + +Adobe Air SDK v5 introduces two separate methods, for clarity: + +- Call `Adjust.switchToOfflineMode` to set the SDK to offline mode. +- Call `Adjust.switchBackToOnlineMode` to set the SDK back to online mode. + +``` +Adjust.switchToOfflineMode(); // Put the SDK in offline mode +Adjust.switchBackToOnlineMode(); // Put the SDK back in online mode +``` + +### Session callback parameters {%#session-callback-parameters%} + +In Adobe Air SDK v5, the session callback parameters have been renamed to global callback parameters. + +To add global callbacks to your sessions, call the `Adjust.addGlobalCallbackParameter` method with the following arguments: + +{% deflist %} +`key`: `String` + +: The key of your parameter. + +`value`: `String` + +: The value of your parameter. +{% /deflist %} + + > TODO: Learn how to set up global callback. + +``` +Adjust.addGlobalCallbackParameter("callbackKey", "value"); +Adjust.removeGlobalCallbackParameter("callbackKey"); +Adjust.removeGlobalCallbackParameters(); +``` + +### Session partner parameters {%#session-partner-parameters%} + +In Adobe Air SDK v5, the session partner parameters have been renamed to global partner parameters. + +To add global partner to your sessions, call the `Adjust.addGlobalPartnerParameter` method with the following arguments: + +{% deflist %} +`key`: `String` + +: The key of your parameter. + +`value`: `String` + +: The value of your parameter. +{% /deflist %} + +> TODO: Learn how to set up global partner parameters. + +``` +Adjust.addGlobalPartnerParameter("partnerKey", "value"); +Adjust.removeGlobalPartnerParameter("partnerKey"); +Adjust.removeGlobalPartnerParameters(); +``` + +### Session success callbacks {%#session-success%} + +In Adobe Air SDK v5, the `sessionTrackingSucceededDelegate` method has been renamed to `setSessionSuccessCallback`. + +The `getTimeStamp()` method has been renamed to `getTimestamp()`. + +To register a successful session recording by the SDK, call the `setSessionSuccessCallback` with any of the following properties: + +``` +adjustConfig.setSessionSuccessCallback(function (sessionSuccess:AdjustSessionSuccess):void { + +// All session success properties. +    trace("Session tracking succeeded"); +    trace("Message = " + sessionSuccess.getMessage()); +    trace("Timestamp = " + sessionSuccess.getTimestamp()); +    trace("Adid = " + sessionSuccess.getAdid()); +    trace("Json Response = " + sessionSuccess.getJsonResponse()); +}); +``` + +### Session failure callbacks {%#session-failure%} + +In Adobe Air SDK v5, the `setSessionTrackingFailedDelegate` method has been renamed to `setSessionFailureCallback`. + +The `getTimeStamp()` method has been renamed to `getTimestamp()`. + +To register a failed session recording by the SDK, call the `setSessionFailureCallback` with any of the following properties: + +``` +adjustConfig.setSessionFailureCallback(function (sessionFailure:AdjustSessionFailure):void { + +// All session failure properties. +    trace("Session tracking failed"); +    trace("Message = " + sessionFailure.getMessage()); +    trace("Timestamp = " + sessionFailure.getTimestamp()); +    trace("Adid = " + sessionFailure.getAdid()); +    trace("Will Retry = " + sessionFailure.getWillRetry().toString()); +    trace("Json Response = " + sessionFailure.getJsonResponse()); +}); +``` + +### Event success callbacks {%#event-success%} + +In Adobe Air SDK v5, the `setEventTrackingSucceededDelegate` method has been renamed to `setEventSuccessCallback`. + +The `getTimeStamp()` method has been renamed to `getTimestamp()`. + +To register a successful event recording by the SDK, call the `setEventSuccessCallback` with any of the following properties: + +``` +adjustConfig.setEventSuccessCallback(function (eventSuccess:AdjustEventSuccess):void { + +// All event success properties. +trace("Event tracking succeeded"); +trace("Message = " + eventSuccess.getMessage()); +trace("Timestamp = " + eventSuccess.getTimestamp()); +trace("Adid = " + eventSuccess.getAdid()); +trace("Event Token = " + eventSuccess.getEventToken()); +trace("Callback Id = " + eventSuccess.getCallbackId()); +trace("Json Response = " + eventSuccess.getJsonResponse()); +}); +``` + +### Event failure callbacks {%#event-failure%} + +In Adobe Air SDK v5, the `setEventTrackingFailedDelegate` method has been renamed to `setEventFailureCallback`. + +The `getTimeStamp()` method has been renamed to `getTimestamp()`. + +To register a failed event recording by the SDK, call the `setEventFailureCallback` with any of the following properties: + +``` +adjustConfig.setEventFailureCallback(function (eventFailure:AdjustEventFailure):void { + +// All event failure properties. +    trace("Event tracking failed"); +    trace("Message = " + eventFailure.getMessage()); +    trace("Timestamp = " + eventFailure.getTimestamp()); +    trace("Adid = " + eventFailure.getAdid()); +    trace("Event Token = " + eventFailure.getEventToken()); +    trace("Callback Id = " + eventFailure.getCallbackId()); +    trace("Will Retry = " + eventFailure.getWillRetry().toString()); +    trace("Json Response = " + eventFailure.getJsonResponse()); +}); +``` + +### Event deduplication {%#event-deduplication%} + +In Adobe Air SDK v5, event deduplication is decoupled from the event `transaction ID`. A new ID field called `deduplicationId` has been added for event deduplication. + +``` +adjustEvent.setDeduplicationId("deduplicationId"); +``` + +### Push tokens {%#push-tokens%} + +In Adobe Air SDK v5, the `setDeviceToken` method has been renamed to `setPushToken`. + +``` +Adjust.setPushToken("push-token"); +``` + +### Reattribution using deep links {%#reattribution-using-deep-links%} + +In Adobe Air SDK v5, the `appWillOpenUrl` method has been renamed to `processDeeplink`. + +A new `AdjustDeeplink` class has been added for constructing deep links. To process a deep link, instantiate an `AdjustDeeplink` object with your deep link URL and pass it to the `Adjust.processDeeplink` method. + +``` +var deeplink:String = event.arguments[0]; +    trace("Deep link = " + deeplink); +    var adjustDeeplink:AdjustDeeplink = new AdjustDeeplink("url"); +    Adjust.processDeeplink(adjustDeeplink); +``` + +### Disable opening deferred deep links {%#launch-deferred-deep-links%} + +In Adobe Air SDK v5, the `setShouldLaunchDeeplink` method has been renamed to `disableDeferredDeeplinkOpening`. Opening deferred deep links is enabled by default. + + +To disable opening deferred deep links, call the renamed method: + +``` +adjustConfig.disableDeferredDeeplinkOpening(); +``` + +### Deep link callback listener {%#deep-link-callback-listener%} + +In Adobe Air SDK v5, the `setDeferredDeeplinkDelegate` method has been renamed to `setDeferredDeeplinkCallback`. + + +To set a deferred deep link callback, call the `setDeferredDeeplinkCallback` method on your `AdjustConfig` instance: + +``` +adjustConfig.setDeferredDeeplinkCallback(function (deeplink:String):void { +    trace("Received deferred deep link"); +    trace("Deep link = " + deeplink); +}); +``` + +### SKAdNetwork handling (iOS only) + +In Adobe Air SDK v5, the `deactivateSKAdNetworkHandling` method has been renamed to `disableSkanAttribution`. The default state is `true`. + +To disable the SKAdNetwork communication, call the `disableSkanAttribution` method on your `adjustConfig` instance. + +``` +adjustConfig.disableSkanAttribution(); +``` + +### App Tracking Transparency authorization wrapper {%#att-wrapper%} + +**(iOS only)** + +In Adobe Air SDK v5, the `requestTrackingAuthorizationWithCompletionHandler` method has been renamed to `requestAppTrackingAuthorization` for clarity. + +The renamed method is invoked like so: + +``` +Adjust.requestAppTrackingAuthorization(function (status:String):void { +    trace("Status = " + status); +}); +``` + +### Get device information {%#device-info%} + +In Adobe Air SDK v4, all device information getter methods run synchronously. In SDK v5, the following methods have been changed to run asynchronously. + +#### Apple's Identifier for Advertisers (IDFA) + +{% codeblock title="IDFA getter"%} +``` +Adjust.getIdfa(function (idfa:String): void { +    trace("IDFA = " + idfa); +}); +``` +{% /codeblock %} + +#### Amazon Advertising ID + +{% codeblock title="Amazon ADID getter"%} +``` +Adjust.getAmazonAdId(function (amazonAdId:String):void { +    trace("Amazon Advertising ID = " + amazonAdId); +}); +``` +{% /codeblock %} + +#### Adjust ID + +{% codeblock title="Adjust ID getter"%} +``` +Adjust.getAdid(function (adid:String):void { +    trace("Adjust ID = " + adid); +}); +``` +{% /codeblock %} + +#### Attribution + +{% codeblock title="Attribution getter"%} +``` +Adjust.getAttribution(function (attribution:AdjustAttribution): void { +    trace("Tracker token = " + attribution.getTrackerToken()); +    trace("Tracker name = " + attribution.getTrackerName()); +    trace("Campaign = " + attribution.getCampaign()); +    trace("Network = " + attribution.getNetwork()); +    trace("Creative = " + attribution.getCreative()); +    trace("Adgroup = " + attribution.getAdgroup()); +    trace("Click label = " + attribution.getClickLabel()); +    trace("Cost type = " + attribution.getCostType()); +    trace("Cost amount = " + isNaN(attribution.getCostAmount()) ? "NaN" : attribution.getCostAmount().toString()); +    trace("Cost currency = " + attribution.getCostCurrency()); +    trace("FB install referrer = " + attribution.getFbInstallReferrer()); +}); +``` +{% /codeblock %} + +## Removed APIs {%#removed-apis%} + +{% minorversion removed="v5" size="large" /%} + +The following APIs have been removed from Adobe Air SDK v5. + +- The `setDelayStart` method has been removed. +- The `setEventBufferingEnabled` method has been removed. +- The `setReadMobileEquipmentIdentity` method has been removed. (**non-Google Play Store Android apps only**) + +### Disable third party sharing globally {%#disable-sharing-globally%} + +The `disableThirdPartySharing` method has been removed. + +To enable or disable all third-party sharing in Adobe Air SDK v5, use the `trackThirdPartySharing` method. + +``` +var adjustThirdPartySharing:AdjustThirdPartySharing = new AdjustThirdPartySharing("false"); +Adjust.trackThirdPartySharing(adjustThirdPartySharing); +``` + +### Set an App Secret {%#set-app-secret%} + +The `setAppSecret` method has been removed. + +The [SDK signature library](https://help.adjust.com/en/article/sdk-signature) is bundled in Adjust SDKs v5 and enabled by default. To configure the anti-spoofing solution in the Adjust Dashboard, follow [the integration guide](https://help.adjust.com/en/article/sdk-signature#get-started) for your platform. + +### Huawei referrer API + +This feature has been removed. If your Adobe Air app uses the Huawei referrer API, contact your Adjust representative or email [support@adjust.com](mailto:support@adjust.com) before you upgrade. From 2c22638ba331f25165d5fae3957c89537cd5116e Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 12 Nov 2024 10:51:57 +0100 Subject: [PATCH 02/46] Copy and formatting fixes --- .../en/sdk/migration/adobe-air/v4-to-v5.mdoc | 102 +++++++++--------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 4de1fe5fb..e0ac39074 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -22,7 +22,7 @@ Here's what you need to do before updating to Adobe Air SDK v5: To start using Adobe Air SDK v5, you need to add it as a dependency in your project. To do this, follow these steps: -``` +```actionscript package { import com.adjust.sdk.Adjust; import com.adjust.sdk.AdjustConfig; @@ -31,36 +31,34 @@ package { } ``` -### Android permissions +### Android permissions {%#android-permissions%} In Adobe Air SDK v4, you needed to declare several permissions so that your Adobe Air app for Android could access device information via the Adjust SDK for Android. +{% codeblock title="AndroidManifest.xml"%} + ```xml ``` +{%/codeblock%} -In Adobe Air SDK v5, you might not need to declare these permissions, depending on your setup. +In Adobe Air SDK v5, you can delete some or all, depending on your setup. -First, take advantage of two permissions included in the Adjust SDK for Android by default: -- `android.permission.INTERNET` -- `com.google.android.gms.permission.AD_ID` +- `android.permission.INTERNET` is bundled in the Adjust SDK for Android. +- `android.permission.ACCESS_WIFI_STATE` is no longer required. +- `android.permission.ACCESS_NETWORK_STATE` is optional. This allows the SDK to access information about the network a device is connected to, and send callbacks parameters. -{% callout type="tip" %} +#### COPPA (Children's Online Privacy Protection Act) or third-party stores -you can [remove the](https://dev.adjust.com/en/sdk/android#add-permissions) `com.google.android.gms.AD_ID` permission from your Android manifest file with the following snippet: +- `com.google.android.gms.permission.AD_ID` is bundled in the Adjust SDK for Android. You can [remove it](https://dev.adjust.com/en/sdk/android#add-permissions) with the following snippet: ```xml ``` -{%/callout%} - -- `android.permission.ACCESS_WIFI_STATE` is no longer required. -- `android.permission.ACCESS_NETWORK_STATE` is optional. Use it to allow the SDK to access information about the network to which a device is connected and send callbacks parameters. - ### Update the initialization method {%#init-method%} {% minorversion changed="v5" size="large" /%} @@ -69,7 +67,7 @@ In Adobe Air SDK v5, the initialization method has changed to `Adjust.initSdk(ad {% codeblock useDiffSyntax=true%} -``` +```actionscript -Adjust.start(adjustConfig); // v4 +Adjust.initSdk(adjustConfig); // v5 ``` @@ -78,9 +76,9 @@ In Adobe Air SDK v5, the initialization method has changed to `Adjust.initSdk(ad #### Environment enumeration -The environment enumeration has been renamed from `Environment` to `AdjustEnvironment`. +In Adobe Air SDK v5, the environment enumeration has been renamed from `Environment` to `AdjustEnvironment`. -``` +```actionscript var environment:String = AdjustEnvironment.SANDBOX; ``` @@ -95,9 +93,9 @@ var environment:String = AdjustEnvironment.SANDBOX; #### Log level enumeration -The log level enumeration has been renamed from `LogLevel` to `AdjustLogLevel`. +In Adobe Air SDK v5, the log level enumeration has been renamed from `LogLevel` to `AdjustLogLevel`. -``` +```actionscript adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); ``` @@ -107,11 +105,11 @@ adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); : The level of logging you want to enable. - `adjustConfig.setLogLevel(LogLevel.VERBOSE)`: enable all logging - - `adjustConfig.setLogLevel(LogLevel.DEBUG)`: enable more logging. + - `adjustConfig.setLogLevel(LogLevel.DEBUG)`: disable verbose logging. - `adjustConfig.setLogLevel(LogLevel.INFO)`: the default. - - `adjustConfig.setLogLevel(LogLevel.WARN)`: disable info logging. - - `adjustConfig.setLogLevel(LogLevel.ERROR)`: disable warnings as well. - - `adjustConfig.setLogLevel(LogLevel.ASSERT);`: disable errors as well. + - `adjustConfig.setLogLevel(LogLevel.WARN)`: log only errors and warnings. + - `adjustConfig.setLogLevel(LogLevel.ERROR)`: log only errors. + - `adjustConfig.setLogLevel(LogLevel.ASSERT);`: disable errors. - `adjustConfig.setLogLevel(LogLevel.SUPPRESS);`: disable all log output. {% /deflist %} @@ -130,7 +128,7 @@ Adobe Air SDK v5 introduces two separate methods, for clarity: - Call `Adjust.disable` to disable the SDK. - Call `Adjust.enable` to enable the SDK. -``` +```actionscript Adjust.disable(); // disable SDK Adjust.enable(); // enable SDK ``` @@ -141,7 +139,7 @@ The `setSendInBackground` method has been renamed to `enableSendingInBackground` To enable the Adobe Air SDK v5 to send information to Adjust while your app is running in the background, call the `enableSendingInBackground` method on your `adjustConfig` instance. The default state is `false`. -``` +```actionscript adjustConfig.enableSendingInBackground(); ``` @@ -163,7 +161,7 @@ The following properties have been added to the `attribution` parameter: Below is a sample snippet that implements these changes: -``` +```actionscript adjustConfig.setAttributionCallback(function (attribution:AdjustAttribution): void {     trace("Tracker token = " + attribution.getTrackerToken());     trace("Tracker name = " + attribution.getTrackerName()); @@ -188,7 +186,7 @@ Adobe Air SDK v5 introduces two separate methods, for clarity: - Call `Adjust.switchToOfflineMode` to set the SDK to offline mode. - Call `Adjust.switchBackToOnlineMode` to set the SDK back to online mode. -``` +```actionscript Adjust.switchToOfflineMode(); // Put the SDK in offline mode Adjust.switchBackToOnlineMode(); // Put the SDK back in online mode ``` @@ -211,7 +209,7 @@ To add global callbacks to your sessions, call the `Adjust.addGlobalCallbackPara > TODO: Learn how to set up global callback. -``` +```actionscript Adjust.addGlobalCallbackParameter("callbackKey", "value"); Adjust.removeGlobalCallbackParameter("callbackKey"); Adjust.removeGlobalCallbackParameters(); @@ -235,7 +233,7 @@ To add global partner to your sessions, call the `Adjust.addGlobalPartnerParamet > TODO: Learn how to set up global partner parameters. -``` +```actionscript Adjust.addGlobalPartnerParameter("partnerKey", "value"); Adjust.removeGlobalPartnerParameter("partnerKey"); Adjust.removeGlobalPartnerParameters(); @@ -249,7 +247,7 @@ The `getTimeStamp()` method has been renamed to `getTimestamp()`. To register a successful session recording by the SDK, call the `setSessionSuccessCallback` with any of the following properties: -``` +```actionscript adjustConfig.setSessionSuccessCallback(function (sessionSuccess:AdjustSessionSuccess):void { // All session success properties. @@ -269,7 +267,7 @@ The `getTimeStamp()` method has been renamed to `getTimestamp()`. To register a failed session recording by the SDK, call the `setSessionFailureCallback` with any of the following properties: -``` +```actionscript adjustConfig.setSessionFailureCallback(function (sessionFailure:AdjustSessionFailure):void { // All session failure properties. @@ -290,7 +288,7 @@ The `getTimeStamp()` method has been renamed to `getTimestamp()`. To register a successful event recording by the SDK, call the `setEventSuccessCallback` with any of the following properties: -``` +```actionscript adjustConfig.setEventSuccessCallback(function (eventSuccess:AdjustEventSuccess):void { // All event success properties. @@ -312,7 +310,7 @@ The `getTimeStamp()` method has been renamed to `getTimestamp()`. To register a failed event recording by the SDK, call the `setEventFailureCallback` with any of the following properties: -``` +```actionscript adjustConfig.setEventFailureCallback(function (eventFailure:AdjustEventFailure):void { // All event failure properties. @@ -331,7 +329,7 @@ adjustConfig.setEventFailureCallback(function (eventFailure:AdjustEventFailure): In Adobe Air SDK v5, event deduplication is decoupled from the event `transaction ID`. A new ID field called `deduplicationId` has been added for event deduplication. -``` +```actionscript adjustEvent.setDeduplicationId("deduplicationId"); ``` @@ -339,23 +337,25 @@ adjustEvent.setDeduplicationId("deduplicationId"); In Adobe Air SDK v5, the `setDeviceToken` method has been renamed to `setPushToken`. -``` +```actionscript Adjust.setPushToken("push-token"); ``` -### Reattribution using deep links {%#reattribution-using-deep-links%} +### Reattribution using direct deep links {%#reattribution-using-deep-links%} In Adobe Air SDK v5, the `appWillOpenUrl` method has been renamed to `processDeeplink`. -A new `AdjustDeeplink` class has been added for constructing deep links. To process a deep link, instantiate an `AdjustDeeplink` object with your deep link URL and pass it to the `Adjust.processDeeplink` method. +To open a direct deep link, create a new `AdjustDeeplink` instance with the deep link URL, and pass it to the `Adjust.processDeeplink` method. -``` +```actionscript var deeplink:String = event.arguments[0];     trace("Deep link = " + deeplink);     var adjustDeeplink:AdjustDeeplink = new AdjustDeeplink("url");     Adjust.processDeeplink(adjustDeeplink); ``` +> TODO: Learn how to reattribute users with direct deep links. + ### Disable opening deferred deep links {%#launch-deferred-deep-links%} In Adobe Air SDK v5, the `setShouldLaunchDeeplink` method has been renamed to `disableDeferredDeeplinkOpening`. Opening deferred deep links is enabled by default. @@ -363,43 +363,43 @@ In Adobe Air SDK v5, the `setShouldLaunchDeeplink` method has been renamed to `d To disable opening deferred deep links, call the renamed method: -``` +```actionscript adjustConfig.disableDeferredDeeplinkOpening(); ``` -### Deep link callback listener {%#deep-link-callback-listener%} +### Deferref deep link callback listener {%#deffered-deep-link-callback-listener%} In Adobe Air SDK v5, the `setDeferredDeeplinkDelegate` method has been renamed to `setDeferredDeeplinkCallback`. To set a deferred deep link callback, call the `setDeferredDeeplinkCallback` method on your `AdjustConfig` instance: -``` +```actionscript adjustConfig.setDeferredDeeplinkCallback(function (deeplink:String):void {     trace("Received deferred deep link");     trace("Deep link = " + deeplink); }); ``` -### SKAdNetwork handling (iOS only) +> TODO: Learn how to work with deferred deep link callbacks. + +### SKAdNetwork handling (iOS only) {%#skadnetwork-handling%} In Adobe Air SDK v5, the `deactivateSKAdNetworkHandling` method has been renamed to `disableSkanAttribution`. The default state is `true`. To disable the SKAdNetwork communication, call the `disableSkanAttribution` method on your `adjustConfig` instance. -``` +```actionscript adjustConfig.disableSkanAttribution(); ``` -### App Tracking Transparency authorization wrapper {%#att-wrapper%} - -**(iOS only)** +### App Tracking Transparency authorization wrapper (iOS only) {%#att-wrapper%} In Adobe Air SDK v5, the `requestTrackingAuthorizationWithCompletionHandler` method has been renamed to `requestAppTrackingAuthorization` for clarity. The renamed method is invoked like so: -``` +```actionscript Adjust.requestAppTrackingAuthorization(function (status:String):void {     trace("Status = " + status); }); @@ -412,7 +412,7 @@ In Adobe Air SDK v4, all device information getter methods run synchronously. In #### Apple's Identifier for Advertisers (IDFA) {% codeblock title="IDFA getter"%} -``` +```actionscript Adjust.getIdfa(function (idfa:String): void {     trace("IDFA = " + idfa); }); @@ -422,7 +422,7 @@ Adjust.getIdfa(function (idfa:String): void { #### Amazon Advertising ID {% codeblock title="Amazon ADID getter"%} -``` +```actionscript Adjust.getAmazonAdId(function (amazonAdId:String):void {     trace("Amazon Advertising ID = " + amazonAdId); }); @@ -432,7 +432,7 @@ Adjust.getAmazonAdId(function (amazonAdId:String):void { #### Adjust ID {% codeblock title="Adjust ID getter"%} -``` +```actionscript Adjust.getAdid(function (adid:String):void {     trace("Adjust ID = " + adid); }); @@ -442,7 +442,7 @@ Adjust.getAdid(function (adid:String):void { #### Attribution {% codeblock title="Attribution getter"%} -``` +```actionscript Adjust.getAttribution(function (attribution:AdjustAttribution): void {     trace("Tracker token = " + attribution.getTrackerToken());     trace("Tracker name = " + attribution.getTrackerName()); @@ -475,7 +475,7 @@ The `disableThirdPartySharing` method has been removed. To enable or disable all third-party sharing in Adobe Air SDK v5, use the `trackThirdPartySharing` method. -``` +```actionscript var adjustThirdPartySharing:AdjustThirdPartySharing = new AdjustThirdPartySharing("false"); Adjust.trackThirdPartySharing(adjustThirdPartySharing); ``` From 7df7a1540fec38178fb8885a49e6fc80235a9d22 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 12 Nov 2024 13:35:59 +0100 Subject: [PATCH 03/46] Copy and formatting fixes, rearranged the structure and order, added sample snippet, and an intro & tutorial callout --- .../en/sdk/migration/adobe-air/v4-to-v5.mdoc | 205 ++++++++++-------- 1 file changed, 120 insertions(+), 85 deletions(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index e0ac39074..5f59e8026 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -10,7 +10,7 @@ The [Adjust Adobe Air SDK](https://github.com/adjust/adobe_air_sdk) has been upd ## Before you begin {%#before-you-begin%} -Here's what you need to do before updating to Adobe Air SDK v5: +Here's what you need to do before you upgrade to Adobe Air SDK v5: 1. Adobe Air SDK v5 has native support for the [SDK signature verification](https://help.adjust.com/en/article/sdk-signature) library. If you use the SDK signature library, remove it from your app. 2. The minimum supported iOS and Android versions have been updated. If your app targets a lower version, update it first. @@ -22,7 +22,7 @@ Here's what you need to do before updating to Adobe Air SDK v5: To start using Adobe Air SDK v5, you need to add it as a dependency in your project. To do this, follow these steps: -```actionscript +```actionscript-3 package { import com.adjust.sdk.Adjust; import com.adjust.sdk.AdjustConfig; @@ -33,7 +33,7 @@ package { ### Android permissions {%#android-permissions%} -In Adobe Air SDK v4, you needed to declare several permissions so that your Adobe Air app for Android could access device information via the Adjust SDK for Android. +In Adobe Air SDK v4, you needed to declare several permissions to allow your Adobe Air app for Android to access device information via the Adjust SDK for Android. {% codeblock title="AndroidManifest.xml"%} @@ -51,7 +51,7 @@ In Adobe Air SDK v5, you can delete some or all, depending on your setup. - `android.permission.ACCESS_WIFI_STATE` is no longer required. - `android.permission.ACCESS_NETWORK_STATE` is optional. This allows the SDK to access information about the network a device is connected to, and send callbacks parameters. -#### COPPA (Children's Online Privacy Protection Act) or third-party stores +#### COPPA (Children's Online Privacy Protection Act) compliance - `com.google.android.gms.permission.AD_ID` is bundled in the Adjust SDK for Android. You can [remove it](https://dev.adjust.com/en/sdk/android#add-permissions) with the following snippet: @@ -61,24 +61,19 @@ In Adobe Air SDK v5, you can delete some or all, depending on your setup. ### Update the initialization method {%#init-method%} -{% minorversion changed="v5" size="large" /%} - -In Adobe Air SDK v5, the initialization method has changed to `Adjust.initSdk(adjustConfig)`. +{% minorversion changed="v5" /%} -{% codeblock useDiffSyntax=true%} +In Adobe Air SDK v5, the initialization method has changed from `Adjust.start` to `Adjust.initSdk`. -```actionscript --Adjust.start(adjustConfig); // v4 -+Adjust.initSdk(adjustConfig); // v5 +```actionscript-3 +Adjust.initSdk(adjustConfig); ``` -{% /codeblock %} - -#### Environment enumeration +#### Environment -In Adobe Air SDK v5, the environment enumeration has been renamed from `Environment` to `AdjustEnvironment`. +In Adobe Air SDK v5, the environment setting has been renamed from `Environment` to `AdjustEnvironment`. -```actionscript +```actionscript-3 var environment:String = AdjustEnvironment.SANDBOX; ``` @@ -91,11 +86,11 @@ var environment:String = AdjustEnvironment.SANDBOX; - Pass `AdjustEnvironment.PRODUCTION` when running the app in production. {% /deflist %} -#### Log level enumeration +#### Log level -In Adobe Air SDK v5, the log level enumeration has been renamed from `LogLevel` to `AdjustLogLevel`. +In Adobe Air SDK v5, the logging level setting has been renamed from `LogLevel` to `AdjustLogLevel`. -```actionscript +```actionscript-3 adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); ``` @@ -106,13 +101,49 @@ adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); - `adjustConfig.setLogLevel(LogLevel.VERBOSE)`: enable all logging - `adjustConfig.setLogLevel(LogLevel.DEBUG)`: disable verbose logging. - - `adjustConfig.setLogLevel(LogLevel.INFO)`: the default. + - `adjustConfig.setLogLevel(LogLevel.INFO)`: the default: Log information, warnings, and errors. - `adjustConfig.setLogLevel(LogLevel.WARN)`: log only errors and warnings. - `adjustConfig.setLogLevel(LogLevel.ERROR)`: log only errors. - `adjustConfig.setLogLevel(LogLevel.ASSERT);`: disable errors. - - `adjustConfig.setLogLevel(LogLevel.SUPPRESS);`: disable all log output. + - `adjustConfig.setLogLevel(LogLevel.SUPPRESS);`: disable all logging. {% /deflist %} +### Sample initialization snippet {%#sample-initialization-snippet%} + +To initialize the Adobe Air SDK v5, adapt the following code sample: + +```actionscript-3 +package { + import com.adjust.sdk.Adjust; + import com.adjust.sdk.AdjustConfig; + import com.adjust.sdk.AdjustEnvironment; + import com.adjust.sdk.AdjustLogLevel; + + public class Example extends Sprite { + public function Example() { + var appToken:String = "{YourAppToken}"; + var environment:String = Environment.SANDBOX; + + var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); + adjustConfig.setLogLevel(LogLevel.VERBOSE); + + Adjust.start(adjustConfig); + } + } +} + +``` + +## Changes and deprecations {%#changes-deprecations%} + +Below is the complete list of changed, renamed, and [deprecated](#removed-apis) APIs in Adobe Air SDK v5. + +Each section includes a reference to the previous and current API implementations, as well as a minimal code snippet that illustrates how to use the latest version. + +{%callout type="tip"%} +> TODO: To learn how to set up an Adobe Air SDK v5 example app, follow a step-by-step tutorial to configure and implement all available features. +{%/callout%} + ## Changed APIs {%#changed-apis%} {% minorversion changed="v5" size="large" /%} @@ -121,31 +152,41 @@ The following APIs have changed in Adobe Air SDK v5. ### Disable and enable the SDK {%#disable-enable-sdk%} -The `setEnabled` method is renamed and no longer called with a `boolean` value. - -Adobe Air SDK v5 introduces two separate methods, for clarity: +The `setEnabled` method has been renamed. Adobe Air SDK v5 introduces two separate methods, for clarity: - Call `Adjust.disable` to disable the SDK. - Call `Adjust.enable` to enable the SDK. -```actionscript +```actionscript-3 Adjust.disable(); // disable SDK Adjust.enable(); // enable SDK ``` +### Offline mode {%#offline-mode%} + +The `setOfflineMode` method has been renamed. Adobe Air SDK v5 introduces two separate methods, for clarity: + +- Call `Adjust.switchToOfflineMode` to set the SDK to offline mode. +- Call `Adjust.switchBackToOnlineMode` to set the SDK back to online mode. + +```actionscript-3 +Adjust.switchToOfflineMode(); // Set the SDK to offline mode +Adjust.switchBackToOnlineMode(); // Set the SDK back to online mode +``` + ### Send information in background {%#send-in-background%} The `setSendInBackground` method has been renamed to `enableSendingInBackground`. To enable the Adobe Air SDK v5 to send information to Adjust while your app is running in the background, call the `enableSendingInBackground` method on your `adjustConfig` instance. The default state is `false`. -```actionscript +```actionscript-3 adjustConfig.enableSendingInBackground(); ``` ### Set attribution callback {%#attribution-callback%} -The `setAttributionCallbackDelegate` method has been renamed in Adobe Air SDK v5 to `setAttributionCallback`. +In Adobe Air SDK v5, the `setAttributionCallbackDelegate` method has been renamed to `setAttributionCallback`. The properties of the `attribution` parameter have also changed: @@ -161,7 +202,7 @@ The following properties have been added to the `attribution` parameter: Below is a sample snippet that implements these changes: -```actionscript +```actionscript-3 adjustConfig.setAttributionCallback(function (attribution:AdjustAttribution): void {     trace("Tracker token = " + attribution.getTrackerToken());     trace("Tracker name = " + attribution.getTrackerName()); @@ -177,18 +218,20 @@ adjustConfig.setAttributionCallback(function (attribution:AdjustAttribution): vo }); ``` -### Offline mode {%#offline-mode%} +### Event deduplication {%#event-deduplication%} -The `setOfflineMode` method is renamed and no longer called with a `boolean` value. +In Adobe Air SDK v5, event deduplication is decoupled from the event `transaction ID`. To prevent measuring duplicated events, use the `deduplicationId` ID field. -Adobe Air SDK v5 introduces two separate methods, for clarity: +```actionscript-3 +adjustEvent.setDeduplicationId("deduplicationId"); +``` -- Call `Adjust.switchToOfflineMode` to set the SDK to offline mode. -- Call `Adjust.switchBackToOnlineMode` to set the SDK back to online mode. +### Push tokens {%#push-tokens%} + +In Adobe Air SDK v5, the `setDeviceToken` method has been renamed to `setPushToken`. -```actionscript -Adjust.switchToOfflineMode(); // Put the SDK in offline mode -Adjust.switchBackToOnlineMode(); // Put the SDK back in online mode +```actionscript-3 +Adjust.setPushToken("push-token"); ``` ### Session callback parameters {%#session-callback-parameters%} @@ -209,9 +252,9 @@ To add global callbacks to your sessions, call the `Adjust.addGlobalCallbackPara > TODO: Learn how to set up global callback. -```actionscript -Adjust.addGlobalCallbackParameter("callbackKey", "value"); -Adjust.removeGlobalCallbackParameter("callbackKey"); +```actionscript-3 +Adjust.addGlobalCallbackParameter("user_id", "855"); +Adjust.removeGlobalCallbackParameter("user_id"); Adjust.removeGlobalCallbackParameters(); ``` @@ -233,12 +276,14 @@ To add global partner to your sessions, call the `Adjust.addGlobalPartnerParamet > TODO: Learn how to set up global partner parameters. -```actionscript -Adjust.addGlobalPartnerParameter("partnerKey", "value"); -Adjust.removeGlobalPartnerParameter("partnerKey"); +```actionscript-3 +Adjust.addGlobalPartnerParameter("user_id", "855"); +Adjust.removeGlobalPartnerParameter("user_id"); Adjust.removeGlobalPartnerParameters(); ``` +## Session and event callbacks {%#session-event-callbacks%} + ### Session success callbacks {%#session-success%} In Adobe Air SDK v5, the `sessionTrackingSucceededDelegate` method has been renamed to `setSessionSuccessCallback`. @@ -247,7 +292,7 @@ The `getTimeStamp()` method has been renamed to `getTimestamp()`. To register a successful session recording by the SDK, call the `setSessionSuccessCallback` with any of the following properties: -```actionscript +```actionscript-3 adjustConfig.setSessionSuccessCallback(function (sessionSuccess:AdjustSessionSuccess):void { // All session success properties. @@ -267,7 +312,7 @@ The `getTimeStamp()` method has been renamed to `getTimestamp()`. To register a failed session recording by the SDK, call the `setSessionFailureCallback` with any of the following properties: -```actionscript +```actionscript-3 adjustConfig.setSessionFailureCallback(function (sessionFailure:AdjustSessionFailure):void { // All session failure properties. @@ -288,7 +333,7 @@ The `getTimeStamp()` method has been renamed to `getTimestamp()`. To register a successful event recording by the SDK, call the `setEventSuccessCallback` with any of the following properties: -```actionscript +```actionscript-3 adjustConfig.setEventSuccessCallback(function (eventSuccess:AdjustEventSuccess):void { // All event success properties. @@ -310,7 +355,7 @@ The `getTimeStamp()` method has been renamed to `getTimestamp()`. To register a failed event recording by the SDK, call the `setEventFailureCallback` with any of the following properties: -```actionscript +```actionscript-3 adjustConfig.setEventFailureCallback(function (eventFailure:AdjustEventFailure):void { // All event failure properties. @@ -325,21 +370,7 @@ adjustConfig.setEventFailureCallback(function (eventFailure:AdjustEventFailure): }); ``` -### Event deduplication {%#event-deduplication%} - -In Adobe Air SDK v5, event deduplication is decoupled from the event `transaction ID`. A new ID field called `deduplicationId` has been added for event deduplication. - -```actionscript -adjustEvent.setDeduplicationId("deduplicationId"); -``` - -### Push tokens {%#push-tokens%} - -In Adobe Air SDK v5, the `setDeviceToken` method has been renamed to `setPushToken`. - -```actionscript -Adjust.setPushToken("push-token"); -``` +## Deep links {%#deep-links%} ### Reattribution using direct deep links {%#reattribution-using-deep-links%} @@ -347,7 +378,7 @@ In Adobe Air SDK v5, the `appWillOpenUrl` method has been renamed to `processDee To open a direct deep link, create a new `AdjustDeeplink` instance with the deep link URL, and pass it to the `Adjust.processDeeplink` method. -```actionscript +```actionscript-3 var deeplink:String = event.arguments[0];     trace("Deep link = " + deeplink);     var adjustDeeplink:AdjustDeeplink = new AdjustDeeplink("url"); @@ -363,18 +394,18 @@ In Adobe Air SDK v5, the `setShouldLaunchDeeplink` method has been renamed to `d To disable opening deferred deep links, call the renamed method: -```actionscript +```actionscript-3 adjustConfig.disableDeferredDeeplinkOpening(); ``` -### Deferref deep link callback listener {%#deffered-deep-link-callback-listener%} +### Deferred deep link callback listener {%#deffered-deep-link-callback-listener%} In Adobe Air SDK v5, the `setDeferredDeeplinkDelegate` method has been renamed to `setDeferredDeeplinkCallback`. To set a deferred deep link callback, call the `setDeferredDeeplinkCallback` method on your `AdjustConfig` instance: -```actionscript +```actionscript-3 adjustConfig.setDeferredDeeplinkCallback(function (deeplink:String):void {     trace("Received deferred deep link");     trace("Deep link = " + deeplink); @@ -383,13 +414,15 @@ adjustConfig.setDeferredDeeplinkCallback(function (deeplink:String):void { > TODO: Learn how to work with deferred deep link callbacks. +## iOS only APIs {%#ios-only-apis%} + ### SKAdNetwork handling (iOS only) {%#skadnetwork-handling%} In Adobe Air SDK v5, the `deactivateSKAdNetworkHandling` method has been renamed to `disableSkanAttribution`. The default state is `true`. To disable the SKAdNetwork communication, call the `disableSkanAttribution` method on your `adjustConfig` instance. -```actionscript +```actionscript-3 adjustConfig.disableSkanAttribution(); ``` @@ -399,50 +432,52 @@ In Adobe Air SDK v5, the `requestTrackingAuthorizationWithCompletionHandler` met The renamed method is invoked like so: -```actionscript +```actionscript-3 Adjust.requestAppTrackingAuthorization(function (status:String):void {     trace("Status = " + status); }); ``` -### Get device information {%#device-info%} +## Get device information {%#device-info%} -In Adobe Air SDK v4, all device information getter methods run synchronously. In SDK v5, the following methods have been changed to run asynchronously. +In Adobe Air SDK v4, all device information getter methods run synchronously. -#### Apple's Identifier for Advertisers (IDFA) +In SDK v5, the following methods have been changed to run asynchronously. -{% codeblock title="IDFA getter"%} -```actionscript -Adjust.getIdfa(function (idfa:String): void { -    trace("IDFA = " + idfa); +### Adjust ID + +{% codeblock title="Adjust ID getter"%} +```actionscript-3 +Adjust.getAdid(function (adid:String):void { +    trace("Adjust ID = " + adid); }); ``` {% /codeblock %} -#### Amazon Advertising ID +### Amazon Advertising ID {% codeblock title="Amazon ADID getter"%} -```actionscript +```actionscript-3 Adjust.getAmazonAdId(function (amazonAdId:String):void {     trace("Amazon Advertising ID = " + amazonAdId); }); ``` {% /codeblock %} -#### Adjust ID +### Apple's Identifier for Advertisers (IDFA) -{% codeblock title="Adjust ID getter"%} -```actionscript -Adjust.getAdid(function (adid:String):void { -    trace("Adjust ID = " + adid); +{% codeblock title="IDFA getter"%} +```actionscript-3 +Adjust.getIdfa(function (idfa:String): void { +    trace("IDFA = " + idfa); }); ``` {% /codeblock %} -#### Attribution +### Attribution {% codeblock title="Attribution getter"%} -```actionscript +```actionscript-3 Adjust.getAttribution(function (attribution:AdjustAttribution): void {     trace("Tracker token = " + attribution.getTrackerToken());     trace("Tracker name = " + attribution.getTrackerName()); @@ -475,12 +510,12 @@ The `disableThirdPartySharing` method has been removed. To enable or disable all third-party sharing in Adobe Air SDK v5, use the `trackThirdPartySharing` method. -```actionscript +```actionscript-3 var adjustThirdPartySharing:AdjustThirdPartySharing = new AdjustThirdPartySharing("false"); Adjust.trackThirdPartySharing(adjustThirdPartySharing); ``` -### Set an App Secret {%#set-app-secret%} +### Set an app secret {%#set-app-secret%} The `setAppSecret` method has been removed. From bde0bdc3dc6c9707366ed63bef66325ce5f05b20 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:11:42 +0100 Subject: [PATCH 04/46] Removals instead of deprecations --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 5f59e8026..39f841999 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -134,9 +134,9 @@ package { ``` -## Changes and deprecations {%#changes-deprecations%} +## Changes and removals {%#changes-removals%} -Below is the complete list of changed, renamed, and [deprecated](#removed-apis) APIs in Adobe Air SDK v5. +Below is the complete list of changed, renamed, and [removed](#removed-apis) APIs in Adobe Air SDK v5. Each section includes a reference to the previous and current API implementations, as well as a minimal code snippet that illustrates how to use the latest version. From 4848bb210e38073b6e35e8bc32d088e65c3d9565 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:41:07 +0100 Subject: [PATCH 05/46] Update src/content/docs/en/sdk/migration/adobe-air/index.mdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Uglješa Erceg --- src/content/docs/en/sdk/migration/adobe-air/index.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/index.mdoc b/src/content/docs/en/sdk/migration/adobe-air/index.mdoc index 889621018..2ddf28363 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/index.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/index.mdoc @@ -1,5 +1,5 @@ --- - title: Adjust Adobe Air + title: Adobe AIR sidebar-label: Adobe Air description: Follow these guides to migrate between SDK versions type: category From 433284de18bd992c791208fcd4c20dc7565c346a Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:41:21 +0100 Subject: [PATCH 06/46] Update src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Uglješa Erceg --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 5f59e8026..1db9401de 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -1,5 +1,5 @@ --- -title: Adobe Air SDK v5 migration guide +title: Adobe AIR SDK v5 migration guide description: Follow this guide to upgrade from SDK v4 to SDK v5 sidebar-label: SDK v5 migration guide sidebar-position: 1 From b55cb8843811ea43f64254e9abe832da0e6390ed Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:41:29 +0100 Subject: [PATCH 07/46] Update src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Uglješa Erceg --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 1db9401de..67293c849 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -6,7 +6,7 @@ sidebar-position: 1 --- -The [Adjust Adobe Air SDK](https://github.com/adjust/adobe_air_sdk) has been updated to v5. Follow this guide to migrate from v4 to the latest version. +The [Adjust Adobe AIR SDK](https://github.com/adjust/adobe_air_sdk) has been updated to v5. Follow this guide to migrate from v4 to the latest version. ## Before you begin {%#before-you-begin%} From d7081967e2b9dccc8645d8fb28cc65801a739643 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:41:39 +0100 Subject: [PATCH 08/46] Update src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Uglješa Erceg --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 67293c849..d16ee013a 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -10,7 +10,7 @@ The [Adjust Adobe AIR SDK](https://github.com/adjust/adobe_air_sdk) has been upd ## Before you begin {%#before-you-begin%} -Here's what you need to do before you upgrade to Adobe Air SDK v5: +Here's what you need to do before you upgrade to Adobe AIR SDK v5: 1. Adobe Air SDK v5 has native support for the [SDK signature verification](https://help.adjust.com/en/article/sdk-signature) library. If you use the SDK signature library, remove it from your app. 2. The minimum supported iOS and Android versions have been updated. If your app targets a lower version, update it first. From af81597ee60d1bfd0c53b5abb2df5638fda90433 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:41:52 +0100 Subject: [PATCH 09/46] Update src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Uglješa Erceg --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index d16ee013a..551e19e87 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -428,7 +428,7 @@ adjustConfig.disableSkanAttribution(); ### App Tracking Transparency authorization wrapper (iOS only) {%#att-wrapper%} -In Adobe Air SDK v5, the `requestTrackingAuthorizationWithCompletionHandler` method has been renamed to `requestAppTrackingAuthorization` for clarity. +In Adobe AIR SDK v5, the `requestTrackingAuthorizationWithCompletionHandler` method has been renamed to `requestAppTrackingAuthorization` for clarity. The renamed method is invoked like so: From 03307aacf1da313d4a01defb6edde038b647819c Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:42:18 +0100 Subject: [PATCH 10/46] Update src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Uglješa Erceg --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 551e19e87..3d4377483 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -426,7 +426,7 @@ To disable the SKAdNetwork communication, call the `disableSkanAttribution` meth adjustConfig.disableSkanAttribution(); ``` -### App Tracking Transparency authorization wrapper (iOS only) {%#att-wrapper%} +### App Tracking Transparency authorization wrapper {%#att-wrapper%} In Adobe AIR SDK v5, the `requestTrackingAuthorizationWithCompletionHandler` method has been renamed to `requestAppTrackingAuthorization` for clarity. From 8381d1fb9f33db105a2b6d342e410167a939e952 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:42:30 +0100 Subject: [PATCH 11/46] Update src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Uglješa Erceg --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 3d4377483..f3420bc71 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -440,7 +440,7 @@ Adjust.requestAppTrackingAuthorization(function (status:String):void { ## Get device information {%#device-info%} -In Adobe Air SDK v4, all device information getter methods run synchronously. +In Adobe AIR SDK v4, all device information getter methods run synchronously. In SDK v5, the following methods have been changed to run asynchronously. From aa6269a6240d48688ef80527f0ad97f0d65e2107 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:42:38 +0100 Subject: [PATCH 12/46] Update src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Uglješa Erceg --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index f3420bc71..237ef0773 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -498,7 +498,7 @@ Adjust.getAttribution(function (attribution:AdjustAttribution): void { {% minorversion removed="v5" size="large" /%} -The following APIs have been removed from Adobe Air SDK v5. +The following APIs have been removed from Adobe AIR SDK v5. - The `setDelayStart` method has been removed. - The `setEventBufferingEnabled` method has been removed. From 5c4beb9e47737262a3f94afd5722dff209745c3a Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:42:47 +0100 Subject: [PATCH 13/46] Update src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Uglješa Erceg --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 237ef0773..63e6ab0e8 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -508,7 +508,7 @@ The following APIs have been removed from Adobe AIR SDK v5. The `disableThirdPartySharing` method has been removed. -To enable or disable all third-party sharing in Adobe Air SDK v5, use the `trackThirdPartySharing` method. +To enable or disable all third-party sharing in Adobe AIR SDK v5, use the `trackThirdPartySharing` method. ```actionscript-3 var adjustThirdPartySharing:AdjustThirdPartySharing = new AdjustThirdPartySharing("false"); From 2437215075fdb20738d346f24a02a2e552acb2f8 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:57:22 +0100 Subject: [PATCH 14/46] Remove irrelevant upgrade item --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 688408ae0..773c7b484 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -10,10 +10,7 @@ The [Adjust Adobe AIR SDK](https://github.com/adjust/adobe_air_sdk) has been upd ## Before you begin {%#before-you-begin%} -Here's what you need to do before you upgrade to Adobe AIR SDK v5: - -1. Adobe Air SDK v5 has native support for the [SDK signature verification](https://help.adjust.com/en/article/sdk-signature) library. If you use the SDK signature library, remove it from your app. -2. The minimum supported iOS and Android versions have been updated. If your app targets a lower version, update it first. +The minimum supported iOS and Android versions have been updated. If your app targets a lower version, update it first. - iOS: **12.0** - Android: **21** From bc0096da7e54850b4851e58ca2f76ed348331357 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Thu, 14 Nov 2024 14:46:46 +0100 Subject: [PATCH 15/46] Copy, formatting, and code fixes --- .../en/sdk/migration/adobe-air/v4-to-v5.mdoc | 357 +++++++++--------- 1 file changed, 186 insertions(+), 171 deletions(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 773c7b484..16ffee6da 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -8,59 +8,18 @@ sidebar-position: 1 The [Adjust Adobe AIR SDK](https://github.com/adjust/adobe_air_sdk) has been updated to v5. Follow this guide to migrate from v4 to the latest version. -## Before you begin {%#before-you-begin%} +## Before you begin {% #before-you-begin %} The minimum supported iOS and Android versions have been updated. If your app targets a lower version, update it first. - iOS: **12.0** - Android: **21** -### Install the SDK {%#install-the-sdk%} - -To start using Adobe Air SDK v5, you need to add it as a dependency in your project. To do this, follow these steps: - -```actionscript-3 -package { - import com.adjust.sdk.Adjust; - import com.adjust.sdk.AdjustConfig; - import com.adjust.sdk.AdjustEnvironment; - import com.adjust.sdk.AdjustLogLevel; - } -``` - -### Android permissions {%#android-permissions%} - -In Adobe Air SDK v4, you needed to declare several permissions to allow your Adobe Air app for Android to access device information via the Adjust SDK for Android. - -{% codeblock title="AndroidManifest.xml"%} - -```xml - - - - -``` -{%/codeblock%} - -In Adobe Air SDK v5, you can delete some or all, depending on your setup. - -- `android.permission.INTERNET` is bundled in the Adjust SDK for Android. -- `android.permission.ACCESS_WIFI_STATE` is no longer required. -- `android.permission.ACCESS_NETWORK_STATE` is optional. This allows the SDK to access information about the network a device is connected to, and send callbacks parameters. - -#### COPPA (Children's Online Privacy Protection Act) compliance - -- `com.google.android.gms.permission.AD_ID` is bundled in the Adjust SDK for Android. You can [remove it](https://dev.adjust.com/en/sdk/android#add-permissions) with the following snippet: - -```xml - -``` - -### Update the initialization method {%#init-method%} +### Update the initialization method {% #init-method %} {% minorversion changed="v5" /%} -In Adobe Air SDK v5, the initialization method has changed from `Adjust.start` to `Adjust.initSdk`. +In Adobe AIR SDK v5, the initialization method has changed from `Adjust.start` to `Adjust.initSdk`. ```actionscript-3 Adjust.initSdk(adjustConfig); @@ -68,7 +27,7 @@ Adjust.initSdk(adjustConfig); #### Environment -In Adobe Air SDK v5, the environment setting has been renamed from `Environment` to `AdjustEnvironment`. +In Adobe AIR SDK v5, the environment class has been renamed from `Environment` to `AdjustEnvironment`. ```actionscript-3 var environment:String = AdjustEnvironment.SANDBOX; @@ -85,7 +44,7 @@ var environment:String = AdjustEnvironment.SANDBOX; #### Log level -In Adobe Air SDK v5, the logging level setting has been renamed from `LogLevel` to `AdjustLogLevel`. +In Adobe AIR SDK v5, the log level class has been renamed from `LogLevel` to `AdjustLogLevel`. ```actionscript-3 adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); @@ -96,18 +55,18 @@ adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); : The level of logging you want to enable. - - `adjustConfig.setLogLevel(LogLevel.VERBOSE)`: enable all logging - - `adjustConfig.setLogLevel(LogLevel.DEBUG)`: disable verbose logging. - - `adjustConfig.setLogLevel(LogLevel.INFO)`: the default: Log information, warnings, and errors. - - `adjustConfig.setLogLevel(LogLevel.WARN)`: log only errors and warnings. - - `adjustConfig.setLogLevel(LogLevel.ERROR)`: log only errors. - - `adjustConfig.setLogLevel(LogLevel.ASSERT);`: disable errors. - - `adjustConfig.setLogLevel(LogLevel.SUPPRESS);`: disable all logging. + - `adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE)`: enable all logging + - `adjustConfig.setLogLevel(AdjustLogLevel.DEBUG)`: disable verbose logging. + - `adjustConfig.setLogLevel(AdjustLogLevel.INFO)`: the default: Log information, warnings, and errors. + - `adjustConfig.setLogLevel(AdjustLogLevel.WARN)`: log only errors and warnings. + - `adjustConfig.setLogLevel(AdjustLogLevel.ERROR)`: log only errors. + - `adjustConfig.setLogLevel(AdjustLogLevel.ASSERT);`: disable errors. + - `adjustConfig.setLogLevel(AdjustLogLevel.SUPPRESS);`: disable all logging. {% /deflist %} -### Sample initialization snippet {%#sample-initialization-snippet%} +### Sample initialization snippet {% #sample-initialization-snippet%} -To initialize the Adobe Air SDK v5, adapt the following code sample: +To initialize the Adobe AIR SDK v5, adapt the following code sample: ```actionscript-3 package { @@ -119,37 +78,86 @@ package { public class Example extends Sprite { public function Example() { var appToken:String = "{YourAppToken}"; - var environment:String = Environment.SANDBOX; + var environment:String = AdjustEnvironment.SANDBOX; var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); - adjustConfig.setLogLevel(LogLevel.VERBOSE); + adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); - Adjust.start(adjustConfig); + Adjust.initSdk(adjustConfig); } } } ``` -## Changes and removals {%#changes-removals%} +### Android permissions {% #android-permissions %} + +In Adobe AIR SDK v4, you needed to declare several permissions to allow your Adobe AIR app for Android to access device information via the Adjust SDK for Android. + +{% codeblock title="YOURAPP-app.xml" %} + +```xml + + + + + + + + + ]]> + + +``` +{% /codeblock %} + +In Adobe AIR SDK v5, you can delete some or all from your XML configuration file, depending on your setup. + +- `android.permission.INTERNET` is bundled in the Adjust SDK for Android. +- `android.permission.ACCESS_WIFI_STATE` is no longer required. +- `android.permission.ACCESS_NETWORK_STATE` is optional. This allows the SDK to access information about the network a device is connected to, and send this information as part of the callbacks parameters. + +#### COPPA (Children's Online Privacy Protection Act) compliance + +- `com.google.android.gms.permission.AD_ID` is bundled in the Adjust SDK for Android. You can [remove it](https://dev.adjust.com/en/sdk/android#add-permissions) with the following snippet: + +{% codeblock title="YOURAPP-app.xml" %} + +```xml + + + + + + ]]> + + +``` +{% /codeblock %} + +Learn more about [Adjust's COPPA compliance](https://help.adjust.com/en/article/coppa-compliance). -Below is the complete list of changed, renamed, and [removed](#removed-apis) APIs in Adobe Air SDK v5. +## Changes and removals {% #changes-removals %} + +Below is the complete list of changed, renamed, and [removed](#removed-apis) APIs in Adobe AIR SDK v5. Each section includes a reference to the previous and current API implementations, as well as a minimal code snippet that illustrates how to use the latest version. {%callout type="tip"%} -> TODO: To learn how to set up an Adobe Air SDK v5 example app, follow a step-by-step tutorial to configure and implement all available features. -{%/callout%} +> TODO: To learn how to set up an Adobe AIR SDK v5 example app, follow a step-by-step tutorial to configure and implement all available features. +{% /callout %} -## Changed APIs {%#changed-apis%} +## Changed APIs {% #changed-apis %} {% minorversion changed="v5" size="large" /%} -The following APIs have changed in Adobe Air SDK v5. +The following APIs have changed in Adobe AIR SDK v5. -### Disable and enable the SDK {%#disable-enable-sdk%} +### Disable and enable the SDK {% #disable-enable-sdk %} -The `setEnabled` method has been renamed. Adobe Air SDK v5 introduces two separate methods, for clarity: +The `setEnabled` method has been renamed. Adobe AIR SDK v5 introduces two separate methods, for clarity: - Call `Adjust.disable` to disable the SDK. - Call `Adjust.enable` to enable the SDK. @@ -159,31 +167,31 @@ Adjust.disable(); // disable SDK Adjust.enable(); // enable SDK ``` -### Offline mode {%#offline-mode%} +### Offline mode {% #offline-mode %} -The `setOfflineMode` method has been renamed. Adobe Air SDK v5 introduces two separate methods, for clarity: +The `setOfflineMode` method has been renamed. Adobe AIR SDK v5 introduces two separate methods, for clarity: - Call `Adjust.switchToOfflineMode` to set the SDK to offline mode. - Call `Adjust.switchBackToOnlineMode` to set the SDK back to online mode. ```actionscript-3 -Adjust.switchToOfflineMode(); // Set the SDK to offline mode -Adjust.switchBackToOnlineMode(); // Set the SDK back to online mode +Adjust.switchToOfflineMode(); // set the SDK to offline mode +Adjust.switchBackToOnlineMode(); // set the SDK back to online mode ``` -### Send information in background {%#send-in-background%} +### Send information in background {% #send-in-backgroun d%} The `setSendInBackground` method has been renamed to `enableSendingInBackground`. -To enable the Adobe Air SDK v5 to send information to Adjust while your app is running in the background, call the `enableSendingInBackground` method on your `adjustConfig` instance. The default state is `false`. +To enable the Adobe AIR SDK v5 to send information to Adjust while your app is running in the background, call the `enableSendingInBackground` method on your `adjustConfig` instance. This feature is disabled by default. ```actionscript-3 adjustConfig.enableSendingInBackground(); ``` -### Set attribution callback {%#attribution-callback%} +### Set attribution callback {% #attribution-callback %} -In Adobe Air SDK v5, the `setAttributionCallbackDelegate` method has been renamed to `setAttributionCallback`. +In Adobe AIR SDK v5, the `setAttributionCallbackDelegate` method has been renamed to `setAttributionCallback`. The properties of the `attribution` parameter have also changed: @@ -201,39 +209,39 @@ Below is a sample snippet that implements these changes: ```actionscript-3 adjustConfig.setAttributionCallback(function (attribution:AdjustAttribution): void { -    trace("Tracker token = " + attribution.getTrackerToken()); -    trace("Tracker name = " + attribution.getTrackerName()); -    trace("Campaign = " + attribution.getCampaign()); -    trace("Network = " + attribution.getNetwork()); -    trace("Creative = " + attribution.getCreative()); -    trace("Adgroup = " + attribution.getAdgroup()); -    trace("Click label = " + attribution.getClickLabel()); -    trace("Cost type = " + attribution.getCostType()); -    trace("Cost amount = " + isNaN(attribution.getCostAmount()) ? "NaN" : attribution.getCostAmount().toString()); -    trace("Cost currency = " + attribution.getCostCurrency()); -    trace("FB install referrer = " + attribution.getFbInstallReferrer()); + trace("Tracker token = " + attribution.getTrackerToken()); + trace("Tracker name = " + attribution.getTrackerName()); + trace("Campaign = " + attribution.getCampaign()); + trace("Network = " + attribution.getNetwork()); + trace("Creative = " + attribution.getCreative()); + trace("Adgroup = " + attribution.getAdgroup()); + trace("Click label = " + attribution.getClickLabel()); + trace("Cost type = " + attribution.getCostType()); + trace("Cost amount = " + isNaN(attribution.getCostAmount()) ? "NaN" : attribution.getCostAmount().toString()); + trace("Cost currency = " + attribution.getCostCurrency()); + trace("FB install referrer = " + attribution.getFbInstallReferrer()); }); ``` -### Event deduplication {%#event-deduplication%} +### Event deduplication {% #event-deduplication %} -In Adobe Air SDK v5, event deduplication is decoupled from the event `transaction ID`. To prevent measuring duplicated events, use the `deduplicationId` ID field. +In Adobe AIR SDK v5, event deduplication is decoupled from the event `transactionId`. To prevent measuring duplicated events, use the `deduplicationId` ID field. ```actionscript-3 adjustEvent.setDeduplicationId("deduplicationId"); ``` -### Push tokens {%#push-tokens%} +### Push tokens {% #push-tokens %} -In Adobe Air SDK v5, the `setDeviceToken` method has been renamed to `setPushToken`. +In Adobe AIR SDK v5, the `setDeviceToken` method has been renamed to `setPushToken`. ```actionscript-3 Adjust.setPushToken("push-token"); ``` -### Session callback parameters {%#session-callback-parameters%} +### Session callback parameters {% #session-callback-parameters %} -In Adobe Air SDK v5, the session callback parameters have been renamed to global callback parameters. +In Adobe AIR SDK v5, the session callback parameters have been renamed to global callback parameters. To add global callbacks to your sessions, call the `Adjust.addGlobalCallbackParameter` method with the following arguments: @@ -255,9 +263,9 @@ Adjust.removeGlobalCallbackParameter("user_id"); Adjust.removeGlobalCallbackParameters(); ``` -### Session partner parameters {%#session-partner-parameters%} +### Session partner parameters {% #session-partner-parameters %} -In Adobe Air SDK v5, the session partner parameters have been renamed to global partner parameters. +In Adobe AIR SDK v5, the session partner parameters have been renamed to global partner parameters. To add global partner to your sessions, call the `Adjust.addGlobalPartnerParameter` method with the following arguments: @@ -279,11 +287,11 @@ Adjust.removeGlobalPartnerParameter("user_id"); Adjust.removeGlobalPartnerParameters(); ``` -## Session and event callbacks {%#session-event-callbacks%} +## Session and event callbacks {% #session-event-callbacks %} -### Session success callbacks {%#session-success%} +### Session success callbacks {% #session-success %} -In Adobe Air SDK v5, the `sessionTrackingSucceededDelegate` method has been renamed to `setSessionSuccessCallback`. +In Adobe AIR SDK v5, the `setSessionTrackingSucceededDelegate` method has been renamed to `setSessionSuccessCallback`. The `getTimeStamp()` method has been renamed to `getTimestamp()`. @@ -291,19 +299,18 @@ To register a successful session recording by the SDK, call the `setSessionSucce ```actionscript-3 adjustConfig.setSessionSuccessCallback(function (sessionSuccess:AdjustSessionSuccess):void { - -// All session success properties. -    trace("Session tracking succeeded"); -    trace("Message = " + sessionSuccess.getMessage()); -    trace("Timestamp = " + sessionSuccess.getTimestamp()); -    trace("Adid = " + sessionSuccess.getAdid()); -    trace("Json Response = " + sessionSuccess.getJsonResponse()); + // All session success properties. + trace("Session tracking succeeded"); + trace("Message = " + sessionSuccess.getMessage()); + trace("Timestamp = " + sessionSuccess.getTimestamp()); + trace("Adid = " + sessionSuccess.getAdid()); + trace("Json Response = " + sessionSuccess.getJsonResponse()); }); ``` -### Session failure callbacks {%#session-failure%} +### Session failure callbacks {% #session-failure %} -In Adobe Air SDK v5, the `setSessionTrackingFailedDelegate` method has been renamed to `setSessionFailureCallback`. +In Adobe AIR SDK v5, the `setSessionTrackingFailedDelegate` method has been renamed to `setSessionFailureCallback`. The `getTimeStamp()` method has been renamed to `getTimestamp()`. @@ -311,20 +318,19 @@ To register a failed session recording by the SDK, call the `setSessionFailureCa ```actionscript-3 adjustConfig.setSessionFailureCallback(function (sessionFailure:AdjustSessionFailure):void { - -// All session failure properties. -    trace("Session tracking failed"); -    trace("Message = " + sessionFailure.getMessage()); -    trace("Timestamp = " + sessionFailure.getTimestamp()); -    trace("Adid = " + sessionFailure.getAdid()); -    trace("Will Retry = " + sessionFailure.getWillRetry().toString()); -    trace("Json Response = " + sessionFailure.getJsonResponse()); + // All session failure properties. + trace("Session tracking failed"); + trace("Message = " + sessionFailure.getMessage()); + trace("Timestamp = " + sessionFailure.getTimestamp()); + trace("Adid = " + sessionFailure.getAdid()); + trace("Will Retry = " + sessionFailure.getWillRetry().toString()); + trace("Json Response = " + sessionFailure.getJsonResponse()); }); ``` -### Event success callbacks {%#event-success%} +### Event success callbacks {% #event-success %} -In Adobe Air SDK v5, the `setEventTrackingSucceededDelegate` method has been renamed to `setEventSuccessCallback`. +In Adobe AIR SDK v5, the `setEventTrackingSucceededDelegate` method has been renamed to `setEventSuccessCallback`. The `getTimeStamp()` method has been renamed to `getTimestamp()`. @@ -332,8 +338,7 @@ To register a successful event recording by the SDK, call the `setEventSuccessCa ```actionscript-3 adjustConfig.setEventSuccessCallback(function (eventSuccess:AdjustEventSuccess):void { - -// All event success properties. + // All event success properties. trace("Event tracking succeeded"); trace("Message = " + eventSuccess.getMessage()); trace("Timestamp = " + eventSuccess.getTimestamp()); @@ -344,9 +349,9 @@ trace("Json Response = " + eventSuccess.getJsonResponse()); }); ``` -### Event failure callbacks {%#event-failure%} +### Event failure callbacks {% #event-failure %} -In Adobe Air SDK v5, the `setEventTrackingFailedDelegate` method has been renamed to `setEventFailureCallback`. +In Adobe AIR SDK v5, the `setEventTrackingFailedDelegate` method has been renamed to `setEventFailureCallback`. The `getTimeStamp()` method has been renamed to `getTimestamp()`. @@ -354,39 +359,49 @@ To register a failed event recording by the SDK, call the `setEventFailureCallba ```actionscript-3 adjustConfig.setEventFailureCallback(function (eventFailure:AdjustEventFailure):void { - -// All event failure properties. -    trace("Event tracking failed"); -    trace("Message = " + eventFailure.getMessage()); -    trace("Timestamp = " + eventFailure.getTimestamp()); -    trace("Adid = " + eventFailure.getAdid()); -    trace("Event Token = " + eventFailure.getEventToken()); -    trace("Callback Id = " + eventFailure.getCallbackId()); -    trace("Will Retry = " + eventFailure.getWillRetry().toString()); -    trace("Json Response = " + eventFailure.getJsonResponse()); + // All event failure properties. + trace("Event tracking failed"); + trace("Message = " + eventFailure.getMessage()); + trace("Timestamp = " + eventFailure.getTimestamp()); + trace("Adid = " + eventFailure.getAdid()); + trace("Event Token = " + eventFailure.getEventToken()); + trace("Callback Id = " + eventFailure.getCallbackId()); + trace("Will Retry = " + eventFailure.getWillRetry().toString()); + trace("Json Response = " + eventFailure.getJsonResponse()); }); ``` -## Deep links {%#deep-links%} +## Deep links {% #deep-links %} -### Reattribution using direct deep links {%#reattribution-using-deep-links%} +### Reattribution using direct deep links {% #reattribution-using-deep-links %} -In Adobe Air SDK v5, the `appWillOpenUrl` method has been renamed to `processDeeplink`. +In Adobe AIR SDK v5, the `appWillOpenUrl` method has been renamed to `processDeeplink`. -To open a direct deep link, create a new `AdjustDeeplink` instance with the deep link URL, and pass it to the `Adjust.processDeeplink` method. +To process a direct deep link, create a new `AdjustDeeplink` instance with the deep link URL, and pass it to the `Adjust.processDeeplink` method. ```actionscript-3 -var deeplink:String = event.arguments[0]; -    trace("Deep link = " + deeplink); -    var adjustDeeplink:AdjustDeeplink = new AdjustDeeplink("url"); -    Adjust.processDeeplink(adjustDeeplink); +var app:NativeApplication = NativeApplication.nativeApplication; +app.addEventListener(InvokeEvent.INVOKE, onInvoke); + +// ... + +private static function onInvoke(event:InvokeEvent):void { + if (event.arguments.length == 0) { + return; + } + + var deeplink:String = event.arguments[0]; + trace("Deeplink = " + deeplink); + var adjustDeeplink:AdjustDeeplink = new AdjustDeeplink(deeplink); + Adjust.processDeeplink(adjustDeeplink); +} ``` > TODO: Learn how to reattribute users with direct deep links. -### Disable opening deferred deep links {%#launch-deferred-deep-links%} +### Disable opening deferred deep links {% #launch-deferred-deep-links %} -In Adobe Air SDK v5, the `setShouldLaunchDeeplink` method has been renamed to `disableDeferredDeeplinkOpening`. Opening deferred deep links is enabled by default. +In Adobe AIR SDK v5, the `setShouldLaunchDeeplink` method has been renamed to `disableDeferredDeeplinkOpening`. Opening deferred deep links is enabled by default. To disable opening deferred deep links, call the renamed method: @@ -395,27 +410,27 @@ To disable opening deferred deep links, call the renamed method: adjustConfig.disableDeferredDeeplinkOpening(); ``` -### Deferred deep link callback listener {%#deffered-deep-link-callback-listener%} +### Deferred deep link callback listener {% #deffered-deep-link-callback-listener %} -In Adobe Air SDK v5, the `setDeferredDeeplinkDelegate` method has been renamed to `setDeferredDeeplinkCallback`. +In Adobe AIR SDK v5, the `setDeferredDeeplinkDelegate` method has been renamed to `setDeferredDeeplinkCallback`. To set a deferred deep link callback, call the `setDeferredDeeplinkCallback` method on your `AdjustConfig` instance: ```actionscript-3 adjustConfig.setDeferredDeeplinkCallback(function (deeplink:String):void { -    trace("Received deferred deep link"); -    trace("Deep link = " + deeplink); + trace("Received deferred deep link"); + trace("Deep link = " + deeplink); }); ``` > TODO: Learn how to work with deferred deep link callbacks. -## iOS only APIs {%#ios-only-apis%} +## iOS only APIs {% #ios-only-apis %} -### SKAdNetwork handling (iOS only) {%#skadnetwork-handling%} +### SKAdNetwork handling {% #skadnetwork-handling %} -In Adobe Air SDK v5, the `deactivateSKAdNetworkHandling` method has been renamed to `disableSkanAttribution`. The default state is `true`. +In Adobe AIR SDK v5, the `deactivateSKAdNetworkHandling` method has been renamed to `disableSkanAttribution`. The `SKAdNetwork` API is enabled by default. To disable the SKAdNetwork communication, call the `disableSkanAttribution` method on your `adjustConfig` instance. @@ -423,7 +438,7 @@ To disable the SKAdNetwork communication, call the `disableSkanAttribution` meth adjustConfig.disableSkanAttribution(); ``` -### App Tracking Transparency authorization wrapper {%#att-wrapper%} +### App Tracking Transparency authorization wrapper {% #att-wrapper %} In Adobe AIR SDK v5, the `requestTrackingAuthorizationWithCompletionHandler` method has been renamed to `requestAppTrackingAuthorization` for clarity. @@ -431,11 +446,11 @@ The renamed method is invoked like so: ```actionscript-3 Adjust.requestAppTrackingAuthorization(function (status:String):void { -    trace("Status = " + status); + trace("Status = " + status); }); ``` -## Get device information {%#device-info%} +## Get device information {% #device-info %} In Adobe AIR SDK v4, all device information getter methods run synchronously. @@ -443,55 +458,55 @@ In SDK v5, the following methods have been changed to run asynchronously. ### Adjust ID -{% codeblock title="Adjust ID getter"%} +{% codeblock title="Adjust ID getter" %} ```actionscript-3 Adjust.getAdid(function (adid:String):void { -    trace("Adjust ID = " + adid); + trace("Adjust ID = " + adid); }); ``` {% /codeblock %} ### Amazon Advertising ID -{% codeblock title="Amazon ADID getter"%} +{% codeblock title="Amazon ADID getter" %} ```actionscript-3 Adjust.getAmazonAdId(function (amazonAdId:String):void { -    trace("Amazon Advertising ID = " + amazonAdId); + trace("Amazon Advertising ID = " + amazonAdId); }); ``` {% /codeblock %} ### Apple's Identifier for Advertisers (IDFA) -{% codeblock title="IDFA getter"%} +{% codeblock title="IDFA getter" %} ```actionscript-3 Adjust.getIdfa(function (idfa:String): void { -    trace("IDFA = " + idfa); + trace("IDFA = " + idfa); }); ``` {% /codeblock %} ### Attribution -{% codeblock title="Attribution getter"%} +{% codeblock title="Attribution getter" %} ```actionscript-3 Adjust.getAttribution(function (attribution:AdjustAttribution): void { -    trace("Tracker token = " + attribution.getTrackerToken()); -    trace("Tracker name = " + attribution.getTrackerName()); -    trace("Campaign = " + attribution.getCampaign()); -    trace("Network = " + attribution.getNetwork()); -    trace("Creative = " + attribution.getCreative()); -    trace("Adgroup = " + attribution.getAdgroup()); -    trace("Click label = " + attribution.getClickLabel()); -    trace("Cost type = " + attribution.getCostType()); -    trace("Cost amount = " + isNaN(attribution.getCostAmount()) ? "NaN" : attribution.getCostAmount().toString()); -    trace("Cost currency = " + attribution.getCostCurrency()); -    trace("FB install referrer = " + attribution.getFbInstallReferrer()); + trace("Tracker token = " + attribution.getTrackerToken()); + trace("Tracker name = " + attribution.getTrackerName()); + trace("Campaign = " + attribution.getCampaign()); + trace("Network = " + attribution.getNetwork()); + trace("Creative = " + attribution.getCreative()); + trace("Adgroup = " + attribution.getAdgroup()); + trace("Click label = " + attribution.getClickLabel()); + trace("Cost type = " + attribution.getCostType()); + trace("Cost amount = " + isNaN(attribution.getCostAmount()) ? "NaN" : attribution.getCostAmount().toString()); + trace("Cost currency = " + attribution.getCostCurrency()); + trace("FB install referrer = " + attribution.getFbInstallReferrer()); }); ``` {% /codeblock %} -## Removed APIs {%#removed-apis%} +## Removed APIs {% #removed-apis %} {% minorversion removed="v5" size="large" /%} @@ -501,7 +516,7 @@ The following APIs have been removed from Adobe AIR SDK v5. - The `setEventBufferingEnabled` method has been removed. - The `setReadMobileEquipmentIdentity` method has been removed. (**non-Google Play Store Android apps only**) -### Disable third party sharing globally {%#disable-sharing-globally%} +### Disable third party sharing globally {% #disable-sharing-globally %} The `disableThirdPartySharing` method has been removed. @@ -512,7 +527,7 @@ var adjustThirdPartySharing:AdjustThirdPartySharing = new AdjustThirdPartySharin Adjust.trackThirdPartySharing(adjustThirdPartySharing); ``` -### Set an app secret {%#set-app-secret%} +### Set an app secret {% #set-app-secret %} The `setAppSecret` method has been removed. @@ -520,4 +535,4 @@ The [SDK signature library](https://help.adjust.com/en/article/sdk-signature) is ### Huawei referrer API -This feature has been removed. If your Adobe Air app uses the Huawei referrer API, contact your Adjust representative or email [support@adjust.com](mailto:support@adjust.com) before you upgrade. +This feature has been removed. If your Adobe AIR app uses the Huawei referrer API, contact your Adjust representative or email [support@adjust.com](mailto:support@adjust.com) before you upgrade. From c0606d59f37e0278cb52a491af64b37a9c56b66d Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Thu, 14 Nov 2024 15:00:28 +0100 Subject: [PATCH 16/46] Small typo --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 16ffee6da..c6e75d5e4 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -179,7 +179,7 @@ Adjust.switchToOfflineMode(); // set the SDK to offline mode Adjust.switchBackToOnlineMode(); // set the SDK back to online mode ``` -### Send information in background {% #send-in-backgroun d%} +### Send information in background {% #send-in-background %} The `setSendInBackground` method has been renamed to `enableSendingInBackground`. From 310c2932a5ddfd7419f8569c6e758a65be4cc613 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Thu, 14 Nov 2024 19:09:57 +0100 Subject: [PATCH 17/46] Feature: Deep links --- .../android/features/deep-links.mdoc | 224 ++++++++++++++++++ .../en/sdk/migration/adobe-air/v4-to-v5.mdoc | 9 +- 2 files changed, 226 insertions(+), 7 deletions(-) create mode 100644 src/content/docs/en/sdk/adobe-air/android/features/deep-links.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/features/deep-links.mdoc b/src/content/docs/en/sdk/adobe-air/android/features/deep-links.mdoc new file mode 100644 index 000000000..8cd68211d --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/features/deep-links.mdoc @@ -0,0 +1,224 @@ +--- +title: Set up deep links +description: Configure your app to handle direct and deferred deep links. +sidebar-position: 6 +--- + +[Deep links](https://help.adjust.com/en/article/deep-links) are URIs (Uniform Resource Identifiers) that direct users to specific pages within your app. They improve the user experience by guiding them directly to relevant content after they interact with a link. + +Adobe AIR SDK supports two types of deep links, based on whether the user has already installed your app: + +- **Direct deep links**: If the user already has your app installed, the link opens the specified page. +- **Deferred deep links**: If the user doesn’t have your app installed, the link directs them to the app store to install it. After installation, the app opens in the specified page. + +## Configure your app {% #configure-deep-link-android %} + +To enable your Android app to support deep link, you need to configure your Android app. + +Add the following to the activity you want to launch after deep linking. Replace `adjust-example` with your scheme name: + +```xml + + + + + + + + + + + + + + +``` + +## Reattribution with direct deep links {% #reattribution-with-deep-links %} + +You can reattribute your users by sending deep link information to Adjust. When a user interacts with the deep link, the SDK sends this data to Adjust to update their attribution information. + +1. First, create a new `AdjustDeeplink` instance with your deep link URI. The `AdjustDeeplink` class validates this URI and checks the formatted string to ensure successful processing. + +1. Then, call the `Adjust.processDeeplink` method to handle the deep link and pass the information to Adjust. + +The `AdjustDeeplink` class constructor requires the following argument: + + +{% deflist %} +`deeplink`: `Uri` + +: The deep link URI that opens your app. +{% /deflist %} + +The `Adjust.processDeeplink` method requires the following argument: + +{% deflist %} +`adjustDeeplink`: `AdjustDeeplink` + +: The `AdjustDeeplink` instance you created. +{% /deflist %} + +To get information via a direct deep link, subscribe to the `InvokeEvent.INVOKE` event and set up a callback method that's triggered once this event happens. You can access the URL of the deep link that opened your app inside that callback method: + +```actionscript-3 +var app:NativeApplication = NativeApplication.nativeApplication; +app.addEventListener(InvokeEvent.INVOKE, onInvoke); + +// ... + +private static function onInvoke(event:InvokeEvent):void { + if (event.arguments.length == 0) { + return; + } + + var deeplink:String = event.arguments[0]; + trace("Deeplink = " + deeplink); + var adjustDeeplink:AdjustDeeplink = new AdjustDeeplink(deeplink); + Adjust.processDeeplink(adjustDeeplink); +} +``` + +## Deferred deep link callbacks {% #deffered-deep-link-callbacks %} + +To get information via a deferred deep link, you set a callback method on the `AdjustConfig` instance. This receives a `String` parameter where the content of the URL will be delivered. + +1. Call `setDeferredDeeplinkCallback` method on your `adjustConfig` instance. +2. Pass the deep link as a `String`. + +The `setDeferredDeeplinkCallback` method requires the following arguments: + + +{% deflist %} +`setDeferredDeeplinkCallback`: `setDeferredDeeplinkCallback` + +: A function that sets a deferred deep link callback. + +`deeplink`: `String` + +: The deferred deep link you want to pass. +{% /deflist %} + +```actionscript-3 +var appToken:String = "{YourAppToken}"; +var environment:String = AdjustEnvironment.SANDBOX; + +var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); +adjustConfig.setDeferredDeeplinkCallback(DeferredDeeplinkCallback); +Adjust.initSdk(adjustConfig); + +// ... + +private static function DeferredDeeplinkCallback(deeplink:String):void { + trace("Received deferred deep link"); + trace("Deep link = " + deeplink); +}; +``` + +## Disable opening deferred deep links {% #launch-deferred-deep-links %} + +The SDK opens deferred deep links by default. You can disable this behavior with the `disableDeferredDeeplinkOpening` method. + +1. Call `disableDeferredDeeplinkOpening` on your `adjustConfig` instance. + +```actionscript-3 +adjustConfig.disableDeferredDeeplinkOpening(); +``` + + +> **Adapat and add snippets** +> **See template: [Adobe Extension tutorial](https://dev-docs-hcfx9x6by-product-content.vercel.app/en/sdk/adobe-extension/android/deep-linking#tutorial)** + + + +## Tutorial: Create a deferred deep link function {% #tutorial %} + +If you followed the [integration guide](/en/sdk/adobe-air/android/integration), you've already configured the Adjust AIR SDK to process and open deep links. If you haven't done this, refer to [set up deep link handling](/en/sdk/adobe-air/android/integration#set-up-deep-link-handling) for instructions. + +In this tutorial, you'll learn how to create a callback function that controls deep linking functionality using the `setDeferredDeeplinkCallback` method. The function will open the link depending on the following condition: + +"If the deep link contains `"no_open"`, the app won't open it." + +The result looks like this: + +```actionscript-3 +package { + import com.adjust.sdk.Adjust; + import com.adjust.sdk.AdjustConfig; + import com.adjust.sdk.AdjustEnvironment; + import com.adjust.sdk.AdjustLogLevel; + + public class Example extends Sprite { + public function Example() { + var appToken:String = "{YourAppToken}"; + var environment:String = AdjustEnvironment.SANDBOX; + + var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); + adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); + + adjustConfig.setDeferredDeeplinkCallback(DeferredDeeplinkCallback); + + Adjust.initSdk(adjustConfig); + } + } + + private static function deferredDeeplinkDelegate(uri:String):void { + trace("Received deferred deeplink"); + trace("URI = " + uri); + } + +} + +``` + +Here's what you need to do: + +1. Inside the `try...catch` block, call the `setDeferredDeeplinkCallback` method of your `adjustConfig` instance. Pass an `OnDeferredDeeplinkResponseListener` instance as an argument. + + {% codeblock + title="Main.as" + highlight="{range: 6}" + %} + ```actionscript-3 + // add snippet + + ``` + {% /codeblock %} + +1. Create a new public function called `launchReceivedDeeplink` inside your `OnDeferredDeeplinkResponseListener` declaration. This method takes a `Uri` argument and returns a `boolean`. + + {% codeblock + title="Main.as" + highlight="{range: 3}" + %} + ```actionscript-3 + // add snippet + + ``` + {% /codeblock %} + +1. Add an `if` condition to the `launchReceivedDeeplink` to check if the `deeplink` contains the value `"no_open"`. If the string is found, the function returns `false`, and the app shouldn't open the deferred deep link. + + {% codeblock + title="Main.as" + highlight="{range: 3-5}" + %} + ```actionscript-3 + // add snippet + + ``` + {% /codeblock %} + +1. Finally, add an `else` block to return `true` if the deep link doesn't contain `"no_open"`. + + {% codeblock + title="Main.as" + highlight="{range: 5-7}" + %} + ```actionscript-3 + // add snippet + + ``` + {% /codeblock %} + +That's it! When a user opens your app with a deferred deep link, the Adobe AIR SDK will check if the link contains the string `"no_open"`. If it does, the app won't open the deep link. diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index c6e75d5e4..d3bcbab39 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -5,7 +5,6 @@ sidebar-label: SDK v5 migration guide sidebar-position: 1 --- - The [Adjust Adobe AIR SDK](https://github.com/adjust/adobe_air_sdk) has been updated to v5. Follow this guide to migrate from v4 to the latest version. ## Before you begin {% #before-you-begin %} @@ -95,7 +94,6 @@ package { In Adobe AIR SDK v4, you needed to declare several permissions to allow your Adobe AIR app for Android to access device information via the Adjust SDK for Android. {% codeblock title="YOURAPP-app.xml" %} - ```xml @@ -123,7 +121,6 @@ In Adobe AIR SDK v5, you can delete some or all from your XML configuration file - `com.google.android.gms.permission.AD_ID` is bundled in the Adjust SDK for Android. You can [remove it](https://dev.adjust.com/en/sdk/android#add-permissions) with the following snippet: {% codeblock title="YOURAPP-app.xml" %} - ```xml @@ -397,13 +394,12 @@ private static function onInvoke(event:InvokeEvent):void { } ``` -> TODO: Learn how to reattribute users with direct deep links. +Learn how to [reattribute users with direct deep links](/en/sdk/adobe-air/android/features/deep-links#reattribution-with-deep-links). ### Disable opening deferred deep links {% #launch-deferred-deep-links %} In Adobe AIR SDK v5, the `setShouldLaunchDeeplink` method has been renamed to `disableDeferredDeeplinkOpening`. Opening deferred deep links is enabled by default. - To disable opening deferred deep links, call the renamed method: ```actionscript-3 @@ -414,7 +410,6 @@ adjustConfig.disableDeferredDeeplinkOpening(); In Adobe AIR SDK v5, the `setDeferredDeeplinkDelegate` method has been renamed to `setDeferredDeeplinkCallback`. - To set a deferred deep link callback, call the `setDeferredDeeplinkCallback` method on your `AdjustConfig` instance: ```actionscript-3 @@ -424,7 +419,7 @@ adjustConfig.setDeferredDeeplinkCallback(function (deeplink:String):void { }); ``` -> TODO: Learn how to work with deferred deep link callbacks. +Learn how to [work with deferred deep link callbacks](/en/sdk/adobe-air/android/features/deep-links#deffered-deep-link-callbacks). ## iOS only APIs {% #ios-only-apis %} From 42ab1cab229e25097729c09f7c8d5de28ae64acd Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Fri, 15 Nov 2024 12:34:29 +0100 Subject: [PATCH 18/46] Separate attribution getter into a section --- .../en/sdk/migration/adobe-air/v4-to-v5.mdoc | 50 +++++++++++-------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index d3bcbab39..51f0be984 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -11,8 +11,8 @@ The [Adjust Adobe AIR SDK](https://github.com/adjust/adobe_air_sdk) has been upd The minimum supported iOS and Android versions have been updated. If your app targets a lower version, update it first. - - iOS: **12.0** - - Android: **21** +- iOS: **12.0** +- Android: **21** ### Update the initialization method {% #init-method %} @@ -33,12 +33,12 @@ var environment:String = AdjustEnvironment.SANDBOX; ``` {% deflist %} - `environment`: `String` +`environment`: `String` - : The environment in which your device is running. +: The environment in which your device is running. - - Pass `AdjustEnvironment.SANDBOX` when testing. - - Pass `AdjustEnvironment.PRODUCTION` when running the app in production. +- Pass `AdjustEnvironment.SANDBOX` when testing. +- Pass `AdjustEnvironment.PRODUCTION` when running the app in production. {% /deflist %} #### Log level @@ -50,20 +50,20 @@ adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); ``` {% deflist %} - `setLogLevel`: `String` +`setLogLevel`: `String` - : The level of logging you want to enable. +: The level of logging you want to enable. - - `adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE)`: enable all logging - - `adjustConfig.setLogLevel(AdjustLogLevel.DEBUG)`: disable verbose logging. - - `adjustConfig.setLogLevel(AdjustLogLevel.INFO)`: the default: Log information, warnings, and errors. - - `adjustConfig.setLogLevel(AdjustLogLevel.WARN)`: log only errors and warnings. - - `adjustConfig.setLogLevel(AdjustLogLevel.ERROR)`: log only errors. - - `adjustConfig.setLogLevel(AdjustLogLevel.ASSERT);`: disable errors. - - `adjustConfig.setLogLevel(AdjustLogLevel.SUPPRESS);`: disable all logging. +- `adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE)`: enable all logging +- `adjustConfig.setLogLevel(AdjustLogLevel.DEBUG)`: disable verbose logging. +- `adjustConfig.setLogLevel(AdjustLogLevel.INFO)`: the default: Log information, warnings, and errors. +- `adjustConfig.setLogLevel(AdjustLogLevel.WARN)`: log only errors and warnings. +- `adjustConfig.setLogLevel(AdjustLogLevel.ERROR)`: log only errors. +- `adjustConfig.setLogLevel(AdjustLogLevel.ASSERT);`: disable errors. +- `adjustConfig.setLogLevel(AdjustLogLevel.SUPPRESS);`: disable all logging. {% /deflist %} -### Sample initialization snippet {% #sample-initialization-snippet%} +### Sample initialization snippet {% #sample-initialization-snippet %} To initialize the Adobe AIR SDK v5, adapt the following code sample: @@ -118,7 +118,7 @@ In Adobe AIR SDK v5, you can delete some or all from your XML configuration file #### COPPA (Children's Online Privacy Protection Act) compliance -- `com.google.android.gms.permission.AD_ID` is bundled in the Adjust SDK for Android. You can [remove it](https://dev.adjust.com/en/sdk/android#add-permissions) with the following snippet: +- `com.google.android.gms.permission.AD_ID` is bundled in the Adjust SDK for Android. You can [remove it](https://dev.adjust.com/en/sdk/android#add-permissions) with the following snippet: {% codeblock title="YOURAPP-app.xml" %} ```xml @@ -142,7 +142,7 @@ Below is the complete list of changed, renamed, and [removed](#removed-apis) API Each section includes a reference to the previous and current API implementations, as well as a minimal code snippet that illustrates how to use the latest version. -{%callout type="tip"%} +{% callout type="tip" %} > TODO: To learn how to set up an Adobe AIR SDK v5 example app, follow a step-by-step tutorial to configure and implement all available features. {% /callout %} @@ -180,7 +180,7 @@ Adjust.switchBackToOnlineMode(); // set the SDK back to online mode The `setSendInBackground` method has been renamed to `enableSendingInBackground`. -To enable the Adobe AIR SDK v5 to send information to Adjust while your app is running in the background, call the `enableSendingInBackground` method on your `adjustConfig` instance. This feature is disabled by default. +To enable the Adobe AIR SDK v5 to send information to Adjust while your app is running in the background, call the `enableSendingInBackground` method on your `adjustConfig` instance. This feature is disabled by default. ```actionscript-3 adjustConfig.enableSendingInBackground(); @@ -222,7 +222,7 @@ adjustConfig.setAttributionCallback(function (attribution:AdjustAttribution): vo ### Event deduplication {% #event-deduplication %} -In Adobe AIR SDK v5, event deduplication is decoupled from the event `transactionId`. To prevent measuring duplicated events, use the `deduplicationId` ID field. +In Adobe AIR SDK v5, event deduplication is decoupled from the event `transactionId`. To prevent measuring duplicated events, use the `deduplicationId` ID field. ```actionscript-3 adjustEvent.setDeduplicationId("deduplicationId"); @@ -252,7 +252,7 @@ To add global callbacks to your sessions, call the `Adjust.addGlobalCallbackPara : The value of your parameter. {% /deflist %} - > TODO: Learn how to set up global callback. +> TODO: Learn how to set up global callback. ```actionscript-3 Adjust.addGlobalCallbackParameter("user_id", "855"); @@ -481,6 +481,12 @@ Adjust.getIdfa(function (idfa:String): void { ``` {% /codeblock %} +## Get attribution information {% #attribution-info %} + +In Adobe AIR SDK v4, the attribution information getter methods run synchronously. + +In SDK v5, the following methods have been changed to run asynchronously. + ### Attribution {% codeblock title="Attribution getter" %} @@ -530,4 +536,4 @@ The [SDK signature library](https://help.adjust.com/en/article/sdk-signature) is ### Huawei referrer API -This feature has been removed. If your Adobe AIR app uses the Huawei referrer API, contact your Adjust representative or email [support@adjust.com](mailto:support@adjust.com) before you upgrade. +This feature has been removed. If your Adobe AIR app uses the Huawei referrer API, contact your Adjust representative or email [support@adjust.com](mailto:support@adjust.com) before you upgrade. From 4ed6d92d84de1a3924c59fe0ff8aa91b58dfef74 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Fri, 15 Nov 2024 16:03:54 +0100 Subject: [PATCH 19/46] Formatting --- .../docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index 51f0be984..d017d5a54 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -118,7 +118,7 @@ In Adobe AIR SDK v5, you can delete some or all from your XML configuration file #### COPPA (Children's Online Privacy Protection Act) compliance -- `com.google.android.gms.permission.AD_ID` is bundled in the Adjust SDK for Android. You can [remove it](https://dev.adjust.com/en/sdk/android#add-permissions) with the following snippet: +- `com.google.android.gms.permission.AD_ID` is bundled in the Adjust SDK for Android. You can [remove it](/en/sdk/android#add-permissions) with the following snippet: {% codeblock title="YOURAPP-app.xml" %} ```xml @@ -205,7 +205,7 @@ The following properties have been added to the `attribution` parameter: Below is a sample snippet that implements these changes: ```actionscript-3 -adjustConfig.setAttributionCallback(function (attribution:AdjustAttribution): void { +adjustConfig.setAttributionCallback(function (attribution:AdjustAttribution):void { trace("Tracker token = " + attribution.getTrackerToken()); trace("Tracker name = " + attribution.getTrackerName()); trace("Campaign = " + attribution.getCampaign()); @@ -394,7 +394,7 @@ private static function onInvoke(event:InvokeEvent):void { } ``` -Learn how to [reattribute users with direct deep links](/en/sdk/adobe-air/android/features/deep-links#reattribution-with-deep-links). +Learn how to [reattribute users with direct deep links](/en/sdk/adobe-air/android/deep-links#reattribution-with-deep-links). ### Disable opening deferred deep links {% #launch-deferred-deep-links %} @@ -419,7 +419,7 @@ adjustConfig.setDeferredDeeplinkCallback(function (deeplink:String):void { }); ``` -Learn how to [work with deferred deep link callbacks](/en/sdk/adobe-air/android/features/deep-links#deffered-deep-link-callbacks). +Learn how to [work with deferred deep link callbacks](/en/sdk/adobe-air/android/deep-links#deffered-deep-link-callbacks). ## iOS only APIs {% #ios-only-apis %} @@ -475,7 +475,7 @@ Adjust.getAmazonAdId(function (amazonAdId:String):void { {% codeblock title="IDFA getter" %} ```actionscript-3 -Adjust.getIdfa(function (idfa:String): void { +Adjust.getIdfa(function (idfa:String):void { trace("IDFA = " + idfa); }); ``` @@ -491,7 +491,7 @@ In SDK v5, the following methods have been changed to run asynchronously. {% codeblock title="Attribution getter" %} ```actionscript-3 -Adjust.getAttribution(function (attribution:AdjustAttribution): void { +Adjust.getAttribution(function (attribution:AdjustAttribution):void { trace("Tracker token = " + attribution.getTrackerToken()); trace("Tracker name = " + attribution.getTrackerName()); trace("Campaign = " + attribution.getCampaign()); From 67536a652abce20ecd783858189ce00a0ad51703 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Fri, 15 Nov 2024 16:04:49 +0100 Subject: [PATCH 20/46] Feature: Manage attribution callbacks --- .../en/sdk/adobe-air/android/attribution.mdoc | 140 ++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 src/content/docs/en/sdk/adobe-air/android/attribution.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/attribution.mdoc b/src/content/docs/en/sdk/adobe-air/android/attribution.mdoc new file mode 100644 index 000000000..f6a091132 --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/attribution.mdoc @@ -0,0 +1,140 @@ +--- +title: Manage attribution callbacks +description: Set up an attribution callback to respond to attribution changes. +sidebar-position: 2 +--- + +When Adjust receives install data from the SDK, the device is attributed to the source of the install. This attribution information can change if the user is retargeted or interacts with another campaign. + +You can configure a callback function to respond to attribution changes. When Adjust receives new attribution information, it sends the data asynchronously back to the device. The callback function receives the device's attribution data as an argument. + +Read Adjust's [attribution data policies](https://github.com/adjust/sdks/blob/master/doc/attribution-data.md) to learn more about attribution data. + +## Trigger a function when attribution changes {% #trigger-a-function-when-attribution-changes %} + +The SDK can listen for attribution changes and call a function when it detects an update. To configure your callback function, assign it to the `attributionCallback` property of your `adjustConfig` instance. + +{% callout type="note" %} +**Note**: You must call the `attributionCallback` method **before** you initialize the Adjust SDK in your app. +{% /callout %} + +Follow these steps to implement the optional callback in your application: + +1. Create a `void` method that receives an `AdjustAttribution` parameter type. +1. Create an `AdjustConfig` instance. +1. Call the `adjustConfig.setAttributionCallback` with the method you created. + +Within the callback function you have access to the `attribution` parameter. + +### Reference {% #reference %} + +The callback function requires the following argument: + +{% deflist %} +`setAttributionCallback`: `attributionCallback` + +: A function that receives device attribution information asynchronously. +{% /deflist %} + +The `attribution` parameter supports the following properties: + +{% deflist %} +`trackerToken`: `String` + +: The token of the link to which the device is currently attributed. + +`trackerName`: `String` + +: The name of the link to which the device is currently attributed. + +`network`: `String` + +: The name of the network to which the device is currently attributed. + +`campaign`: `String` + +: The name of the campaign to which the device is currently attributed. + +`adgroup`: `String` + +: The name of the adgroup to which the device is currently attributed. + +`creative`: `String` + +: The name of the creative to which the device is currently attributed. + +`clickLabel`: `String` + +: The [click label](https://help.adjust.com/en/article/user-rewards) that the install is tagged with. + +`costType`: `String` + +: The campaign pricing model (for example, CPI). + +`costAmount`: `Number` + +: The cost of the install. + +`costCurrency`: `String` + +: The [3 character ISO 4217 code](https://www.iban.com/currency-codes) of the currency associated with the cost. + +`fbInstallReferrer`: `String` + +: The [Facebook install referrer](https://developers.facebook.com/docs/app-ads/install-referrer/) of the current attribution. +{% /deflist %} + +### Attribution callback snippet + +```actionscript-3 +import com.adjust.sdk.Adjust; +import com.adjust.sdk.AdjustConfig; +import com.adjust.sdk.AdjustEnvironment; +import com.adjust.sdk.AdjustLogLevel; +import com.adjust.sdk.AdjustAttribution; + +public class Example extends Sprite { + public function Example() { + var appToken:String = "{YourAppToken}"; + var environment:String = AdjustEnvironment.SANDBOX; + + var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); + adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); + adjustConfig.setAttributionCallback(attributionCallback); + + Adjust.initSdk(adjustConfig); + } + + // … + + private static function attributionCallback(attribution:AdjustAttribution):void { + trace("Tracker token = " + attribution.getTrackerToken()); + trace("Tracker name = " + attribution.getTrackerName()); + trace("Campaign = " + attribution.getCampaign()); + trace("Network = " + attribution.getNetwork()); + trace("Creative = " + attribution.getCreative()); + trace("Adgroup = " + attribution.getAdgroup()); + trace("Click label = " + attribution.getClickLabel()); + trace("Cost type = " + attribution.getCostType()); + trace("Cost amount = " + isNaN(attribution.getCostAmount()) ? "NaN" : attribution.getCostAmount().toString()); + trace("Cost currency = " + attribution.getCostCurrency()); + trace("FB install referrer = " + attribution.getFbInstallReferrer()); + } +} +``` + +## Get current attribution information {% #get-current-attribution-information %} + +When a user installs your app, Adjust attributes the install to a campaign. The Adjust SDK gives you access to campaign attribution details for your install. To return this information, call the `getAttribution` method . + +{% codeblock title="Attribution getter" %} +```actionscript-3 + +Adjust.getAttribution(function (attribution:AdjustAttribution):void { +// process attribution +}); + +``` +{% /codeblock %} + +## Tutorial {% #tutorial %} From 526280df9c6e8a87922bcb2ef13e2a1740ee2679 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Fri, 15 Nov 2024 16:05:16 +0100 Subject: [PATCH 21/46] Feature: Get device information --- .../adobe-air/android/device-information.mdoc | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 src/content/docs/en/sdk/adobe-air/android/device-information.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/device-information.mdoc b/src/content/docs/en/sdk/adobe-air/android/device-information.mdoc new file mode 100644 index 000000000..72e15cf91 --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/device-information.mdoc @@ -0,0 +1,122 @@ +--- +title: Get device information +description: Use these methods to add details to your callbacks and improve your reporting. +sidebar-position: 6 +--- + +The Adobe AIR SDK contains helper methods that return device information. Use these methods to add details to your callbacks and improve your reporting. + +## Adjust device identifier {% #adjust-device-identifier %} + +Adjust generates a unique Adjust Device ID (ADID) for each device. The ADID is available after Adjust registered an app install, which means you can only access this value after the SDK has been initialised and your app was installed and recorded successfully. + +To access this ID, call the `getAdid` method. The SDK fetches the information asynchronously and passes it to your function. + +1. Call the `getAdid` method on your `Adjust` instance. +1. Return the `adid` as a `String`. + +{% deflist %} +`getAdid`: `getAdid` + +: A function that obtains a device ADID. + +`adid`: `String` + +: The device ADID. +{% /deflist %} + +{% codeblock title="Adjust ID getter" %} +```actionscript-3 +Adjust.getAdid(function (adid:String):void { + trace("Adjust ID = " + adid); +}); +``` +{% /codeblock %} + +## Amazon Advertising ID (Android-only) {% #amazon-advertiser-id %} + +The Amazon Advertising ID (Amazon Ad ID) is a device-specific identifier for Android devices. To access this ID, call the `getAmazonAdId` method. The SDK fetches the information asynchronously and passes it to your function. + +1. Call the `getAmazonAdId` method on your `Adjust` instance. +1. Return the `amazonAdId` as a `String`. + +{% deflist %} +`getAmazonAdId`: `getAmazonAdId` + +: A function that obtains a device Amazon Ad ID. + +`amazonAdId`: `String` + +: The device Amazon Ad ID. +{% /deflist %} + +{% codeblock title="Amazon ADID getter" %} +```actionscript-3 +Adjust.getAmazonAdId(function (amazonAdId:String):void { + trace("Amazon Advertising ID = " + amazonAdId); +}); +``` +{% /codeblock %} + +## Apple's Identifier for Advertisers (IDFA) {% #id-for-advertisers %} + +The ID for Advertisers (IDFA) is a device-specific identifier for Apple devices. To access this ID, call the `getIdfa` method. The SDK fetches the information asynchronously and passes it to your function. + +1. Call the `getIdfa` method on your `Adjust` instance. +1. Return the `idfa` as a `String`. + +{% deflist %} +`getIdfa`: `getIdfa` + +: A function that obtains a device IDFA. + +`idfa`: `String` + +: The device IDFA. +{% /deflist %} + +{% codeblock title="IDFA getter" %} +```actionscript-3 +Adjust.getIdfa(function (idfa:String):void { + trace("IDFA = " + idfa); +}); +``` +{% /codeblock %} + +## Google Play Services Advertising ID {% #google-play-services-advertising-id %} + +The Google Play Services Advertising ID (GPS ADID) is an Android device-specific identifier. + +Users can opt out of sharing their GPS ADID by toggling the “Opt out of Ads Personalization” setting on their device. When a user opts out, Adjust returns a string of zeros when trying to read the GPS ADID. + +To access this ID, call the `getGoogleAdId` method in a background thread. Assign a delegate function to access the GPS ADID value. + +1. Call the `getGoogleAdId` method on your `Adjust` instance. +1. Pass it the `getGoogleAdIdCallback` function. +1. Return the `googleAdId` as a `String` parameter. + +The `getGoogleAdId` function requires the following arguments: + +{% deflist %} +`getGoogleAdId`: `getGoogleAdIdCallback` + +: A function that obtains a device GPS ADID. + +`googleAdId`: `String` + +: The device GPS ADID. +{% /deflist %} + +{% codeblock title="GPS ADID getter" %} +```actionscript-3 +Adjust.getGoogleAdId(getGoogleAdIdCallback); + +// … + +private static function getGoogleAdIdCallback(googleAdId:String):void { + trace("Google Ad Id = " + googleAdId); +} +``` +{% /codeblock %} + +## Tutorial {% #tutorial %} From 5990287645ba6be09e4cd98640d6cfeb04a21180 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Fri, 15 Nov 2024 16:05:46 +0100 Subject: [PATCH 22/46] Feature: Set up App Tracking Transparency --- .../en/sdk/adobe-air/ios/att-wrapper.mdoc | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/content/docs/en/sdk/adobe-air/ios/att-wrapper.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/ios/att-wrapper.mdoc b/src/content/docs/en/sdk/adobe-air/ios/att-wrapper.mdoc new file mode 100644 index 000000000..ca8819bf9 --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/ios/att-wrapper.mdoc @@ -0,0 +1,84 @@ +--- +title: Set up App Tracking Transparency +description: Configure your iOS app to use Apple's App Tracking Transparency framework. +sidebar-position: 6 +--- + +If you want to record an iOS device's ID for Advertisers (IDFA), you must display a prompt to get your user's consent. + +To do this, you need to include Apple's App Tracking Transparency (ATT) framework in your app. The SDK stores the user's authorization status and sends it to Adjust's servers with each request. + +## Authorization statuses {% #authorization-statuses %} + +0: `ATTrackingManagerAuthorizationStatusNotDetermined` +The user hasn’t responded to the access prompt yet. + +1: `ATTrackingManagerAuthorizationStatusRestricted` +Access to app-related data is blocked at the device level. + +2: `ATTrackingManagerAuthorizationStatusDenied` +The user has denied access to app-related data for device measurement. + +3: `ATTrackingManagerAuthorizationStatusAuthorized` +The user has granted access to app-related data for device measurement. + +## ATT authorization wrapper {% #att-wrapper %} + +The Adobe AIR SDK contains a wrapper around [Apple’s `requestTrackingAuthorizationWithCompletionHandler` method](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/requesttrackingauthorization\(completionhandler:\)). You can use this wrapper to customize the ATT prompt. + +The callback method triggers when your user responds to the consent dialog. This method sends the user’s consent status code to Adjust’s servers. You can define responses to each status code within the callback function. + +You must specify text content for the ATT request dialog. To do this, add your text to the `NSUserTrackingUsageDescription` key in your `Info.plist` file. + +1. Call the `requestAppTrackingAuthorization` method. +1. Pass the status as a `String`. + +The `requestAppTrackingAuthorization` method requires the following argument: + +{% deflist %} +`requestAppTrackingAuthorization`: `requestAppTrackingAuthorization` + +: A function that requests the user's consent. + +`status`: `String` + +: The user's authorization status. +{% /deflist %} + +```actionscript-3 +Adjust.requestAppTrackingAuthorization(function (status:String):void { + trace("Status = " + status); +}); +``` + +```actionscript-3 +import com.adjust.sdk.Adjust; +import com.adjust.sdk.AdjustConfig; +import com.adjust.sdk.AdjustEnvironment; +import com.adjust.sdk.AdjustLogLevel; + +public class Example extends Sprite { + public function Example() { + var appToken:String = "{YourAppToken}"; + var environment:String = AdjustEnvironment.SANDBOX; + + var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); + adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); + adjustConfig.setAttributionCallback(attributionCallback); + + Adjust.initSdk(adjustConfig); + + Adjust.requestAppTrackingAuthorization(authorizationStatus); + } + + // ... + + private static function authorizationStatus(status:String):void { + trace("Status = " + status); + } +} +``` + +> Anything else relevant? See [Flutter](https://dev.adjust.com/en/sdk/flutter/features/att) **AND** [iOS](https://dev.adjust.com/en/sdk/ios/features/att) + +## Tutorial {% #tutorial %} From 9eb4f4a0c478f04827e8b9a9ed7229ea89dfe9c6 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Fri, 15 Nov 2024 16:06:03 +0100 Subject: [PATCH 23/46] Feature: Manage SKAdNetwork --- .../adobe-air/ios/skadnetwork-handling.mdoc | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/content/docs/en/sdk/adobe-air/ios/skadnetwork-handling.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/ios/skadnetwork-handling.mdoc b/src/content/docs/en/sdk/adobe-air/ios/skadnetwork-handling.mdoc new file mode 100644 index 000000000..0d22d48af --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/ios/skadnetwork-handling.mdoc @@ -0,0 +1,29 @@ +--- +title: Manage SKAdNetwork +description: Manage how your iOS app communicates with SKAdNetwork. +sidebar-position: 6 +--- + +{% callout type="important" %} +This feature is only available on devices running iOS 14 and above. It requires Adjust iOS SDK v4.22.0 or above. +{% /callout %} + +StoreKit Ad Network (SKAdNetwork) is Apple’s framework for app install and reinstall attribution. This is the SKAdNetwork workflow: + +1. Apple gathers attribution information and notifies the relevant ad network. +1. The network sends a postback with this information to Adjust. +1. Adjust displays SKAdNetwork data in [Datascape](https://help.adjust.com/en/suite/article/datascape). + +The Adobe AIR SDK communicates with SKAdNetwork by default, and registers for SKAdNetwork attribution upon initialization. + +## Disable SKAdNetwork communication {% #disable-skadnetwork-communication %} + +To disable the SKAdNetwork communication, call the `disableSkanAttribution` method on your `adjustConfig` instance. + +```actionscript-3 +adjustConfig.disableSkanAttribution(); +``` + +> What about the rest (conversion values, callback, etc)? See https://dev.adjust.com/en/sdk/flutter/features/skan + +## Tutorial {% #tutorial %} From f2477b7ab259882216fd97663ab799a740375500 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Fri, 15 Nov 2024 16:07:22 +0100 Subject: [PATCH 24/46] Create category pages --- .../android/{features => }/deep-links.mdoc | 37 ++++++------------- .../docs/en/sdk/adobe-air/android/index.mdoc | 8 ++++ src/content/docs/en/sdk/adobe-air/index.mdoc | 9 +++++ .../docs/en/sdk/adobe-air/ios/index.mdoc | 8 ++++ .../en/sdk/migration/adobe-air/index.mdoc | 5 ++- 5 files changed, 40 insertions(+), 27 deletions(-) rename src/content/docs/en/sdk/adobe-air/android/{features => }/deep-links.mdoc (93%) create mode 100644 src/content/docs/en/sdk/adobe-air/android/index.mdoc create mode 100644 src/content/docs/en/sdk/adobe-air/index.mdoc create mode 100644 src/content/docs/en/sdk/adobe-air/ios/index.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/features/deep-links.mdoc b/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc similarity index 93% rename from src/content/docs/en/sdk/adobe-air/android/features/deep-links.mdoc rename to src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc index 8cd68211d..cd1486bad 100644 --- a/src/content/docs/en/sdk/adobe-air/android/features/deep-links.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc @@ -45,6 +45,7 @@ You can reattribute your users by sending deep link information to Adjust. When The `AdjustDeeplink` class constructor requires the following argument: + {% deflist %} `deeplink`: `Uri` @@ -84,11 +85,12 @@ private static function onInvoke(event:InvokeEvent):void { To get information via a deferred deep link, you set a callback method on the `AdjustConfig` instance. This receives a `String` parameter where the content of the URL will be delivered. 1. Call `setDeferredDeeplinkCallback` method on your `adjustConfig` instance. -2. Pass the deep link as a `String`. +1. Pass the deep link as a `String`. The `setDeferredDeeplinkCallback` method requires the following arguments: + {% deflist %} `setDeferredDeeplinkCallback`: `setDeferredDeeplinkCallback` @@ -125,11 +127,8 @@ The SDK opens deferred deep links by default. You can disable this behavior with adjustConfig.disableDeferredDeeplinkOpening(); ``` - > **Adapat and add snippets** -> **See template: [Adobe Extension tutorial](https://dev-docs-hcfx9x6by-product-content.vercel.app/en/sdk/adobe-extension/android/deep-linking#tutorial)** - - +**See template: [Adobe Extension tutorial](https://dev-docs-hcfx9x6by-product-content.vercel.app/en/sdk/adobe-extension/android/deep-linking#tutorial)** ## Tutorial: Create a deferred deep link function {% #tutorial %} @@ -175,49 +174,37 @@ Here's what you need to do: 1. Inside the `try...catch` block, call the `setDeferredDeeplinkCallback` method of your `adjustConfig` instance. Pass an `OnDeferredDeeplinkResponseListener` instance as an argument. - {% codeblock - title="Main.as" - highlight="{range: 6}" - %} + {% codeblock title="Main.as" highlight="{range: 6}" %} ```actionscript-3 // add snippet - + ``` {% /codeblock %} 1. Create a new public function called `launchReceivedDeeplink` inside your `OnDeferredDeeplinkResponseListener` declaration. This method takes a `Uri` argument and returns a `boolean`. - {% codeblock - title="Main.as" - highlight="{range: 3}" - %} + {% codeblock title="Main.as" highlight="{range: 3}" %} ```actionscript-3 // add snippet - + ``` {% /codeblock %} 1. Add an `if` condition to the `launchReceivedDeeplink` to check if the `deeplink` contains the value `"no_open"`. If the string is found, the function returns `false`, and the app shouldn't open the deferred deep link. - {% codeblock - title="Main.as" - highlight="{range: 3-5}" - %} + {% codeblock title="Main.as" highlight="{range: 3-5}" %} ```actionscript-3 // add snippet - + ``` {% /codeblock %} 1. Finally, add an `else` block to return `true` if the deep link doesn't contain `"no_open"`. - {% codeblock - title="Main.as" - highlight="{range: 5-7}" - %} + {% codeblock title="Main.as" highlight="{range: 5-7}" %} ```actionscript-3 // add snippet - + ``` {% /codeblock %} diff --git a/src/content/docs/en/sdk/adobe-air/android/index.mdoc b/src/content/docs/en/sdk/adobe-air/android/index.mdoc new file mode 100644 index 000000000..5834975f5 --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/index.mdoc @@ -0,0 +1,8 @@ +--- +title: Andorid Adobe AIR integration guide +description: Follow this guide to integrate the Adjust Adobe AIR SDK in your Android apps. +category-title: Android +sidebar-position: 1 +--- + +Overview page (see https://github.com/adjust/dev-docs/blob/ADAPP-18812-adobe-extension-i-os-v-5-update/src/content/docs/en/sdk/adobe-extension/android/index.mdoc) diff --git a/src/content/docs/en/sdk/adobe-air/index.mdoc b/src/content/docs/en/sdk/adobe-air/index.mdoc new file mode 100644 index 000000000..bb5efdbc0 --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/index.mdoc @@ -0,0 +1,9 @@ +--- +title: Adobe AIR SDK integration guide +description: Use the Adobe AIR SDK to access Adjust's features in your apps +category-title: Adobe AIR SDK +slug: en/sdk/adobe-air +sidebar-position: 9 +type: category +--- + diff --git a/src/content/docs/en/sdk/adobe-air/ios/index.mdoc b/src/content/docs/en/sdk/adobe-air/ios/index.mdoc new file mode 100644 index 000000000..9ef2f49ab --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/ios/index.mdoc @@ -0,0 +1,8 @@ +--- +title: iOS Adobe AIR integration guide +description: Follow this guide to integrate the Adjust Adobe AIR SDK in your iOS apps. +category-title: iOS +sidebar-position: 1 +--- + +Overview page (see https://github.com/adjust/dev-docs/blob/ADAPP-18812-adobe-extension-i-os-v-5-update/src/content/docs/en/sdk/adobe-extension/ios/index.mdoc) diff --git a/src/content/docs/en/sdk/migration/adobe-air/index.mdoc b/src/content/docs/en/sdk/migration/adobe-air/index.mdoc index 2ddf28363..a2161480c 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/index.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/index.mdoc @@ -1,7 +1,8 @@ --- - title: Adobe AIR +title: Adobe AIR sidebar-label: Adobe Air - description: Follow these guides to migrate between SDK versions + description: Follow these guides to migrate to the latest SDK version type: category sidebar-position: 8 --- + From a5851cfbc989b0b5bb15f37833ed632fa415a1ad Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Fri, 15 Nov 2024 16:10:45 +0100 Subject: [PATCH 25/46] Formatting --- src/content/docs/en/sdk/migration/adobe-air/index.mdoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/index.mdoc b/src/content/docs/en/sdk/migration/adobe-air/index.mdoc index a2161480c..cb97a6713 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/index.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/index.mdoc @@ -1,8 +1,8 @@ --- title: Adobe AIR - sidebar-label: Adobe Air - description: Follow these guides to migrate to the latest SDK version - type: category - sidebar-position: 8 +sidebar-label: Adobe Air +description: Follow these guides to migrate to the latest SDK version +type: category +sidebar-position: 8 --- From f7596dd98fae0c47ce18f6bed842973bff557649 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Mon, 18 Nov 2024 10:21:22 +0100 Subject: [PATCH 26/46] Squashed commit of the following: commit fed033c39ffc27c9c978a310248da8bb6de31402 Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Fri Nov 15 22:39:26 2024 +0000 Update dependency react-instantsearch to ^7.13.8 (#1205) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> commit 28219038855e301f36edc66eb41d268f57d3068a Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Fri Nov 15 22:34:02 2024 +0000 Update dependency @types/node to ^20.17.6 (#1204) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> commit a729ada3a3befd01a0b485f2831833ad5d89b5a7 Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Fri Nov 15 19:44:27 2024 +0000 Update dependency tailwindcss to ^3.4.15 (#1203) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> commit 6d1d5e55912307e4aea6d996ce8d262b92ebe48a Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Fri Nov 15 19:39:14 2024 +0000 Update dependency astro to ^4.16.13 (#1202) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 573 +++++++++++++++++++++++++++++++++++----------- package.json | 8 +- 2 files changed, 440 insertions(+), 141 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8831d622f..a5051afa9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@nanostores/persistent": "^0.10.2", "@nanostores/react": "^0.8.0", "@octokit/core": "^6.1.2", - "astro": "^4.16.10", + "astro": "^4.16.13", "astro-auto-import": "^0.4.4", "astro-expressive-code": "^0.35.6", "classnames": "^2.5.1", @@ -28,7 +28,7 @@ "nanostores": "^0.11.3", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-instantsearch": "^7.12.4", + "react-instantsearch": "^7.13.8", "react-markdown": "^9.0.1", "rehype": "^13.0.2", "rehype-autolink-headings": "^7.1.0", @@ -36,7 +36,7 @@ "rehype-raw": "^7.0.0", "remark-custom-heading-id": "^2.0.0", "remark-definition-list": "^2.0.0", - "tailwindcss": "^3.4.14", + "tailwindcss": "^3.4.15", "typesense-instantsearch-adapter": "^2.8.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0" @@ -46,7 +46,7 @@ "@types/jsdom": "^21.1.7", "@types/lodash-es": "^4.17.12", "@types/mdast": "^4.0.4", - "@types/node": "^20.16.12", + "@types/node": "^20.17.6", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/unist": "^3.0.3", @@ -2167,6 +2167,75 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -2445,6 +2514,16 @@ "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", "license": "MIT" }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@popperjs/core": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.6.0.tgz", @@ -3068,9 +3147,10 @@ } }, "node_modules/@types/google.maps": { - "version": "3.54.10", - "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.54.10.tgz", - "integrity": "sha512-N6gwM01mKhooXaw+IKbUH7wJcIJCn8U60VoaVvom5EiQjmfgevhQ+0+/r17beXW5j8ad2x+WPr0iyOUodCw4/w==" + "version": "3.58.1", + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.58.1.tgz", + "integrity": "sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==", + "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", @@ -3175,9 +3255,9 @@ } }, "node_modules/@types/node": { - "version": "20.16.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.12.tgz", - "integrity": "sha512-LfPFB0zOeCeCNQV3i+67rcoVvoN5n0NVuR2vLG0O5ySQMgchuZlC4lgz546ZOJyDtj5KIgOxy+lacOimfqZAIA==", + "version": "20.17.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz", + "integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==", "license": "MIT", "dependencies": { "undici-types": "~6.19.2" @@ -3587,9 +3667,9 @@ } }, "node_modules/algoliasearch-helper": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.3.tgz", - "integrity": "sha512-2eoEz8mG4KHE+DzfrBTrCmDPxVXv7aZZWPojAJFtARpxxMO6lkos1dJ+XDCXdPvq7q3tpYWRi6xXmVQikejtpA==", + "version": "3.22.5", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.5.tgz", + "integrity": "sha512-lWvhdnc+aKOKx8jyA3bsdEgHzm/sglC4cYdMG4xSQyRiPLJVJtH/IVYZG3Hp6PkTEhQqhyVYkeP9z2IlcHJsWw==", "license": "MIT", "dependencies": { "@algolia/events": "^4.0.1" @@ -3671,6 +3751,21 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -3751,9 +3846,9 @@ } }, "node_modules/astro": { - "version": "4.16.10", - "resolved": "https://registry.npmjs.org/astro/-/astro-4.16.10.tgz", - "integrity": "sha512-a+nB4bZE50NXHLzVXUHtx/lYct2Aa8kbqZnWNrWqkU97RuhBuWJ5H5/LQbKRnBWGvqChKfJBiMWJe53TY9ieYQ==", + "version": "4.16.13", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.16.13.tgz", + "integrity": "sha512-Mtd76+BC0zLWqoXpf9xc731AhdH4MNh5JFHYdLRvSH0Nqn48hA64dPGh/cWsJvh/DZFmC0NTZusM1Qq2gyNaVg==", "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.10.3", @@ -4371,27 +4466,11 @@ "node": ">=12.5.0" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "optional": true - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "optional": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { + "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -4399,11 +4478,21 @@ "node": ">=7.0.0" } }, - "node_modules/color/node_modules/color-name": { + "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "node_modules/colorette": { "version": "2.0.20", @@ -4497,7 +4586,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4805,6 +4893,12 @@ "node": ">=4" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, "node_modules/electron-to-chromium": { "version": "1.5.37", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.37.tgz", @@ -5065,22 +5159,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -5098,26 +5176,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -5596,6 +5654,22 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -6430,32 +6504,32 @@ "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, "node_modules/instantsearch-ui-components": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/instantsearch-ui-components/-/instantsearch-ui-components-0.8.0.tgz", - "integrity": "sha512-EzV7cR5+18sjmR6DMdv8yL9WuS2hUxrkqbByiLmHnJFbB4TZ4Q7oZDAn43bOItWZ2TxMK3GoxNbB/ZhWjsptPg==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/instantsearch-ui-components/-/instantsearch-ui-components-0.9.0.tgz", + "integrity": "sha512-ugQ+XdPx3i3Sxu+woRo6tPE0Fz/kWd4KblTUfZD1TZZBsm/8qFvcbg5dVBDvXX9v7ntoyugXCzC/XCZMzrSkig==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2" } }, "node_modules/instantsearch.js": { - "version": "4.73.4", - "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-4.73.4.tgz", - "integrity": "sha512-QdvExJthRBXpRaX9lzey+2sqUIzlOZEpd8N5wZyLYYs6WjDHIwrNPOzmOv7VHLBBHGqZ6YkXoCoegj5zm9QI8g==", + "version": "4.75.5", + "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-4.75.5.tgz", + "integrity": "sha512-XnplrpnSfFzVtoL7YBKWbf3FPwmjfSFM8BN+nnuRsfzwUwWgb7zQLxh2mRtohUFI9fnA7vAcJlDcmichfYgjmA==", "license": "MIT", "dependencies": { "@algolia/events": "^4.0.1", "@types/dom-speech-recognition": "^0.0.1", - "@types/google.maps": "^3.45.3", + "@types/google.maps": "^3.55.12", "@types/hogan.js": "^3.0.0", "@types/qs": "^6.5.3", - "algoliasearch-helper": "3.22.3", + "algoliasearch-helper": "3.22.5", "hogan.js": "^3.0.2", "htm": "^3.0.0", - "instantsearch-ui-components": "0.8.0", + "instantsearch-ui-components": "0.9.0", "preact": "^10.10.0", "qs": "^6.5.1 < 6.10", - "search-insights": "^2.15.0" + "search-insights": "^2.17.2" }, "peerDependencies": { "algoliasearch": ">= 3.1 < 6" @@ -6760,13 +6834,28 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } }, "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } @@ -8602,6 +8691,15 @@ "node": "*" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mkdirp": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", @@ -9023,6 +9121,12 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -9125,7 +9229,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -9135,6 +9238,28 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -9365,27 +9490,35 @@ } }, "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.11" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": ">=12.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.2.14" } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -9600,15 +9733,15 @@ } }, "node_modules/react-instantsearch": { - "version": "7.12.4", - "resolved": "https://registry.npmjs.org/react-instantsearch/-/react-instantsearch-7.12.4.tgz", - "integrity": "sha512-k/B5v2RKUyFSSusUzAZ7vlyrkEenh6iMdPYiBZ0YMBckYYXVCTcZmTA1sipb8DomT1lOk1QCDLa1QhoLRKNr7Q==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/react-instantsearch/-/react-instantsearch-7.13.8.tgz", + "integrity": "sha512-14t7qAlp5H2dD+ljQLPhMZt40JX7YGKXdAooGZBo8IB+0M7NHAhsn/SVRdxSObb9bx1hg4uaBIZ51Wajgw8Xbg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2", - "instantsearch-ui-components": "0.8.0", - "instantsearch.js": "4.73.4", - "react-instantsearch-core": "7.12.4" + "instantsearch-ui-components": "0.9.0", + "instantsearch.js": "4.75.5", + "react-instantsearch-core": "7.13.8" }, "peerDependencies": { "algoliasearch": ">= 3.1 < 6", @@ -9617,14 +9750,14 @@ } }, "node_modules/react-instantsearch-core": { - "version": "7.12.4", - "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-7.12.4.tgz", - "integrity": "sha512-FJn0hFrC3YaZX+y4XkqleHs2lcVXlWP1oCUsvVgwnP7D21iHQLmC0POwzWnJkHk7XJc92xZKVu/jp4mnsieECw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-7.13.8.tgz", + "integrity": "sha512-1bcHCFJ3Qw9HWFkeM5MNMqzw0BI4LIR61qI1lPAcJREih9NXy3R3inPeOk2T2FKkgAp5PJbjNQ3DOTxErV88jg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2", - "algoliasearch-helper": "3.22.3", - "instantsearch.js": "4.73.4", + "algoliasearch-helper": "3.22.5", + "instantsearch.js": "4.75.5", "use-sync-external-store": "^1.0.0" }, "peerDependencies": { @@ -10414,9 +10547,9 @@ } }, "node_modules/search-insights": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.15.0.tgz", - "integrity": "sha512-ch2sPCUDD4sbPQdknVl9ALSi9H7VyoeVbsxznYz6QV55jJ8CI3EtwpO1i84keN4+hF5IeHWIeGvc08530JkVXQ==", + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.2.tgz", + "integrity": "sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==", "license": "MIT" }, "node_modules/section-matter": { @@ -10505,7 +10638,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -10517,7 +10649,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -10730,6 +10861,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/stringify-entities": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", @@ -10757,6 +10930,28 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -10805,13 +11000,14 @@ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", - "glob": "7.1.6", + "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", @@ -10822,7 +11018,51 @@ "sucrase-node": "bin/sucrase-node" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/suf-log": { @@ -10874,33 +11114,33 @@ "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" }, "node_modules/tailwindcss": { - "version": "3.4.14", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.14.tgz", - "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz", + "integrity": "sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==", "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.0", + "jiti": "^1.21.6", "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -11518,7 +11758,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", @@ -11665,7 +11906,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -11747,6 +11987,65 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", diff --git a/package.json b/package.json index 0b9482659..34eb47e05 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@nanostores/persistent": "^0.10.2", "@nanostores/react": "^0.8.0", "@octokit/core": "^6.1.2", - "astro": "^4.16.10", + "astro": "^4.16.13", "astro-auto-import": "^0.4.4", "astro-expressive-code": "^0.35.6", "classnames": "^2.5.1", @@ -40,7 +40,7 @@ "nanostores": "^0.11.3", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-instantsearch": "^7.12.4", + "react-instantsearch": "^7.13.8", "react-markdown": "^9.0.1", "rehype": "^13.0.2", "rehype-autolink-headings": "^7.1.0", @@ -48,7 +48,7 @@ "rehype-raw": "^7.0.0", "remark-custom-heading-id": "^2.0.0", "remark-definition-list": "^2.0.0", - "tailwindcss": "^3.4.14", + "tailwindcss": "^3.4.15", "typesense-instantsearch-adapter": "^2.8.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0" @@ -58,7 +58,7 @@ "@types/jsdom": "^21.1.7", "@types/lodash-es": "^4.17.12", "@types/mdast": "^4.0.4", - "@types/node": "^20.16.12", + "@types/node": "^20.17.6", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/unist": "^3.0.3", From 9d23f3edc01a226298d009939043cbb6d6c067b9 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Mon, 18 Nov 2024 14:29:40 +0100 Subject: [PATCH 27/46] Add links to feature pages --- .../docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index d017d5a54..b693a3ddf 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -180,7 +180,7 @@ Adjust.switchBackToOnlineMode(); // set the SDK back to online mode The `setSendInBackground` method has been renamed to `enableSendingInBackground`. -To enable the Adobe AIR SDK v5 to send information to Adjust while your app is running in the background, call the `enableSendingInBackground` method on your `adjustConfig` instance. This feature is disabled by default. +To enable the Adobe AIR SDK v5 to send information to Adjust while your app is running in the background, call the `enableSendingInBackground` method on your `adjustConfig` instance. This feature is disabled by default. ```actionscript-3 adjustConfig.enableSendingInBackground(); @@ -222,7 +222,7 @@ adjustConfig.setAttributionCallback(function (attribution:AdjustAttribution):voi ### Event deduplication {% #event-deduplication %} -In Adobe AIR SDK v5, event deduplication is decoupled from the event `transactionId`. To prevent measuring duplicated events, use the `deduplicationId` ID field. +In Adobe AIR SDK v5, event deduplication is decoupled from the event `transactionId`. To prevent measuring duplicated events, use the `deduplicationId` ID field. ```actionscript-3 adjustEvent.setDeduplicationId("deduplicationId"); @@ -252,7 +252,7 @@ To add global callbacks to your sessions, call the `Adjust.addGlobalCallbackPara : The value of your parameter. {% /deflist %} -> TODO: Learn how to set up global callback. +Learn how to [set up global callback](/en/sdk/adobe-air/android/global-parameters#session-callback-parameters). ```actionscript-3 Adjust.addGlobalCallbackParameter("user_id", "855"); @@ -276,7 +276,7 @@ To add global partner to your sessions, call the `Adjust.addGlobalPartnerParamet : The value of your parameter. {% /deflist %} -> TODO: Learn how to set up global partner parameters. +Learn how to [set up global partner parameters](/en/sdk/adobe-air/android/global-parameters#session-partner-parameters). ```actionscript-3 Adjust.addGlobalPartnerParameter("user_id", "855"); @@ -536,4 +536,4 @@ The [SDK signature library](https://help.adjust.com/en/article/sdk-signature) is ### Huawei referrer API -This feature has been removed. If your Adobe AIR app uses the Huawei referrer API, contact your Adjust representative or email [support@adjust.com](mailto:support@adjust.com) before you upgrade. +This feature has been removed. If your Adobe AIR app uses the Huawei referrer API, contact your Adjust representative or email [support@adjust.com](mailto:support@adjust.com) before you upgrade. From 1857fdf8befaaa3ae617bb935e5178e0e40026b1 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Mon, 18 Nov 2024 15:22:47 +0100 Subject: [PATCH 28/46] Feature: Privacy --- .../en/sdk/adobe-air/android/privacy.mdoc | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/content/docs/en/sdk/adobe-air/android/privacy.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/privacy.mdoc b/src/content/docs/en/sdk/adobe-air/android/privacy.mdoc new file mode 100644 index 000000000..d91490807 --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/privacy.mdoc @@ -0,0 +1,57 @@ +--- +title: Set up privacy features +description: Configure features that you can use to handle user privacy in your app. +sidebar-label: Privacy +sidebar-position: 7 +--- + +The Adobe AIR SDK offers features that you can use to manage users' privacy in your app. + +## Send erasure request {% #send-erasure-request %} + +The EU’s General Data Protection Regulation (GDPR) and similar privacy laws worldwide (CCPA, LGPD, etc.) grant users comprehensive rights when it comes to the processing of their personal data. These rights include, among others, the right to erasure (see [Art. 17 GDPR](https://gdpr.eu/article-17-right-to-be-forgotten/))([1](https://help.adjust.com/en/article/gdpr#ref-1)). As a data processor, Adjust is obliged to support you (the data controller) in processing such requests from your app users. + +To send a user’s erasure request to Adjust, call the `gdprForgetMe` method. + +```actionscript-3 +Adjust.gdprForgetMe(); +``` + +Once Adjust is notified, it will permanently delete the user’s historical personal data from all internal systems and database. +Adjust will no longer receive data from this user/device via the SDK.([2](https://help.adjust.com/en/article/gdpr#ref-2)) + +## Disable third party sharing globally {% #disable-sharing-globally %} + +You can use the Adjust SDK to record when a user changes their third-party sharing settings. + +You can configure third-party sharing settings with the `AdjustThirdPartySharing` class. To enable or disable all third-party sharing, use the `trackThirdPartySharing` method. + +1. Create a new `AdjustThirdPartySharing` instance and pass the `false` parameter. +1. Call the `trackThirdPartySharing` method with your `adjustThirdPartySharing` instance as an argument. + +### Reference {% #reference %} + +The `AdjustThirdPartySharing` class requires the following arguments: + +{% deflist %} +`adjustThirdPartySharing`: `AdjustThirdPartySharing` + +: A class that receives users' consent to share their data with third parties. + +`trackThirdPartySharing`: `trackThirdPartySharing` + +: A method that enables or disables all third-party sharing. + +`false`: `Boolean` + +: A parameter that disable the third-party sharing option. +{% /deflist %} + +```actionscript-3 +var adjustThirdPartySharing:AdjustThirdPartySharing = new AdjustThirdPartySharing("false"); +Adjust.trackThirdPartySharing(adjustThirdPartySharing); +``` + +Once Adjust has been notified, it stops sharing users' data with third parties. The Adjust SDK continues to work as expected. + +> What about the rest of the privacy-related features? See https://dev.adjust.com/en/sdk/flutter/features/privacy From acacd1450cc085c3776dbd6ac999bb3ec1823b3b Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Mon, 18 Nov 2024 16:42:41 +0100 Subject: [PATCH 29/46] Feature: External device ID --- .../adobe-air/android/external-device-id.mdoc | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/content/docs/en/sdk/adobe-air/android/external-device-id.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/external-device-id.mdoc b/src/content/docs/en/sdk/adobe-air/android/external-device-id.mdoc new file mode 100644 index 000000000..e9c3c2ccc --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/external-device-id.mdoc @@ -0,0 +1,46 @@ +--- +title: Configure external device ID +description: Use external device IDs to enhance your reporting. +sidebar-position: 4 +--- + +An [external device identifier](https://help.adjust.com/en/article/external-device-identifiers) is a custom value that you can assign to a device or user. This helps you recognize users across sessions and platforms. External device IDs also help you deduplicate installs by user to avoid counting multiple new installs assoiciated with the same user. + +External device IDs can produce different results depending on your setup. If you want to use them, contact your Adjust representative. They will talk you through the best approach for your use case. + +You must set your external device ID in your `adjustConfig` instance before you call `Adjust.externalDeviceId`. You can't change this property after you've initialized the SDK. + +## Reference {% #reference %} + +To set an external device ID, call the `setExternalDeviceId` method of your `adjustConfig` instance with the following argument: + +{% deflist %} +`externalDeviceId`: `String` + +: Your external device identifier. +{% /deflist %} + +```actionscript-3 +public class Example extends Sprite { + public function Example() { + var appToken:String = "{YourAppToken}"; + var environment:String = AdjustEnvironment.SANDBOX; + + var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); + adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); + + adjustConfig.setExternalDeviceId("{Your-External-Device-Id}"); + + Adjust.initSdk(adjustConfig); + } + } + + Adjust.externalDeviceId(); + +``` + +If you want to use the external device ID in your business analytics, you can pass it as a [global callback parameters](/en/sdk/android/global-parameters). + +You can import existing external device IDs into Adjust. This ensures that Adjust servers match future data to your existing device records. Contact your Adjust representative for more information. + +## Tutorial: Set an external device ID {% #tutorial %} From fbad9e84616a5511701a9223fc318b575c2d43a9 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Mon, 18 Nov 2024 16:43:57 +0100 Subject: [PATCH 30/46] Add iOS snippet to deep links --- .../en/sdk/adobe-air/android/deep-links.mdoc | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc b/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc index cd1486bad..202d5a396 100644 --- a/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc @@ -13,9 +13,9 @@ Adobe AIR SDK supports two types of deep links, based on whether the user has al ## Configure your app {% #configure-deep-link-android %} -To enable your Android app to support deep link, you need to configure your Android app. - -Add the following to the activity you want to launch after deep linking. Replace `adjust-example` with your scheme name: +{% tabs %} +{% tab title="Android" sync="android" %} +To enable your Android app to support deep link, add the following `` to the activity you want to launch after deep linking. Replace `adjust-example` with your scheme name: ```xml @@ -33,6 +33,36 @@ Add the following to the activity you want to launch after deep ``` +{% /tab %} + +{% tab title="iOS" sync="ios" %} +To enable your iOS app to support deep link, add the following into the `` section of the app descriptor's `` section. +Replace `adjust-example` with your scheme name: + +```xml + + + CFBundleURLTypes + + + CFBundleURLName + com.your.bundle + CFBundleURLSchemes + + adjust-example + + + + ]]> + + +``` + +> https://dev.adjust.com/en/sdk/ios/features/deep-links +**Important**: By using this approach for deep linking support in iOS, you will support deep link handling for devices running on **iOS 8 and lower**. Starting from **iOS 9**, Apple has introduced universal links for which, at this moment, there's no built in support inside the Adobe AIR platform. To support this, you would need to edit the natively generated iOS project in Xcode (if possible) and add support to handle universal links from there. If you are interested in finding out how to do that on the native side, please consult our [native iOS universal links guide][universal-links-guide]. +{% /tab %} +{% /tabs %} ## Reattribution with direct deep links {% #reattribution-with-deep-links %} From 7ef4bdf7e5143880a356466f337c4d496c0b8dc1 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Mon, 18 Nov 2024 17:01:37 +0100 Subject: [PATCH 31/46] Feature: Push tokens --- .../en/sdk/adobe-air/android/push-tokens.mdoc | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/content/docs/en/sdk/adobe-air/android/push-tokens.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/push-tokens.mdoc b/src/content/docs/en/sdk/adobe-air/android/push-tokens.mdoc new file mode 100644 index 000000000..3b10ac4d2 --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/push-tokens.mdoc @@ -0,0 +1,28 @@ +--- +title: Send push tokens +description: Send push tokens to Adjust to inform audiences and uninstall and reinstall measurement. +sidebar-position: 8 +--- + +Push notifications enable you to deliver personalized content to your users. You can use [deep links](/en/sdk/adobe-air/android/deep-links) to direct users to specific pages in your app, and measure reattributions. + +- The push token is a unique identifier that you can use to sort [Audiences](https://help.adjust.com/en/article/audiences) and client callbacks. +- Push tokens are also required for [uninstall and reinstall measurement](https://help.adjust.com/en/article/uninstalls-reinstalls). + +## Reference {% #reference %} + +The `AdjustConfig` contains a string `pushToken` property that you can use to store your push token. To update this property, call the `setPushToken` method. + +The `setPushToken` method requires the following arguments: + +{% deflist %} +`pushToken`: `String` + +: The device's push token. +{% /deflist %} + +```actionscript +Adjust.setPushToken("PushNotificationsToken"); +``` + +## Tutorial: Send a push token {% #tutorial %} From c5f3f35939359d565e35da1d9191dd208dae972c Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Mon, 18 Nov 2024 17:20:15 +0100 Subject: [PATCH 32/46] Feature: Preinstalled app --- .../sdk/adobe-air/android/preinstalled.mdoc | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc b/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc new file mode 100644 index 000000000..1df9a771c --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc @@ -0,0 +1,41 @@ +--- +title: Send preinstalled app activity +sidebar-label: Configure preinstalled app +description: Configure a campaign to send information from preinstalled apps. +sidebar-position: 3 +--- + +You can use the Adjust SDK to send Adjust activity from apps that came preinstalled on a user's device. This enables you to send information from users who didn't download your app from a campaign. + +You can send data from preinstalled apps to a predefined default link. When a user opens the app for the first time, the install session is associated with the default link token. + +Configuring a default link token enables you to attribute all preinstalls to a predefined Adjust link. Adjust records all information against this token until the attribution source changes. + +## Reference {% #reference %} + +To set your default link token, call the `setDefaultTracker` method of your `AdjustConfig` instance with the following argument: + +{% deflist %} +`token`: `String` + +: Your alphanumeric Adjust link token. +{% /deflist %} + +## Tutorial: Set a default link token {% #tutorial %} + +1. [Create a new campaign link in Campaign Lab](https://help.adjust.com/en/article/links). + +`https://app.adjust.com/{token}` + +2. Copy this token and assign it to the `setDefaultTracker` property of your `adjustConfig` instance. + +```actionscript-3 +var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); +adjustConfig.setDefaultTracker("{abc123}"); + +Adjust.initSdk(adjustConfig); +``` + +3. Build and run your app. If you have logging enabled, you should see a messag ike the following in your app's log output: + +`Default token: 'abc123'` From c201f3be0a5816a5a3c290a3c65ae5a5f6f26c0f Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:03:02 +0100 Subject: [PATCH 33/46] Feature: Global callbacks and partner parameters --- .../adobe-air/android/global-parameters.mdoc | 160 ++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 src/content/docs/en/sdk/adobe-air/android/global-parameters.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/global-parameters.mdoc b/src/content/docs/en/sdk/adobe-air/android/global-parameters.mdoc new file mode 100644 index 000000000..88b94a7f8 --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/global-parameters.mdoc @@ -0,0 +1,160 @@ +--- +title: Set up global callback and partner parameters +description: Send information to your callback URL and to network partners with each session. +sidebar-label: Set up global parameters +sidebar-position: 7 +--- + +The Adjust SDK enables you to send additional information to Adjust to forward to your callback URL and network partners. Global parameters are string key-value pairs that you can use to communicate more information about a device or user. + +> Is this correct? +The Adjust SDK merges session callback parameters with event callback parameters. Event callback parameters take priority over session callback parameters. This means that if you add a parameter key to both an event and a session, the SDK sends the event parameter. + +Learn more about [event callbacks](/en/sdk/adobe-air/android/events). + +## Global callback parameters {% #global-callback-parameters %} + +If you [register a callback URL](https://help.adjust.com/en/article/recommended-placeholders-callbacks) in the Adjust dashboard, Adjust sends a `GET` request to your callback URL when the SDK sends session data. To append parameters to this callback request, set the global parameters in your code. + +{% callout type="tip" %} +Adjust doesn’t store your custom callback parameters. Custom parameters are only appended to your callback URL. + +If you use CSV uploads, make sure to add the parameters to your CSV definition. +{% /callout %} + +### Reference {% #global-callback-parameters-reference %} + +The `Adjust` class methods manage the global callback parameters. You can add and remove individual parameters, or reset all parameters at once. + +### Add a global callback parameter {% #add-global-callback-parameter %} + +To add a global callback parameter, call the `Adjust.addGlobalCallbackParameter` method with the following arguments: + +{% deflist %} +`key`: `String` + +: The parameter key. + +`value`: `String` + +: The parameter value. +{% /deflist %} + +You can add multiple parameters by calling the `Adjust.addGlobalCallbackParameter` method multiple times. + +```actionscript-3 +Adjust.addGlobalCallbackParameter("key", "value"); +Adjust.addGlobalCallbackParameter("user_id", "855"); +``` + +### Remove a global callback parameter {% #remove-global-callback-parameter %} + +You can remove specific global callback parameters. To do that, call the `Adjust.removeGlobalCallbackParameter` method with the following argument: + +{% deflist %} +`key`: `String` + +: The key of the parameter you want to remove. +{% /deflist %} + +```actionscript-3 +Adjust.removeGlobalCallbackParameter("user_id"); +``` + +### Remove all global callback parameters {% #remove-all-global-callback-parameter %} + +To remove all global callback parameters at once, call the `Adjust.removeGlobalCallbackParameters` method. + +This method removes all active global callback parameters, meaning you won't receive any parameters in callbacks from Adjust. + +```actionscript-3 +Adjust.removeGlobalCallbackParameters(); +``` + +## Global partner parameters {% #global-partner-parameters %} + +You can send extra information to your network partners by adding partner parameters. Sharing additional parameters with your external partners enables more granular analysis and facilitates retargeting. + +When the Adjust SDK sends session data, Adjust's servers forward any global partner parameters to the partners you've configured. + +> Is this correct? +Partner parameters don't appear in raw data by default. You can add the `{partner_parameters}` placeholder to receive them as a single string. + +Read [choose data sharing options](https://help.adjust.com/en/article/data-sharing-ad-network) to learn how to configure what data you share with external partners. + +### Reference {% #global-partner-parameters-reference %} + +The `Adjust` class methods manage the global partner parameters. You can add and remove individual parameters, or reset all parameters at once. + +### Add a global partner parameter {% #add-global-partner-parameter %} + +To add a global partner parameter, call the `Adjust.addGlobalPartnerParameter` method with the following arguments: + +{% deflist %} +`key`: `String` + +: The parameter key. + +`value`: `String` + +: The parameter value. +{% /deflist %} + +You can add multiple parameters by calling the `Adjust.addGlobalPartnerParameter` method multiple times. + +```actionscript-3 +Adjust.addGlobalPartnerParameter("key", "value"); +Adjust.addGlobalPartnerParameter("user_id", "855"); +``` + +### Remove a global partner parameter {% #remove-global-partner-parameter %} + +To remove a global partner parameter, call the `Adjust.removeGlobalPartnerParameter` method with the following argument: + +{% deflist %} +`key`: `String` + +: The key of the parameter you want to remove. +{% /deflist %} + +```actionscript-3 +Adjust.removeGlobalPartnerParameter("key"); +``` + +### Remove all global partner parameters {% #remove-all-global-partner-parameter %} + +To remove all global partner parameters at once, call the `Adjust.removeGlobalPartnerParameters` method. + +This method removes all active global partner parameters, meaning no parameters will be sent to network partners. + +```actionscript-3 +Adjust.removeGlobalPartnerParameters(); +``` + +## Tutorial: Add and remove global parameters {% #tutorial %} + +> From the `README`: + +## Callback parameters + +For example, suppose you have registered the URL `http://www.adjust.com/callback` for your event with event token `abc123` and execute the following lines: + +```actionscript-3 +var adjustEvent:AdjustEvent = new AdjustEvent("abc123"); +adjustEvent.addCallbackParameter("key", "value"); +adjustEvent.addCallbackParameter("foo", "bar"); +Adjust.trackEvent(adjustEvent); +``` + +The Adjust SDK measures the event and sends a request to your URL with the callback parameters. For example, if you register the URL https://www.mydomain.com/callback, your callback looks like this: + +`https://www.mydomain.com/callback?key=value&user_id=855` + +## Partner parameters + +```actionscript-3 +var adjustEvent:AdjustEvent = new AdjustEvent("abc123"); +adjustEvent.addPartnerParameter("key", "value"); +adjustEvent.addPartnerParameter("foo", "bar"); +Adjust.trackEvent(adjustEvent); +``` From 2ae1f0c91d093df4e2c900e9582ad892f6690a34 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 19 Nov 2024 10:16:00 +0100 Subject: [PATCH 34/46] Fix formatting error --- .../sdk/adobe-air/android/preinstalled.mdoc | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc b/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc index 1df9a771c..c6ca4930f 100644 --- a/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc @@ -23,19 +23,17 @@ To set your default link token, call the `setDefaultTracker` method of your `Adj ## Tutorial: Set a default link token {% #tutorial %} -1. [Create a new campaign link in Campaign Lab](https://help.adjust.com/en/article/links). +1. [Create a new campaign link in Campaign Lab](https://help.adjust.com/en/article/links). Your link structure should be similar to this: + `https://app.adjust.com/{token}`. -`https://app.adjust.com/{token}` +1. Copy this token and assign it to the `setDefaultTracker` property of your `adjustConfig` instance. -2. Copy this token and assign it to the `setDefaultTracker` property of your `adjustConfig` instance. + ```actionscript-3 + var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); + adjustConfig.setDefaultTracker("{abc123}"); + + Adjust.initSdk(adjustConfig); + ``` -```actionscript-3 -var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); -adjustConfig.setDefaultTracker("{abc123}"); - -Adjust.initSdk(adjustConfig); -``` - -3. Build and run your app. If you have logging enabled, you should see a messag ike the following in your app's log output: - -`Default token: 'abc123'` +1. Build and run your app. If you have logging enabled, you should see a message like the following in your app's log output: + `Default token: 'abc123'` From 65379457f124c33c984cc3cf99ba6fa4a04ab582 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:04:54 +0100 Subject: [PATCH 35/46] Feature: Send event information --- .../docs/en/sdk/adobe-air/android/events.mdoc | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 src/content/docs/en/sdk/adobe-air/android/events.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/events.mdoc b/src/content/docs/en/sdk/adobe-air/android/events.mdoc new file mode 100644 index 000000000..67202bc0e --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/events.mdoc @@ -0,0 +1,123 @@ +--- +title: Send event information +description: Follow this guide to send events from your app to Adjust. +sidebar-position: 5 +--- + +You can configure the SDK to send event information to Adjust's servers when your users take specific actions. Adjust records these events and displays them in your [Datascape reports](https://help.adjust.com/en/article/datascape), [server callbacks](https://help.adjust.com/en/article/server-callbacks), and [cloud storage uploads](https://help.adjust.com/en/article/cloud-storage-uploads). + +To learn how to configure events in Adjust, visit the [Add events guide](https://help.adjust.com/en/article/add-events). + +## Send an event {% #send-event %} + +The Adjust SDK provides an `AdjustEvent` object which you can use to structure and send event information from your app to Adjust’s servers. + +### Reference {% #send-event-reference %} + +To send event information with the Adjust SDK, you need to instantiate an `AdjustEvent` object. This object contains variables that are sent to Adjust when an event occurs in your app. + +1. Create an [event token in the Adjust dashboard](https://help.adjust.com/en/article/add-events#add-event), and copy it. +1. Create a new `AdjustEvent` instance in your button’s click handler method. +1. Pass the following parameters: + +{% deflist %} +`eventToken`: `String` + +: Your Adjust event token. +{% /deflist %} + +```actionscript-3 + import com.adjust.sdk.AdjustEvent; + private static function TrackEventClick(Event:MouseEvent):void { + trace ("Track simple event button tapped!"); + + var adjustEvent:AdjustEvent = new AdjustEvent("abc123"); + + Adjust.trackEvent(adjustEvent); + } +``` + +## Record event revenue {% #record-event-revenue %} + +You can record revenue associated with an event by setting the revenue and currency properties on your event instance. Use this feature to record revenue-generating actions in your app. + +### Reference {% #record-event-revenue-reference %} + +To set these properties, call the `setRevenue` method and pass the following arguments: + +{% deflist %} +`revenue`: `Number` + +: The amount of revenue generated by the event. + +`currency`: `String` + +: The [ISO 4217 code](https://www.iban.com/currency-codes) of the event currency. +{% /deflist %} + +```actionscript-3 + import com.adjust.sdk.AdjustEvent; + + private static function TrackRevenueClick(Event:MouseEvent):void { + trace ("Track revenue event button tapped!"); + + var adjustEvent:AdjustEvent = new AdjustEvent("abc123"); + adjustEvent.setRevenue(0.01, "EUR"); + + Adjust.trackEvent(adjustEvent); + } +``` + +When you set a currency token, Adjust automatically converts the incoming revenue into the reporting revenue of your choice. Read more about [currency conversion](https://help.adjust.com/en/article/currency-conversion) and the list of [supported currencies](https://help.adjust.com/en/article/supported-currencies). + +## Deduplicate revenue events {% #deduplicate-revenue-events %} + +You can pass an optional identifier to avoid recording duplicate events. By default, the SDK stores the last 10 identifiers and skips revenue events with duplicate IDs. + +> IS THIS CORRECT? +If you would like the SDK to store more than 10 identifiers, set the desired number of identifiers by assigning the value to `eventDeduplicationIdsMaxSize` of the `AdjustConfig` instance. + +### Reference {% #deduplicate-revenue-events-reference %} + +To set the identifier, assign your deduplcation ID to the `deduplicationId` property of your event instance. + +The `setDeduplicationId` method requires the following argument: + +{% deflist %} +`id`: `String` + +: The revenue event identifier. +{% /deflist %} + +```actionscript-3 +adjustConfig.eventDeduplicationIdsMaxSize = 20; +Adjust.initSdk(adjustConfig); + +// ... + +var adjustEvent:AdjustEvent = new AdjustEvent("abc123"); +adjustEvent.setDeduplicationId("deduplicationId"); +Adjust.trackEvent(adjustEvent); +``` + +## Callback identifier {% #callback-identifier %} + +You can add a custom string identifier to each event you want to monitor. Access this identifier in your [event callbacks](/en/sdk/adobe-air/andorid/session-event-callbacks#event-callbacks) to keep track of which event was successfully recorded. + +### Reference {% #callback-identifier-reference %} + +To set this identifier, call the `setCallbackId` method on your `AdjustEvent` instance. + +The `setCallbackId` method requires the following argument: + +{% deflist %} +`id`: `String` + +: The custom string identifier. +{% /deflist %} + +```actionscript-3 +var adjustEvent:AdjustEvent = new AdjustEvent("abc123"); +adjustEvent.setCallbackId("Your-Custom-Id"); +Adjust.trackEvent(adjustEvent); +``` From 9219ad62b8beb4850ed92463665f5a898c2497e2 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:05:19 +0100 Subject: [PATCH 36/46] Feature: Session and event callbacks --- .../android/session-event-callbacks.mdoc | 218 ++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc b/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc new file mode 100644 index 000000000..2f4b599f8 --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc @@ -0,0 +1,218 @@ +--- +title: Set up session and event callbacks +description: Follow this guide to configure session and event callbacks from your app to Adjust. +sidebar-position: 5 +--- + +Set up callbacks to trigger functions when the SDK sends information to Adjust. You can set up callbacks for successful and failed sessions and events. + +{% callout type="important" %} +You must [register your callbacks](https://help.adjust.com/en/article/set-up-callbacks) before initializing the SDK. +{% /callout %} + +## Reference {% #reference %} + +The callback function is called after the SDK tries to send a package to the server. Within the callback, you have access to a response data object. These are the session and event response data properties: + +{% deflist %} +`message`: `String` + +: The message from the server or the error logged by the SDK. + +`timestamp`: `String` + +: The timestamp from Adjust’s servers. + +`adid`: `String` + +: A unique device identifier provided by Adjust. + +`jsonResponse`: `String` + +: The JSON string with the response from the server. + +`willRetry`: `Boolean` + +: Indicates whether there will be an attempt to resend a failed package. +{% /deflist %} + +Eevent response data objects also support the following properties: + +{% deflist %} +`eventToken`: `String` + +: The event token. + +`callbackId`: `String` + +: The [custom callback ID](/en/sdk/adobe-air/events#callback-identifier) set on the event object. +{% /deflist %} + +## Session callbacks {% #session-callbacks %} + +You can set up session callbacks to trigger functions when the SDK sends session information. + +Adjust supports success and failure callbacks: + +- Success callbacks trigger when the SDK sends information to Adjust’s servers. +- Failure callbacks trigger when the SDK encounters a problem while sending the information. + +### Session success callbacks {% #session-success %} + +Set up success callbacks to trigger functions when the SDK records a session. + +To register a successful session recording by the SDK, call the `setSessionSuccessCallback` with any of the following properties: + +```actionscript-3 +adjustConfig.setSessionSuccessCallback(function (sessionSuccess:AdjustSessionSuccess):void { + // All session success properties. + trace("Session tracking succeeded"); + trace("Message = " + sessionSuccess.getMessage()); + trace("Timestamp = " + sessionSuccess.getTimestamp()); + trace("Adid = " + sessionSuccess.getAdid()); + trace("Json Response = " + sessionSuccess.getJsonResponse()); +}); +``` + +#### Successfully tracked session snippet: + +This example demonstrates how to register a `sessionSuccessCallback` that outputs a JSON object with the timestamp at which the SDK sent the session data to Adjust, as well as the device `ADID`. + +```actionscript-3 +package { + import com.adjust.sdk.Adjust; + import com.adjust.sdk.AdjustConfig; + import com.adjust.sdk.AdjustEnvironment; + import com.adjust.sdk.AdjustLogLevel; + import com.adjust.sdk.AdjustSessionSuccess; + + public class Example extends Sprite { + public function Example() { + var appToken:String = "{YourAppToken}"; + var environment:String = AdjustEnvironment.SANDBOX; + + var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); + adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); + + adjustConfig.setSessionSuccessCallback(sessionSuccessCallback); + + Adjust.initSdk(adjustConfig); + } + + // ... + + private static function sessionSuccessCallback(sessionSuccess:AdjustSessionSuccess):void { + trace("Session tracking succeeded"); + trace("Message = " + sessionSuccess.getMessage()); + trace("Timestamp = " + sessionSuccess.getTimestamp()); + trace("Adid = " + sessionSuccess.getAdid()); + trace("Json Response = " + sessionSuccess.getJsonResponse()); + } + } +} +``` + +### Session failure callbacks {% #session-failure %} + +Set up failure callbacks to trigger functions when the SDK fails to record a session. + +To register a failed session recording by the SDK, call the `setSessionFailureCallback` with any of the following properties: + +```actionscript-3 +adjustConfig.setSessionFailureCallback(function (sessionFailure:AdjustSessionFailure):void { + // All session failure properties. + trace("Session tracking failed"); + trace("Message = " + sessionFailure.getMessage()); + trace("Timestamp = " + sessionFailure.getTimestamp()); + trace("Adid = " + sessionFailure.getAdid()); + trace("Will Retry = " + sessionFailure.getWillRetry().toString()); + trace("Json Response = " + sessionFailure.getJsonResponse()); +}); +``` + +#### Failed tracked session snippet: + +This example demonstrates how to register a `sessionFailureCallback` that outputs a JSON object with the reason the SDK failed to send the session data, as well as the timestamp at which the SDK sent the session data to Adjust and the device `ADID`. + +```actionscript-3 +package { + import com.adjust.sdk.Adjust; + import com.adjust.sdk.AdjustConfig; + import com.adjust.sdk.AdjustEnvironment; + import com.adjust.sdk.AdjustLogLevel; + import com.adjust.sdk.AdjustSessionFailure; + + public class Example extends Sprite { + public function Example() { + var appToken:String = "{YourAppToken}"; + var environment:String = AdjustEnvironment.SANDBOX; + + var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); + adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); + + adjustConfig.setSessionFailureCallback(sessionFailureCallback); + + Adjust.initSdk(adjustConfig); + } + + // ... + + private static function sessionFailureCallback(sessionFailure:AdjustSessionFailure):void { + trace("Session tracking Failed"); + trace("Message = " + sessionFailure.getMessage()); + trace("Timestamp = " + sessionFailure.getTimestamp()); + trace("Adid = " + sessionFailure.getAdid()); + trace("Will Retry = " + sessionFailure.getWillRetry().toString()); + trace("Json Response = " + sessionFailure.getJsonResponse()); + } + } +} +``` + +## Event callbacks {% #event-callbacks %} + +You can set up event callbacks to trigger functions when the SDK sends event information. + +Adjust supports success and failure callbacks: + +- Success callbacks trigger when the SDK sends information to Adjust’s servers. +- Failure callbacks trigger when the SDK encounters a problem while sending the information. + +> TODO: Add snippets +import com.adjust.sdk.AdjustEventSuccess; +import com.adjust.sdk.AdjustEventFailure; + +### Event success callbacks {% #event-success %} + +To register a successful event recording by the SDK, call the `setEventSuccessCallback` with any of the following properties: + +```actionscript-3 +adjustConfig.setEventSuccessCallback(function (eventSuccess:AdjustEventSuccess):void { + // All event success properties. +trace("Event tracking succeeded"); +trace("Message = " + eventSuccess.getMessage()); +trace("Timestamp = " + eventSuccess.getTimestamp()); +trace("Adid = " + eventSuccess.getAdid()); +trace("Event Token = " + eventSuccess.getEventToken()); +trace("Callback Id = " + eventSuccess.getCallbackId()); +trace("Json Response = " + eventSuccess.getJsonResponse()); +}); +``` + +### Event failure callbacks {% #event-failure %} + +To register a failed event recording by the SDK, call the `setEventFailureCallback` with any of the following properties: + +```actionscript-3 +adjustConfig.setEventFailureCallback(function (eventFailure:AdjustEventFailure):void { + // All event failure properties. + trace("Event tracking failed"); + trace("Message = " + eventFailure.getMessage()); + trace("Timestamp = " + eventFailure.getTimestamp()); + trace("Adid = " + eventFailure.getAdid()); + trace("Event Token = " + eventFailure.getEventToken()); + trace("Callback Id = " + eventFailure.getCallbackId()); + trace("Will Retry = " + eventFailure.getWillRetry().toString()); + trace("Json Response = " + eventFailure.getJsonResponse()); +}); +``` From 754eff1255ecdd66475035e9ba1f03643cbf8b24 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:05:52 +0100 Subject: [PATCH 37/46] Fix link in global callbacks and partner parameters --- .../docs/en/sdk/adobe-air/android/global-parameters.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/adobe-air/android/global-parameters.mdoc b/src/content/docs/en/sdk/adobe-air/android/global-parameters.mdoc index 88b94a7f8..8125023a8 100644 --- a/src/content/docs/en/sdk/adobe-air/android/global-parameters.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/global-parameters.mdoc @@ -14,7 +14,7 @@ Learn more about [event callbacks](/en/sdk/adobe-air/android/events). ## Global callback parameters {% #global-callback-parameters %} -If you [register a callback URL](https://help.adjust.com/en/article/recommended-placeholders-callbacks) in the Adjust dashboard, Adjust sends a `GET` request to your callback URL when the SDK sends session data. To append parameters to this callback request, set the global parameters in your code. +If you [register a callback URL](https://help.adjust.com/en/article/set-up-callbacks) in the Adjust dashboard, Adjust sends a `GET` request to your callback URL when the SDK sends session data. To append parameters to this callback request, set the global parameters in your code. {% callout type="tip" %} Adjust doesn’t store your custom callback parameters. Custom parameters are only appended to your callback URL. From 1b8bcf1a5c40563798c6802181f7e5de6d0a8cef Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:08:06 +0100 Subject: [PATCH 38/46] Fix formatting error --- .../en/sdk/adobe-air/android/session-event-callbacks.mdoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc b/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc index 2f4b599f8..c2ff81b0d 100644 --- a/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc @@ -178,9 +178,9 @@ Adjust supports success and failure callbacks: - Success callbacks trigger when the SDK sends information to Adjust’s servers. - Failure callbacks trigger when the SDK encounters a problem while sending the information. -> TODO: Add snippets -import com.adjust.sdk.AdjustEventSuccess; -import com.adjust.sdk.AdjustEventFailure; +> TODO: Add sample snippets +`import com.adjust.sdk.AdjustEventSuccess;` +`import com.adjust.sdk.AdjustEventFailure;` ### Event success callbacks {% #event-success %} From d3b025b06b432f457b83961866ae2a072ab251a3 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 19 Nov 2024 15:03:09 +0100 Subject: [PATCH 39/46] Add example app and integration pages --- .../docs/en/sdk/adobe-air/android/deep-links.mdoc | 2 +- .../sdk/adobe-air/android/device-information.mdoc | 2 +- .../docs/en/sdk/adobe-air/android/example-app.mdoc | 14 ++++++++++++++ .../docs/en/sdk/adobe-air/android/integration.mdoc | 12 ++++++++++++ .../docs/en/sdk/adobe-air/android/privacy.mdoc | 3 +-- src/content/docs/en/sdk/adobe-air/index.mdoc | 2 +- .../docs/en/sdk/adobe-air/ios/att-wrapper.mdoc | 2 +- .../en/sdk/adobe-air/ios/skadnetwork-handling.mdoc | 2 +- 8 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 src/content/docs/en/sdk/adobe-air/android/example-app.mdoc create mode 100644 src/content/docs/en/sdk/adobe-air/android/integration.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc b/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc index 202d5a396..67eec82ce 100644 --- a/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc @@ -60,7 +60,7 @@ Replace `adjust-example` with your scheme name: ``` > https://dev.adjust.com/en/sdk/ios/features/deep-links -**Important**: By using this approach for deep linking support in iOS, you will support deep link handling for devices running on **iOS 8 and lower**. Starting from **iOS 9**, Apple has introduced universal links for which, at this moment, there's no built in support inside the Adobe AIR platform. To support this, you would need to edit the natively generated iOS project in Xcode (if possible) and add support to handle universal links from there. If you are interested in finding out how to do that on the native side, please consult our [native iOS universal links guide][universal-links-guide]. +**Important**: By using this approach for deep linking support in iOS, you will support deep link handling for devices running on **iOS 8 and lower**. Starting from **iOS 9**, Apple has introduced universal links for which, at this moment, there's no built in support inside the Adobe AIR platform. To support this, you would need to edit the natively generated iOS project in Xcode (if possible) and add support to handle universal links from there. If you are interested in finding out how to do that on the native side, please consult the [native iOS universal links guide][universal-links-guide]. {% /tab %} {% /tabs %} diff --git a/src/content/docs/en/sdk/adobe-air/android/device-information.mdoc b/src/content/docs/en/sdk/adobe-air/android/device-information.mdoc index 72e15cf91..09004089b 100644 --- a/src/content/docs/en/sdk/adobe-air/android/device-information.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/device-information.mdoc @@ -1,7 +1,7 @@ --- title: Get device information description: Use these methods to add details to your callbacks and improve your reporting. -sidebar-position: 6 +sidebar-position: 10 --- The Adobe AIR SDK contains helper methods that return device information. Use these methods to add details to your callbacks and improve your reporting. diff --git a/src/content/docs/en/sdk/adobe-air/android/example-app.mdoc b/src/content/docs/en/sdk/adobe-air/android/example-app.mdoc new file mode 100644 index 000000000..404ecb675 --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/example-app.mdoc @@ -0,0 +1,14 @@ +--- +title: Android Adobe AIR example implementation +description: A full example of an app that uses all the features available in the Adjust Adobe AIR SDK. +sidebar-label: Example app +sidebar-position: 12 +--- + +This page contains a full example implementation of the Adjust Adobe AIR SDK for Android. + +You can access [the full example on GitHub](https://github.com/adjust/adobe_air_sdk/blob/master/example/Main.as). + +https://github.com/adjust/adobe_air_sdk/blob/master/example/Main-app.xml + +> TODO: Add using the Astro component diff --git a/src/content/docs/en/sdk/adobe-air/android/integration.mdoc b/src/content/docs/en/sdk/adobe-air/android/integration.mdoc new file mode 100644 index 000000000..e6d4daeaa --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/android/integration.mdoc @@ -0,0 +1,12 @@ +--- +title: Integration guide +description: Follow this guide to integrate the Adjust Adobe AIR SDK in your Android app. +sidebar-position: 1 +--- + +See https://github.com/adjust/dev-docs/blob/ADAPP-18812-adobe-extension-i-os-v-5-update/src/content/docs/en/sdk/adobe-extension/android/index.mdoc + +## Installation + +[Described here](https://github.com/adjust/adobe_air_sdk?tab=readme-ov-file#add-the-sdk-to-your-project), including adding the SDK extension declaration to the app's descriptor file. +The import is the same as in v4. diff --git a/src/content/docs/en/sdk/adobe-air/android/privacy.mdoc b/src/content/docs/en/sdk/adobe-air/android/privacy.mdoc index d91490807..40208e549 100644 --- a/src/content/docs/en/sdk/adobe-air/android/privacy.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/privacy.mdoc @@ -1,8 +1,7 @@ --- title: Set up privacy features description: Configure features that you can use to handle user privacy in your app. -sidebar-label: Privacy -sidebar-position: 7 +sidebar-position: 9 --- The Adobe AIR SDK offers features that you can use to manage users' privacy in your app. diff --git a/src/content/docs/en/sdk/adobe-air/index.mdoc b/src/content/docs/en/sdk/adobe-air/index.mdoc index bb5efdbc0..3836db1e8 100644 --- a/src/content/docs/en/sdk/adobe-air/index.mdoc +++ b/src/content/docs/en/sdk/adobe-air/index.mdoc @@ -3,7 +3,7 @@ title: Adobe AIR SDK integration guide description: Use the Adobe AIR SDK to access Adjust's features in your apps category-title: Adobe AIR SDK slug: en/sdk/adobe-air -sidebar-position: 9 +sidebar-position: 11 type: category --- diff --git a/src/content/docs/en/sdk/adobe-air/ios/att-wrapper.mdoc b/src/content/docs/en/sdk/adobe-air/ios/att-wrapper.mdoc index ca8819bf9..f8c44fda3 100644 --- a/src/content/docs/en/sdk/adobe-air/ios/att-wrapper.mdoc +++ b/src/content/docs/en/sdk/adobe-air/ios/att-wrapper.mdoc @@ -1,7 +1,7 @@ --- title: Set up App Tracking Transparency description: Configure your iOS app to use Apple's App Tracking Transparency framework. -sidebar-position: 6 +sidebar-position: 2 --- If you want to record an iOS device's ID for Advertisers (IDFA), you must display a prompt to get your user's consent. diff --git a/src/content/docs/en/sdk/adobe-air/ios/skadnetwork-handling.mdoc b/src/content/docs/en/sdk/adobe-air/ios/skadnetwork-handling.mdoc index 0d22d48af..0c7e573ed 100644 --- a/src/content/docs/en/sdk/adobe-air/ios/skadnetwork-handling.mdoc +++ b/src/content/docs/en/sdk/adobe-air/ios/skadnetwork-handling.mdoc @@ -1,7 +1,7 @@ --- title: Manage SKAdNetwork description: Manage how your iOS app communicates with SKAdNetwork. -sidebar-position: 6 +sidebar-position: 3 --- {% callout type="important" %} From bfd35f7cc53692c87f36096898939644af195ba8 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 19 Nov 2024 15:46:02 +0100 Subject: [PATCH 40/46] Fix formatting error --- src/content/docs/en/sdk/adobe-air/android/push-tokens.mdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/sdk/adobe-air/android/push-tokens.mdoc b/src/content/docs/en/sdk/adobe-air/android/push-tokens.mdoc index 3b10ac4d2..ab801b917 100644 --- a/src/content/docs/en/sdk/adobe-air/android/push-tokens.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/push-tokens.mdoc @@ -21,7 +21,7 @@ The `setPushToken` method requires the following arguments: : The device's push token. {% /deflist %} -```actionscript +```actionscript-3 Adjust.setPushToken("PushNotificationsToken"); ``` From 1f9663bd27664bcf6c0b87cdc8583b4ac93186ea Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 19 Nov 2024 16:02:33 +0100 Subject: [PATCH 41/46] Add notes on installation --- src/content/docs/en/sdk/adobe-air/android/integration.mdoc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/content/docs/en/sdk/adobe-air/android/integration.mdoc b/src/content/docs/en/sdk/adobe-air/android/integration.mdoc index e6d4daeaa..e51c5525a 100644 --- a/src/content/docs/en/sdk/adobe-air/android/integration.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/integration.mdoc @@ -10,3 +10,6 @@ See https://github.com/adjust/dev-docs/blob/ADAPP-18812-adobe-extension-i-os-v-5 [Described here](https://github.com/adjust/adobe_air_sdk?tab=readme-ov-file#add-the-sdk-to-your-project), including adding the SDK extension declaration to the app's descriptor file. The import is the same as in v4. + +[This chapter](https://github.com/adjust/adobe_air_sdk?tab=readme-ov-file#google-install-referrer-api) is still valid. The SDK ships with the custom plugin for install referrer as a separate ANE file attached on the release page next to SDK. `com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE` is required when using Google Play install referrer. +Same goes for [Google Play Services](https://github.com/adjust/adobe_air_sdk?tab=readme-ov-file#google-play-services). From 7c0066d7c428bd670b2f3810e4090d72a7748d21 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 19 Nov 2024 17:36:17 +0100 Subject: [PATCH 42/46] Update overview page --- .../en/sdk/adobe-air/android/attribution.mdoc | 2 +- .../docs/en/sdk/adobe-air/android/events.mdoc | 2 +- .../adobe-air/android/external-device-id.mdoc | 2 +- .../docs/en/sdk/adobe-air/android/index.mdoc | 42 ++++++++++++++++++- .../sdk/adobe-air/android/preinstalled.mdoc | 3 +- .../android/session-event-callbacks.mdoc | 2 +- 6 files changed, 46 insertions(+), 7 deletions(-) diff --git a/src/content/docs/en/sdk/adobe-air/android/attribution.mdoc b/src/content/docs/en/sdk/adobe-air/android/attribution.mdoc index f6a091132..6ed9538e9 100644 --- a/src/content/docs/en/sdk/adobe-air/android/attribution.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/attribution.mdoc @@ -1,6 +1,6 @@ --- title: Manage attribution callbacks -description: Set up an attribution callback to respond to attribution changes. +description: Set up a callback function to listen for attribution changes. sidebar-position: 2 --- diff --git a/src/content/docs/en/sdk/adobe-air/android/events.mdoc b/src/content/docs/en/sdk/adobe-air/android/events.mdoc index 67202bc0e..57bb1e0dc 100644 --- a/src/content/docs/en/sdk/adobe-air/android/events.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/events.mdoc @@ -1,6 +1,6 @@ --- title: Send event information -description: Follow this guide to send events from your app to Adjust. +description: Configure the SDK to send event information to Adjust's servers. sidebar-position: 5 --- diff --git a/src/content/docs/en/sdk/adobe-air/android/external-device-id.mdoc b/src/content/docs/en/sdk/adobe-air/android/external-device-id.mdoc index e9c3c2ccc..5fcc6248e 100644 --- a/src/content/docs/en/sdk/adobe-air/android/external-device-id.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/external-device-id.mdoc @@ -1,6 +1,6 @@ --- title: Configure external device ID -description: Use external device IDs to enhance your reporting. +description: Configure an external device ID for reporting. sidebar-position: 4 --- diff --git a/src/content/docs/en/sdk/adobe-air/android/index.mdoc b/src/content/docs/en/sdk/adobe-air/android/index.mdoc index 5834975f5..4906473b3 100644 --- a/src/content/docs/en/sdk/adobe-air/android/index.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/index.mdoc @@ -5,4 +5,44 @@ category-title: Android sidebar-position: 1 --- -Overview page (see https://github.com/adjust/dev-docs/blob/ADAPP-18812-adobe-extension-i-os-v-5-update/src/content/docs/en/sdk/adobe-extension/android/index.mdoc) +The Adobe AIR SDK provides you with a powerful tool to enhance your app's performance analytics. By integrating this SDK in your Android app, you can send essential data—such as install, session, and in-app event information—to Adjust. + +{% callout type="seealso" %} +The full source code is available [on GitHub](https://github.com/adjust/adobe_air_sdk). + +The [example app](/en/sdk/adobe-air/android/example-app) includes an implementation of all features available in the Adjust Adobe AIR SDK. +{% /callout %} + +## Integrate the SDK {% #integrate-the-sdk %} + +Follow the [integration guide](/en/sdk/adobe-air/android/integration) to add the Adobe AIR SDK to your app. This guide covers the following: + +1. [Install dependencies](/en/sdk/adobe-air/android/integration#install-the-sdk) +1. [Configure permissions](/en/sdk/adobe-air/android/integration#configure-permissions) +1. [Integrate the Adjust Adobe AIR SDK](/en/sdk/adobe-air/android/integration#integration-guide) + +## Set up features {% #set-up-features %} + +The Adobe AIR SDK has many features that enable you to record user activity. Follow these guides to configure the SDK: + +- [Set up a callback function to listen for attribution changes](/en/sdk/adobe-air/android/attribution). +- [Configure a default link token for preinstalled apps](/en/sdk/adobe-air/android/preinstalled). +- [Configure an external device ID for reporting](/en/sdk/adobe-air/android/external-device-id). +- [Use helper methods to add details to your callbacks](/en/sdk/adobe-air/android/device-information). +- [Manage users' privacy in your app](/en/sdk/adobe-air/android/privacy). + +Follow these guides to add functionality to your app using the Adjust Extension: + +- [Send event information to Adjust](/en/sdk/adobe-air/android/events). +- [Set up deep links](/en/sdk/adobe-air/android/deep-links). +- [Configure session and event callbacks](/en/sdk/adobe-air/android/session-event-callbacks). +- [Set up global callback and partner parameters](/en/sdk/adobe-air/android/global-parameters). +- [Send push tokens for uninstall measurement](/en/sdk/adobe-air/android/push-tokens). + +## Build your app for production {% #build-your-app-for-production %} + +After you've integrated the Adobe AIR SDK and completed [your testing](/en/sdk/testing), prepare your app for release. Make sure to do the following: + +- [ ] Ask your marketing team to set up all necessary campaigns in Adjust. +- [ ] Set your [logging level](/en/sdk/adobe-air/android/integration#integration-guide) according to your needs. +- [ ] Change [your environment](/en/sdk/adobe-air/android/integration#configure-the-sdk) to `AdjustEnvironment.PRODUCTION` to allow the SDK to send data in your production environment. diff --git a/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc b/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc index c6ca4930f..7182004da 100644 --- a/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc @@ -1,7 +1,6 @@ --- title: Send preinstalled app activity -sidebar-label: Configure preinstalled app -description: Configure a campaign to send information from preinstalled apps. +description: Configure a default link token for preinstalled apps. sidebar-position: 3 --- diff --git a/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc b/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc index c2ff81b0d..666ba091c 100644 --- a/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc @@ -1,6 +1,6 @@ --- title: Set up session and event callbacks -description: Follow this guide to configure session and event callbacks from your app to Adjust. +description: Configure session and event callbacks from your app to Adjust. sidebar-position: 5 --- From f22bbb267a2ce5f60a1b7b617b812672138a1f3b Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Tue, 19 Nov 2024 19:23:47 +0100 Subject: [PATCH 43/46] Update the integration guide --- .../docs/en/sdk/adobe-air/android/index.mdoc | 2 +- .../en/sdk/adobe-air/android/integration.mdoc | 572 +++++++++++++++++- 2 files changed, 567 insertions(+), 7 deletions(-) diff --git a/src/content/docs/en/sdk/adobe-air/android/index.mdoc b/src/content/docs/en/sdk/adobe-air/android/index.mdoc index 4906473b3..ac4b44e17 100644 --- a/src/content/docs/en/sdk/adobe-air/android/index.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/index.mdoc @@ -17,7 +17,7 @@ The [example app](/en/sdk/adobe-air/android/example-app) includes an implementat Follow the [integration guide](/en/sdk/adobe-air/android/integration) to add the Adobe AIR SDK to your app. This guide covers the following: -1. [Install dependencies](/en/sdk/adobe-air/android/integration#install-the-sdk) +1. [Install the SDK](/en/sdk/adobe-air/android/integration#install-the-sdk) 1. [Configure permissions](/en/sdk/adobe-air/android/integration#configure-permissions) 1. [Integrate the Adjust Adobe AIR SDK](/en/sdk/adobe-air/android/integration#integration-guide) diff --git a/src/content/docs/en/sdk/adobe-air/android/integration.mdoc b/src/content/docs/en/sdk/adobe-air/android/integration.mdoc index e51c5525a..0f4579735 100644 --- a/src/content/docs/en/sdk/adobe-air/android/integration.mdoc +++ b/src/content/docs/en/sdk/adobe-air/android/integration.mdoc @@ -4,12 +4,572 @@ description: Follow this guide to integrate the Adjust Adobe AIR SDK in your And sidebar-position: 1 --- -See https://github.com/adjust/dev-docs/blob/ADAPP-18812-adobe-extension-i-os-v-5-update/src/content/docs/en/sdk/adobe-extension/android/index.mdoc +This is a step-by-step guide to help you integrate and configure the Adjust Adobe AIR SDK in your Android app. With this SDK, you can seamlessly integrate Adjust with your app, to capture and send attribution data and in-app event information. -## Installation +Follow this guide to set up and configure the SDK to send installs, sessions, custom in-app events, and other types of data to Adjust. -[Described here](https://github.com/adjust/adobe_air_sdk?tab=readme-ov-file#add-the-sdk-to-your-project), including adding the SDK extension declaration to the app's descriptor file. -The import is the same as in v4. +## Set up your project {% #set-up-your-project %} -[This chapter](https://github.com/adjust/adobe_air_sdk?tab=readme-ov-file#google-install-referrer-api) is still valid. The SDK ships with the custom plugin for install referrer as a separate ANE file attached on the release page next to SDK. `com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE` is required when using Google Play install referrer. -Same goes for [Google Play Services](https://github.com/adjust/adobe_air_sdk?tab=readme-ov-file#google-play-services). +Follow these steps to set up your project to support the Adjust Extension for Adobe Experience SDK. + +### Install the Adjust Extension {% #install-the-sdk %} + +Add the Adjust SDK extension to your app's descriptor file: + +```xml + + + com.adjust.sdk + + +``` + +## Initialize the SDK {% #initialize-the-sdk %} + +To initialize the Adobe AIR SDK v5, add the following code sample to your main `Sprite`: + +```actionscript-3 +package { + import com.adjust.sdk.Adjust; + import com.adjust.sdk.AdjustConfig; + import com.adjust.sdk.AdjustEnvironment; + import com.adjust.sdk.AdjustLogLevel; + + public class Example extends Sprite { + public function Example() { + var appToken:String = "{YourAppToken}"; + var environment:String = AdjustEnvironment.SANDBOX; + + var adjustConfig:AdjustConfig = new AdjustConfig(appToken, environment); + adjustConfig.setLogLevel(AdjustLogLevel.VERBOSE); + + Adjust.initSdk(adjustConfig); + } + } +} + +``` + +### Configure permissions {% #configure-permissions %} + +The Adjust SDK bundles all required permissions by default. You don't need to add any permissions for it to work. + +#### COPPA (Children's Online Privacy Protection Act) compliance + +`com.google.android.gms.permission.AD_ID` is bundled in the Adjust SDK for Android. You can [remove it](/en/sdk/android#add-permissions) with the following snippet: + +{% codeblock title="YOURAPP-app.xml" %} +```xml + + + + + + ]]> + + +``` +{% /codeblock %} + +Check the [Apps for children](/en/sdk/apps-for-children) guide for more information about COPPA compliance. + +### Add Google Play Services {% #add-google-play-services %} + +Apps that target the Google Play Store must use the `gps_adid` ([Google Advertising ID](https://support.google.com/googleplay/android-developer/answer/6048248?hl=en)) to identify devices. To access the `gps_adid`, you need to integrate the Google Play Services. + +1. Add the Google Play Services extension to your app's descriptor file: + + ```xml + + + com.adjust.gps + + + ``` + +1. Add the following lines inside the `` tag body of your app's Android manifest file: + + ```xml + + ``` + +### Set up Google Play Install Referrer API {% #set-up-install-referrer %} + +The install referrer is a unique identifier which you can use to attribute an app install to a source. The Adjust SDK requires this information to perform attribution. + +To support the Google Play Install Referrer API, follow these steps: + +1. Add the ANE extension to your app's XML descriptor file: + + ```xml + + + com.adjust.installref + + + ``` + +1. Add Android permission to allow the install referrer ANE to fetch install referrer data: + + ```xml + + + + + + + + + ]]> + + + ``` + +## Integration guide {% #integration-guide %} + +> TODO: Adapat the tutorial to Adobe AIR + +Once you've completed the project setup steps, you can integrate the Adjust SDK. The following guide shows you how to: + +1. Add the Adjust Adobe AIR app. +1. Set your logging level to **verbose** to retrieve as much detail as possible from the extension. +1. Test the SDK in **sandbox** mode to ensure it sends data to Adjust. +1. Enable your app to open deep links. +1. Register with the Adobe Experience SDK. + +To do this, you need to create two files: + +- `Main.as`: you'll configure and register the Adjust SDK in this file. +- `Main-app.xml`: your app's descriptor file. + +### Import classes {% #import-classes %} + +First, you need to import some classes into your application files. Import the following classes into your `Main.as` file: + +{% deflist %} +`com.adjust.sdk.Adjust;` + +: Used to + +`com.adjust.sdk.AdjustConfig;` + +: Used to + +`com.adjust.sdk.AdjustEvent;` + +: Used to + +`com.adjust.sdk.AdjustEventSuccess;` + +: Used to + +`com.adjust.sdk.AdjustEventFailure;` + +: Used to + +`com.adjust.sdk.AdjustSessionSuccess;` + +: Used to + +`com.adjust.sdk.AdjustSessionFailure;` + +: Used to + +`com.adjust.sdk.AdjustAttribution;` + +: Used to + +`com.adjust.sdk.Environment;` + +: Used to + +`import com.adjust.sdk.LogLevel;` + +: Used to + +`import com.adjust.sdk.UrlStrategy;` + +: Used to +{% /deflist %} + +```actionscript-3 +// Main.as +import com.adjust.sdk.Adjust; +import com.adjust.sdk.AdjustConfig; +import com.adjust.sdk.AdjustEvent; +import com.adjust.sdk.AdjustEventSuccess; +import com.adjust.sdk.AdjustEventFailure; +import com.adjust.sdk.AdjustSessionSuccess; +import com.adjust.sdk.AdjustSessionFailure; +import com.adjust.sdk.AdjustAttribution; +import com.adjust.sdk.Environment; +import com.adjust.sdk.LogLevel; +import com.adjust.sdk.UrlStrategy; +``` + +### Create a global application class {% #create-a-global-application-class %} + +The recommended way to register the Adjust Android Extension for Adobe Experience SDK is to use a global Android [Application class](http://developer.android.com/reference/android/app/Application.html). If you've not yet created an Application, follow these steps: + +1. Create a new class that extends `Application` in your `Main.as` file. + + {% codeblock title="Main.as" %} + ```java + public class MainApp extends Application {} + ``` + {% /codeblock %} + +1. Open your `AndroidManifest.xml` and find the `` element. + +1. Add the name of your new class as an `android:name` attribute. In this example, the new `Application` class is named `MainApp`. + + ```xml + + + ``` + +1. Within your `Application` class, find or add the `onCreate` method. + + {% codeblock title="Main.as" highlight="{range: 2-5}" %} + ```java + public class MainApp extends Application { + @Override + public void onCreate() { + super.onCreate(); + } + } + ``` + {% /codeblock %} + +### Configure the Adjust Extension {% #configure-the-adjust-extension %} + +Once you've created the `Application` class and called `onCreate`, follow these steps to configure the Adjust Android Extension for Adobe Experience SDK: + +1. Inside your `onCreate` function, call `MobileCore.setApplication(this)` to register the application context. + + {% codeblock title="Main.as" highlight="{range: 4}, {range: 11}" %} + ```java + public void onCreate() { + super.onCreate(); + + MobileCore.setApplication(this); + } + ``` + {% /codeblock %} + +1. Set your logging level by calling the `MobileCore.setLogLevel` method with the following argument: + + {% deflist %} + `logLevel`: `String` + + : The level of logging you want to enable. + + - `LoggingMode.VERBOSE`: enable all logging. + - `LoggingMode.DEBUG`: disable verbose logging. + - `LoggingMode.WARNING`: log only errors and warnings. + - `LoggingMode.ERROR`: log only errors. + {% /deflist %} + + {% codeblock title="Main.as" highlight="{range:4-5}" %} + ```java + public void onCreate() { + super.onCreate(); + + MobileCore.setApplication(this); + MobileCore.setLogLevel(LoggingMode.VERBOSE); + } + ``` + {% /codeblock %} + +1. Create a new `try...catch` block to configure the Adjust Extension: + + {% codeblock title="Main.as" highlight="{range: 7-10}" %} + ```java + public void onCreate() { + super.onCreate(); + + MobileCore.setApplication(this); + MobileCore.setLogLevel(LoggingMode.VERBOSE); + + try { + } catch (Exception e) { + Log.e("example", "Exception occurred during configuration: " + e.getMessage()); + } + } + ``` + {% /codeblock %} + +1. Within your `try` block, call `MobileCore.configureWithAppID` and pass your Adobe app ID. + + {% codeblock title="Main.as" highlight="{range: 2}" %} + ```java + try { + MobileCore.configureWithAppID("your_adobe_app_id"); + } catch (Exception e) { + Log.e("example", "Exception occurred during configuration: " + e.getMessage()); + } + ``` + {% /codeblock %} + +1. Within your `try` block, create a new instance of `AdjustAdobeExtensionConfig` with the following argument: + + {% deflist %} + `environment`: `String` + + : The environment in which your device is running. + + - Pass `AdjustAdobeExtensionConfig.ENVIRONMENT_SANDBOX` when testing. + - Pass `AdjustAdobeExtensionConfig.ENVIRONMENT_PRODUCTION` when running the app in production. + {% /deflist %} + + {% codeblock title="Main.as" highlight="{range: 4-5}" %} + ```java + try { + MobileCore.configureWithAppID("your_adobe_app_id"); + + AdjustAdobeExtensionConfig config = + new AdjustAdobeExtensionConfig(AdjustAdobeExtensionConfig.ENVIRONMENT_SANDBOX); + } catch (Exception e) { + Log.e("example", "Exception occurred during configuration: " + e.getMessage()); + } + ``` + {% /codeblock %} + +1. Call `AdjustAdobeExtension.setConfiguration` with your `AdjustAdobeExtensionConfig` instance as an argument. + + {% codeblock title="Main.as" highlight="{range: 6}" %} + ```java + try { + MobileCore.configureWithAppID("your_adobe_app_id"); + + AdjustAdobeExtensionConfig config = + new AdjustAdobeExtensionConfig(AdjustAdobeExtensionConfig.ENVIRONMENT_SANDBOX); + AdjustAdobeExtension.setConfiguration(config); + } catch (Exception e) { + Log.e("example", "Exception occurred during configuration: " + e.getMessage()); + } + ``` + {% /codeblock %} + +### Register the Adjust Extension {% #register-the-adjust-extension %} + +Once you've configured the Adjust Extension, you need to register it with the Adobe Experience SDK. To do this: + +1. Create a new `try...catch` block below your configuration block. + + {% codeblock title="Main.as" highlight="{range: 19-22}" %} + ```java + public class MainApp extends Application { + @Override + public void onCreate() { + super.onCreate(); + + MobileCore.setApplication(this); + MobileCore.setLogLevel(LoggingMode.VERBOSE); + + try { + MobileCore.configureWithAppID("your_adobe_app_id"); + + AdjustAdobeExtensionConfig config = + new AdjustAdobeExtensionConfig(AdjustAdobeExtensionConfig.ENVIRONMENT_SANDBOX); + AdjustAdobeExtension.setConfiguration(config); + } catch (Exception e) { + Log.e("example", "Exception occurred during configuration: " + e.getMessage()); + } + + try { + } catch (Exception e) { + Log.e("example", "Exception occurred while registering Extension: " + e.getMessage()); + } + } + } + ``` + {% /codeblock %} + +1. Within your `try` block, create a new list of the extensions you want to register. The example in this guide imports the `Analytics` and `Identity` extensions in addition to the `AdjustAdobeExtension`. + + {% deflist %} + `extensions`: `List>` + + : Your list of extensions. + {% /deflist %} + + {% codeblock title="Main.as" highlight="{range: 2-5}" %} + ```java + try { + List> extensions = Arrays.asList( + Analytics.EXTENSION, + Identity.EXTENSION, + AdjustAdobeExtension.EXTENSION); + } catch (Exception e) { + Log.e("example", "Exception occurred while registering Extension: " + e.getMessage()); + } + ``` + {% /codeblock %} + +1. Inside your `try` block, call the `MobileCore.registerExtensions` method with your list of extensions and the following callback argument: + + {% deflist %} + `completionCallback`: `AdobeCallback` + + : A callback function that fires when registration completes. + {% /deflist %} + + {% codeblock title="Main.as" highlight="{range: 6-10}" %} + ```java + try { + List> extensions = Arrays.asList( + Analytics.EXTENSION, + Identity.EXTENSION, + AdjustAdobeExtension.EXTENSION); + MobileCore.registerExtensions(extensions, new AdobeCallback() { + @Override + public void call(Object o) { + Log.d("example", "Adjust Adobe Extension SDK initialized"); + } + }); + } catch (Exception e) { + Log.e("example", "Exception occurred while registering Extension: " + e.getMessage()); + } + ``` + {% /codeblock %} + +### Set up your activity file {% #set-up-your-activity-file %} + +Next, you need to set up your `MainActivity.java` file. You'll use this file to set up your Adjust features later. For the purposes of this guide, you're only going to set up the `onCreate` function to handle application startup. + +1. Create a new public class called `MainActivity`. This class should extend the `AppCompatActivity` class. + + {% codeblock title="MainActivity.java" %} + ```java + public class MainActivity extends AppCompatActivity {} + ``` + {% /codeblock %} + +1. Create a new protected override function called `onCreate`. This function receives the `savedInstanceState` and returns `void`. + + {% codeblock title="MainActivity.java" highlight="{range: 2-3}" %} + ```java + public class MainActivity extends AppCompatActivity { + @Override + protected void onCreate(Bundle savedInstanceState) {} + } + ``` + {% /codeblock %} + +1. Within your `onCreate` function, call `super.onCreate` with the `savedInstanceState` to create your activity. + + {% codeblock title="MainActivity.java" highlight="{range: 3}" %} + ```java + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + ``` + {% /codeblock %} + +1. Next, call `setContentView` to map your activity to your app layout. In this example, the layout file is called `activity_main.xml`. + + {% codeblock title="MainActivity.java" highlight="{range: 4}" %} + ```java + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + } + ``` + {% /codeblock %} + +### Set up deep link handling {% #set-up-deep-link-handling %} + +To configure the Adjust Android Extension for Adobe Experience SDK to open deep links, follow these steps: + +1. Create a new `Intent` variable called `intent` inside your `onCreate` function and assign it the output of `getIntent()`. + + {% codeblock title="MainActivity.java" highlight="{range: 6}" %} + ```java + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + Intent intent = getIntent(); + } + ``` + {% /codeblock %} + +1. Create a new `Uri` variable called `data` and assign it the output of `intent.getData()`. + + {% codeblock title="MainActivity.java" highlight="{range: 7}" %} + ```java + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + Intent intent = getIntent(); + Uri data = intent.getData(); + } + ``` + {% /codeblock %} + +1. Construct a new `AdjustDeeplink` instance with your `data` variable. + + {% codeblock title="MainActivity.java" highlight="{range: 8}" %} + ```java + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + Intent intent = getIntent(); + Uri data = intent.getData(); + AdjustDeeplink adjustDeeplink = new AdjustDeeplink(data); + } + ``` + {% /codeblock %} + +1. To open the URL, pass your `AdjustDeeplink` instance and `getApplicationContext()` to the `Adjust.processDeeplink` method. + + {% codeblock title="MainActivity.java" highlight="{range: 9}" %} + ```java + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + Intent intent = getIntent(); + Uri data = intent.getData(); + AdjustDeeplink adjustDeeplink = new AdjustDeeplink(data); + Adjust.processDeeplink(adjustDeeplink, getApplicationContext()); + } + ``` + {% /codeblock %} + + If you use [short branded links](https://help.adjust.com/en/article/short-branded-links), you can alternatively use the `Adjust.processAndResolveDeeplink` method to resolve your shortened link and return it to a callback function. + + {% codeblock title="MainActivity.java" highlight="{range: 9-14}" %} + ```java + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + Intent intent = getIntent(); + Uri data = intent.getData(); + AdjustDeeplink adjustDeeplink = new AdjustDeeplink(data); + Adjust.processAndResolveDeeplink(adjustDeeplink, getApplicationContext(), new OnDeeplinkResolvedListener() { + @Override + public void onDeeplinkResolved(String s) { + Log.d("example", "Unwrapped short link: " + s); + } + }); + } + ``` + {% /codeblock %} + +Once you've completed these steps, build and run your app. In your log viewer, set the filter `tag:Adjust` to show only logs relating to the Adjust SDK. After you launch your app, you should see the message `Install tracked`. From bc8f1d429253929eb6badfee344b374e15fbfcb5 Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 20 Nov 2024 17:12:28 +0100 Subject: [PATCH 44/46] Rearrange file structure (remove iOS-Android) --- .../docs/en/sdk/adobe-air/android/index.mdoc | 48 ----------------- .../adobe-air/{android => }/example-app.mdoc | 2 +- .../{ios => features}/att-wrapper.mdoc | 0 .../{android => features}/attribution.mdoc | 0 .../{android => features}/deep-links.mdoc | 2 +- .../device-information.mdoc | 0 .../{android => features}/events.mdoc | 2 +- .../external-device-id.mdoc | 2 +- .../global-parameters.mdoc | 2 +- .../docs/en/sdk/adobe-air/features/index.mdoc | 8 +++ .../{android => features}/preinstalled.mdoc | 0 .../{android => features}/privacy.mdoc | 0 .../{android => features}/push-tokens.mdoc | 0 .../session-event-callbacks.mdoc | 0 .../skadnetwork-handling.mdoc | 0 src/content/docs/en/sdk/adobe-air/index.mdoc | 51 +++++++++++++++++-- .../adobe-air/{android => }/integration.mdoc | 2 +- .../docs/en/sdk/adobe-air/ios/index.mdoc | 8 --- 18 files changed, 60 insertions(+), 67 deletions(-) delete mode 100644 src/content/docs/en/sdk/adobe-air/android/index.mdoc rename src/content/docs/en/sdk/adobe-air/{android => }/example-app.mdoc (90%) rename src/content/docs/en/sdk/adobe-air/{ios => features}/att-wrapper.mdoc (100%) rename src/content/docs/en/sdk/adobe-air/{android => features}/attribution.mdoc (100%) rename src/content/docs/en/sdk/adobe-air/{android => features}/deep-links.mdoc (96%) rename src/content/docs/en/sdk/adobe-air/{android => features}/device-information.mdoc (100%) rename src/content/docs/en/sdk/adobe-air/{android => features}/events.mdoc (97%) rename src/content/docs/en/sdk/adobe-air/{android => features}/external-device-id.mdoc (98%) rename src/content/docs/en/sdk/adobe-air/{android => features}/global-parameters.mdoc (98%) create mode 100644 src/content/docs/en/sdk/adobe-air/features/index.mdoc rename src/content/docs/en/sdk/adobe-air/{android => features}/preinstalled.mdoc (100%) rename src/content/docs/en/sdk/adobe-air/{android => features}/privacy.mdoc (100%) rename src/content/docs/en/sdk/adobe-air/{android => features}/push-tokens.mdoc (100%) rename src/content/docs/en/sdk/adobe-air/{android => features}/session-event-callbacks.mdoc (100%) rename src/content/docs/en/sdk/adobe-air/{ios => features}/skadnetwork-handling.mdoc (100%) rename src/content/docs/en/sdk/adobe-air/{android => }/integration.mdoc (99%) delete mode 100644 src/content/docs/en/sdk/adobe-air/ios/index.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/index.mdoc b/src/content/docs/en/sdk/adobe-air/android/index.mdoc deleted file mode 100644 index ac4b44e17..000000000 --- a/src/content/docs/en/sdk/adobe-air/android/index.mdoc +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Andorid Adobe AIR integration guide -description: Follow this guide to integrate the Adjust Adobe AIR SDK in your Android apps. -category-title: Android -sidebar-position: 1 ---- - -The Adobe AIR SDK provides you with a powerful tool to enhance your app's performance analytics. By integrating this SDK in your Android app, you can send essential data—such as install, session, and in-app event information—to Adjust. - -{% callout type="seealso" %} -The full source code is available [on GitHub](https://github.com/adjust/adobe_air_sdk). - -The [example app](/en/sdk/adobe-air/android/example-app) includes an implementation of all features available in the Adjust Adobe AIR SDK. -{% /callout %} - -## Integrate the SDK {% #integrate-the-sdk %} - -Follow the [integration guide](/en/sdk/adobe-air/android/integration) to add the Adobe AIR SDK to your app. This guide covers the following: - -1. [Install the SDK](/en/sdk/adobe-air/android/integration#install-the-sdk) -1. [Configure permissions](/en/sdk/adobe-air/android/integration#configure-permissions) -1. [Integrate the Adjust Adobe AIR SDK](/en/sdk/adobe-air/android/integration#integration-guide) - -## Set up features {% #set-up-features %} - -The Adobe AIR SDK has many features that enable you to record user activity. Follow these guides to configure the SDK: - -- [Set up a callback function to listen for attribution changes](/en/sdk/adobe-air/android/attribution). -- [Configure a default link token for preinstalled apps](/en/sdk/adobe-air/android/preinstalled). -- [Configure an external device ID for reporting](/en/sdk/adobe-air/android/external-device-id). -- [Use helper methods to add details to your callbacks](/en/sdk/adobe-air/android/device-information). -- [Manage users' privacy in your app](/en/sdk/adobe-air/android/privacy). - -Follow these guides to add functionality to your app using the Adjust Extension: - -- [Send event information to Adjust](/en/sdk/adobe-air/android/events). -- [Set up deep links](/en/sdk/adobe-air/android/deep-links). -- [Configure session and event callbacks](/en/sdk/adobe-air/android/session-event-callbacks). -- [Set up global callback and partner parameters](/en/sdk/adobe-air/android/global-parameters). -- [Send push tokens for uninstall measurement](/en/sdk/adobe-air/android/push-tokens). - -## Build your app for production {% #build-your-app-for-production %} - -After you've integrated the Adobe AIR SDK and completed [your testing](/en/sdk/testing), prepare your app for release. Make sure to do the following: - -- [ ] Ask your marketing team to set up all necessary campaigns in Adjust. -- [ ] Set your [logging level](/en/sdk/adobe-air/android/integration#integration-guide) according to your needs. -- [ ] Change [your environment](/en/sdk/adobe-air/android/integration#configure-the-sdk) to `AdjustEnvironment.PRODUCTION` to allow the SDK to send data in your production environment. diff --git a/src/content/docs/en/sdk/adobe-air/android/example-app.mdoc b/src/content/docs/en/sdk/adobe-air/example-app.mdoc similarity index 90% rename from src/content/docs/en/sdk/adobe-air/android/example-app.mdoc rename to src/content/docs/en/sdk/adobe-air/example-app.mdoc index 404ecb675..fd46bd247 100644 --- a/src/content/docs/en/sdk/adobe-air/android/example-app.mdoc +++ b/src/content/docs/en/sdk/adobe-air/example-app.mdoc @@ -1,5 +1,5 @@ --- -title: Android Adobe AIR example implementation +title: Adobe AIR example implementation description: A full example of an app that uses all the features available in the Adjust Adobe AIR SDK. sidebar-label: Example app sidebar-position: 12 diff --git a/src/content/docs/en/sdk/adobe-air/ios/att-wrapper.mdoc b/src/content/docs/en/sdk/adobe-air/features/att-wrapper.mdoc similarity index 100% rename from src/content/docs/en/sdk/adobe-air/ios/att-wrapper.mdoc rename to src/content/docs/en/sdk/adobe-air/features/att-wrapper.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/attribution.mdoc b/src/content/docs/en/sdk/adobe-air/features/attribution.mdoc similarity index 100% rename from src/content/docs/en/sdk/adobe-air/android/attribution.mdoc rename to src/content/docs/en/sdk/adobe-air/features/attribution.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc b/src/content/docs/en/sdk/adobe-air/features/deep-links.mdoc similarity index 96% rename from src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc rename to src/content/docs/en/sdk/adobe-air/features/deep-links.mdoc index 67eec82ce..b84027d8c 100644 --- a/src/content/docs/en/sdk/adobe-air/android/deep-links.mdoc +++ b/src/content/docs/en/sdk/adobe-air/features/deep-links.mdoc @@ -162,7 +162,7 @@ adjustConfig.disableDeferredDeeplinkOpening(); ## Tutorial: Create a deferred deep link function {% #tutorial %} -If you followed the [integration guide](/en/sdk/adobe-air/android/integration), you've already configured the Adjust AIR SDK to process and open deep links. If you haven't done this, refer to [set up deep link handling](/en/sdk/adobe-air/android/integration#set-up-deep-link-handling) for instructions. +If you followed the [integration guide](/en/sdk/adobe-air/features/integration), you've already configured the Adjust AIR SDK to process and open deep links. If you haven't done this, refer to [set up deep link handling](/en/sdk/adobe-air/features/integration#set-up-deep-link-handling) for instructions. In this tutorial, you'll learn how to create a callback function that controls deep linking functionality using the `setDeferredDeeplinkCallback` method. The function will open the link depending on the following condition: diff --git a/src/content/docs/en/sdk/adobe-air/android/device-information.mdoc b/src/content/docs/en/sdk/adobe-air/features/device-information.mdoc similarity index 100% rename from src/content/docs/en/sdk/adobe-air/android/device-information.mdoc rename to src/content/docs/en/sdk/adobe-air/features/device-information.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/events.mdoc b/src/content/docs/en/sdk/adobe-air/features/events.mdoc similarity index 97% rename from src/content/docs/en/sdk/adobe-air/android/events.mdoc rename to src/content/docs/en/sdk/adobe-air/features/events.mdoc index 57bb1e0dc..e067c1920 100644 --- a/src/content/docs/en/sdk/adobe-air/android/events.mdoc +++ b/src/content/docs/en/sdk/adobe-air/features/events.mdoc @@ -102,7 +102,7 @@ Adjust.trackEvent(adjustEvent); ## Callback identifier {% #callback-identifier %} -You can add a custom string identifier to each event you want to monitor. Access this identifier in your [event callbacks](/en/sdk/adobe-air/andorid/session-event-callbacks#event-callbacks) to keep track of which event was successfully recorded. +You can add a custom string identifier to each event you want to monitor. Access this identifier in your [event callbacks](/en/sdk/adobe-air/features/session-event-callbacks#event-callbacks) to keep track of which event was successfully recorded. ### Reference {% #callback-identifier-reference %} diff --git a/src/content/docs/en/sdk/adobe-air/android/external-device-id.mdoc b/src/content/docs/en/sdk/adobe-air/features/external-device-id.mdoc similarity index 98% rename from src/content/docs/en/sdk/adobe-air/android/external-device-id.mdoc rename to src/content/docs/en/sdk/adobe-air/features/external-device-id.mdoc index 5fcc6248e..ac20a0540 100644 --- a/src/content/docs/en/sdk/adobe-air/android/external-device-id.mdoc +++ b/src/content/docs/en/sdk/adobe-air/features/external-device-id.mdoc @@ -39,7 +39,7 @@ public class Example extends Sprite { ``` -If you want to use the external device ID in your business analytics, you can pass it as a [global callback parameters](/en/sdk/android/global-parameters). +If you want to use the external device ID in your business analytics, you can pass it as a [global callback parameters](/en/sdk/features/global-parameters). You can import existing external device IDs into Adjust. This ensures that Adjust servers match future data to your existing device records. Contact your Adjust representative for more information. diff --git a/src/content/docs/en/sdk/adobe-air/android/global-parameters.mdoc b/src/content/docs/en/sdk/adobe-air/features/global-parameters.mdoc similarity index 98% rename from src/content/docs/en/sdk/adobe-air/android/global-parameters.mdoc rename to src/content/docs/en/sdk/adobe-air/features/global-parameters.mdoc index 8125023a8..71283b3bf 100644 --- a/src/content/docs/en/sdk/adobe-air/android/global-parameters.mdoc +++ b/src/content/docs/en/sdk/adobe-air/features/global-parameters.mdoc @@ -10,7 +10,7 @@ The Adjust SDK enables you to send additional information to Adjust to forward t > Is this correct? The Adjust SDK merges session callback parameters with event callback parameters. Event callback parameters take priority over session callback parameters. This means that if you add a parameter key to both an event and a session, the SDK sends the event parameter. -Learn more about [event callbacks](/en/sdk/adobe-air/android/events). +Learn more about [event callbacks](/en/sdk/adobe-air/features/events). ## Global callback parameters {% #global-callback-parameters %} diff --git a/src/content/docs/en/sdk/adobe-air/features/index.mdoc b/src/content/docs/en/sdk/adobe-air/features/index.mdoc new file mode 100644 index 000000000..3330e8222 --- /dev/null +++ b/src/content/docs/en/sdk/adobe-air/features/index.mdoc @@ -0,0 +1,8 @@ +--- +title: Adobe AIR SDK integration guide +description: Use the Adobe AIR SDK to access Adjust's features in your apps +category-title: Features +sidebar-position: 11 +type: category +--- + diff --git a/src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc b/src/content/docs/en/sdk/adobe-air/features/preinstalled.mdoc similarity index 100% rename from src/content/docs/en/sdk/adobe-air/android/preinstalled.mdoc rename to src/content/docs/en/sdk/adobe-air/features/preinstalled.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/privacy.mdoc b/src/content/docs/en/sdk/adobe-air/features/privacy.mdoc similarity index 100% rename from src/content/docs/en/sdk/adobe-air/android/privacy.mdoc rename to src/content/docs/en/sdk/adobe-air/features/privacy.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/push-tokens.mdoc b/src/content/docs/en/sdk/adobe-air/features/push-tokens.mdoc similarity index 100% rename from src/content/docs/en/sdk/adobe-air/android/push-tokens.mdoc rename to src/content/docs/en/sdk/adobe-air/features/push-tokens.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc b/src/content/docs/en/sdk/adobe-air/features/session-event-callbacks.mdoc similarity index 100% rename from src/content/docs/en/sdk/adobe-air/android/session-event-callbacks.mdoc rename to src/content/docs/en/sdk/adobe-air/features/session-event-callbacks.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/ios/skadnetwork-handling.mdoc b/src/content/docs/en/sdk/adobe-air/features/skadnetwork-handling.mdoc similarity index 100% rename from src/content/docs/en/sdk/adobe-air/ios/skadnetwork-handling.mdoc rename to src/content/docs/en/sdk/adobe-air/features/skadnetwork-handling.mdoc diff --git a/src/content/docs/en/sdk/adobe-air/index.mdoc b/src/content/docs/en/sdk/adobe-air/index.mdoc index 3836db1e8..cb7ffd7b3 100644 --- a/src/content/docs/en/sdk/adobe-air/index.mdoc +++ b/src/content/docs/en/sdk/adobe-air/index.mdoc @@ -1,9 +1,50 @@ --- -title: Adobe AIR SDK integration guide -description: Use the Adobe AIR SDK to access Adjust's features in your apps +title: Adobe AIR integration guide +description: Follow this guide to integrate the Adjust Adobe AIR SDK in your Android and iOS apps. category-title: Adobe AIR SDK -slug: en/sdk/adobe-air -sidebar-position: 11 -type: category +sidebar-position: 1 --- +The Adobe AIR SDK provides you with a powerful tool to enhance your app's performance analytics. By integrating this SDK in your Android app, you can send essential data—such as install, session, and in-app event information—to Adjust. + +{% callout type="seealso" %} +The full source code is available [on GitHub](https://github.com/adjust/adobe_air_sdk). + +The [example app](/en/sdk/adobe-air/example-app) includes an implementation of all features available in the Adjust Adobe AIR SDK. +{% /callout %} + +## Integrate the SDK {% #integrate-the-sdk %} + +Follow the [integration guide](/en/sdk/adobe-air/integration) to add the Adobe AIR SDK to your app. This guide covers the following: + +1. [Install the SDK](/en/sdk/adobe-air/integration#install-the-sdk) +1. [Configure permissions](/en/sdk/adobe-air/integration#configure-permissions) +1. [Integrate the Adjust Adobe AIR SDK](/en/sdk/adobe-air/integration#integration-guide) + +## Set up features {% #set-up-features %} + +The Adobe AIR SDK has many features that enable you to record user activity. Follow these guides to configure the SDK: + +- [Set up a callback function to listen for attribution changes](/en/sdk/adobe-air/features/attribution). +- [Configure a default link token for preinstalled apps](/en/sdk/adobe-air/features/preinstalled). +- [Configure an external device ID for reporting](/en/sdk/adobe-air/features/external-device-id). +- [Use helper methods to add details to your callbacks](/en/sdk/adobe-air/features/device-information). +- [Manage users' privacy in your app](/en/sdk/adobe-air/features/privacy). +- [Set up App Tracking Transparency](/en/sdk/adobe-air/features/att-wrapper). +- [Manage how your iOS app communicates with SKAdNetwork.](/en/sdk/adobe-air/features/skadnetwork-handling). + +Follow these guides to add functionality to your app: + +- [Send event information to Adjust](/en/sdk/adobe-air/features/events). +- [Set up deep links](/en/sdk/adobe-air/features/deep-links). +- [Configure session and event callbacks](/en/sdk/adobe-air/features/session-event-callbacks). +- [Set up global callback and partner parameters](/en/sdk/adobe-air/features/global-parameters). +- [Send push tokens for uninstall measurement](/en/sdk/adobe-air/features/push-tokens). + +## Build your app for production {% #build-your-app-for-production %} + +After you've integrated the Adobe AIR SDK and completed [your testing](/en/sdk/testing), prepare your app for release. Make sure to do the following: + +- [ ] Ask your marketing team to set up all necessary campaigns in Adjust. +- [ ] Set your [logging level](/en/sdk/adobe-air/integration#integration-guide) according to your needs. +- [ ] Change [your environment](/en/sdk/adobe-air/integration#configure-the-sdk) to `AdjustEnvironment.PRODUCTION` to allow the SDK to send data in your production environment. diff --git a/src/content/docs/en/sdk/adobe-air/android/integration.mdoc b/src/content/docs/en/sdk/adobe-air/integration.mdoc similarity index 99% rename from src/content/docs/en/sdk/adobe-air/android/integration.mdoc rename to src/content/docs/en/sdk/adobe-air/integration.mdoc index 0f4579735..ab3d572c1 100644 --- a/src/content/docs/en/sdk/adobe-air/android/integration.mdoc +++ b/src/content/docs/en/sdk/adobe-air/integration.mdoc @@ -131,7 +131,7 @@ To support the Google Play Install Referrer API, follow these steps: ## Integration guide {% #integration-guide %} -> TODO: Adapat the tutorial to Adobe AIR +> TODO: Adapt the tutorial to Adobe AIR Once you've completed the project setup steps, you can integrate the Adjust SDK. The following guide shows you how to: diff --git a/src/content/docs/en/sdk/adobe-air/ios/index.mdoc b/src/content/docs/en/sdk/adobe-air/ios/index.mdoc deleted file mode 100644 index 9ef2f49ab..000000000 --- a/src/content/docs/en/sdk/adobe-air/ios/index.mdoc +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: iOS Adobe AIR integration guide -description: Follow this guide to integrate the Adjust Adobe AIR SDK in your iOS apps. -category-title: iOS -sidebar-position: 1 ---- - -Overview page (see https://github.com/adjust/dev-docs/blob/ADAPP-18812-adobe-extension-i-os-v-5-update/src/content/docs/en/sdk/adobe-extension/ios/index.mdoc) From 52d0b3ec71b1425cf4d5f562f7fe9c7fe5562dac Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Wed, 20 Nov 2024 17:23:21 +0100 Subject: [PATCH 45/46] Fix links --- src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc index b693a3ddf..88979c56e 100644 --- a/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc +++ b/src/content/docs/en/sdk/migration/adobe-air/v4-to-v5.mdoc @@ -252,7 +252,7 @@ To add global callbacks to your sessions, call the `Adjust.addGlobalCallbackPara : The value of your parameter. {% /deflist %} -Learn how to [set up global callback](/en/sdk/adobe-air/android/global-parameters#session-callback-parameters). +Learn how to [set up global callback](/en/sdk/adobe-air/features/global-parameters#session-callback-parameters). ```actionscript-3 Adjust.addGlobalCallbackParameter("user_id", "855"); @@ -276,7 +276,7 @@ To add global partner to your sessions, call the `Adjust.addGlobalPartnerParamet : The value of your parameter. {% /deflist %} -Learn how to [set up global partner parameters](/en/sdk/adobe-air/android/global-parameters#session-partner-parameters). +Learn how to [set up global partner parameters](/en/sdk/adobe-air/features/global-parameters#session-partner-parameters). ```actionscript-3 Adjust.addGlobalPartnerParameter("user_id", "855"); @@ -394,7 +394,7 @@ private static function onInvoke(event:InvokeEvent):void { } ``` -Learn how to [reattribute users with direct deep links](/en/sdk/adobe-air/android/deep-links#reattribution-with-deep-links). +Learn how to [reattribute users with direct deep links](/en/sdk/adobe-air/features/deep-links#reattribution-with-deep-links). ### Disable opening deferred deep links {% #launch-deferred-deep-links %} @@ -419,7 +419,7 @@ adjustConfig.setDeferredDeeplinkCallback(function (deeplink:String):void { }); ``` -Learn how to [work with deferred deep link callbacks](/en/sdk/adobe-air/android/deep-links#deffered-deep-link-callbacks). +Learn how to [work with deferred deep link callbacks](/en/sdk/adobe-air/features/deep-links#deffered-deep-link-callbacks). ## iOS only APIs {% #ios-only-apis %} From 892a7bda7c48b5e0cbb6db7b85ef0747640cf97f Mon Sep 17 00:00:00 2001 From: Ronny Shani <63248335+ironnysh@users.noreply.github.com> Date: Thu, 21 Nov 2024 10:48:51 +0100 Subject: [PATCH 46/46] Fix links in Adobe AIR --- .../en/sdk/adobe-air/features/att-wrapper.mdoc | 2 +- .../sdk/adobe-air/features/global-parameters.mdoc | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/content/docs/en/sdk/adobe-air/features/att-wrapper.mdoc b/src/content/docs/en/sdk/adobe-air/features/att-wrapper.mdoc index f8c44fda3..7880f8c68 100644 --- a/src/content/docs/en/sdk/adobe-air/features/att-wrapper.mdoc +++ b/src/content/docs/en/sdk/adobe-air/features/att-wrapper.mdoc @@ -24,7 +24,7 @@ The user has granted access to app-related data for device measurement. ## ATT authorization wrapper {% #att-wrapper %} -The Adobe AIR SDK contains a wrapper around [Apple’s `requestTrackingAuthorizationWithCompletionHandler` method](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/requesttrackingauthorization\(completionhandler:\)). You can use this wrapper to customize the ATT prompt. +The Adobe AIR SDK contains a wrapper around [Apple’s `requestTrackingAuthorizationWithCompletionHandler` method](https://developer.apple.com/documentation/AppTrackingTransparency/ATTrackingManager/requestTrackingAuthorization\(completionHandler:\)). You can use this wrapper to customize the ATT prompt. The callback method triggers when your user responds to the consent dialog. This method sends the user’s consent status code to Adjust’s servers. You can define responses to each status code within the callback function. diff --git a/src/content/docs/en/sdk/adobe-air/features/global-parameters.mdoc b/src/content/docs/en/sdk/adobe-air/features/global-parameters.mdoc index 71283b3bf..a834f54bc 100644 --- a/src/content/docs/en/sdk/adobe-air/features/global-parameters.mdoc +++ b/src/content/docs/en/sdk/adobe-air/features/global-parameters.mdoc @@ -133,20 +133,20 @@ Adjust.removeGlobalPartnerParameters(); ## Tutorial: Add and remove global parameters {% #tutorial %} -> From the `README`: +> TODO: Adapt the code from the `README`: ## Callback parameters -For example, suppose you have registered the URL `http://www.adjust.com/callback` for your event with event token `abc123` and execute the following lines: +For example, suppose you have registered the URL `https://www.mydomain.com/callback` for your event with event token `abc123` and execute the following lines: ```actionscript-3 var adjustEvent:AdjustEvent = new AdjustEvent("abc123"); -adjustEvent.addCallbackParameter("key", "value"); -adjustEvent.addCallbackParameter("foo", "bar"); +adjustEvent.addGlobalCallbackParameter("key", "value"); +adjustEvent.addGlobalCallbackParameter("user_id", "855"); Adjust.trackEvent(adjustEvent); ``` -The Adjust SDK measures the event and sends a request to your URL with the callback parameters. For example, if you register the URL https://www.mydomain.com/callback, your callback looks like this: +The Adjust SDK measures the event and sends a request to your URL with the callback parameters. In this example, your callback looks like this: `https://www.mydomain.com/callback?key=value&user_id=855` @@ -154,7 +154,7 @@ The Adjust SDK measures the event and sends a request to your URL with the callb ```actionscript-3 var adjustEvent:AdjustEvent = new AdjustEvent("abc123"); -adjustEvent.addPartnerParameter("key", "value"); -adjustEvent.addPartnerParameter("foo", "bar"); +adjustEvent.addGlobalPartnerParameter("key", "value"); +adjustEvent.addGlobalPartnerParameter("user_id", "855"); Adjust.trackEvent(adjustEvent); ```