In-app features
Alongside its tracking capabilities, the SDK embeds some features aimed at Contentsquare users such as Snapshot Capture and SDK Logs.
Enable in-app features
Section titled Enable in-app featuresTo enable in-app features within your app, you have to first make sure your app is launched in the background. To do so, simply start it and press the Android home button. Then, follow the appropriate method described as follows.
On a device: scan the QR code
Section titled On a device: scan the QR codeIf you have access to the Contentsquare platform, you can open the in-app features modal from the menu and scan the QR code with your phone.
On an emulator: use the ADB command
Section titled On an emulator: use the ADB commandIf you are using an emulator, you can use the ADB command to enable in-app features.
If you have access to the Contentsquare platform, you can open the in-app features modal from the menu and select “Copy this ADB command”.
It will look like this:
If you don’t have access to the Contentsquare platform, you can ask the Contentsquare team to share the link with you.
Debugging and Logging
Section titled Debugging and LoggingContentsquare provides Logging capabilities that allow you to see the raw event data logged by your app in Android Studio or in the Contentsquare platform. This is very useful for validation purposes during the instrumentation phase of development and can help you discover errors and mistakes in your analytics implementation and confirm that all events are being logged correctly.
Viewing logs in Android Studio
Section titled Viewing logs in Android StudioBy default, almost all logs are disabled. There is only one log that is always visible to notify that the SDK has started:
In order to enable all logs, you simply need to activate in-app features. Logging is directly linked to in-app features state: it starts when in-app features is enabled and stops when you disable in-app features.
To view logs:
- Plug your Android Phone to your Computer (or use emulator)
- Start the Android Studio app
- Filter logs on
CSLIB
Viewing logs in the Contentsquare platform
Section titled Viewing logs in the Contentsquare platformTo view logs directly on the platform, you can use Log visualizer. Log visualizer is a helper tool to see SDK logs without logging tools. It requires having platform access for your project and enabling in-app features. See the SDK Log Visualizer Help Center Article for more information.
Snapshot Capture
Section titled Snapshot CaptureIn order to unlock the full data-visualization capabilities of Contentsquare, the SDK provides a way to capture snapshots of your app screens. These snapshots can only be taken by Contentsquare’s users on their device. They are not captured from your end-users device. It means your Personal Data is safe, as long as you use a test user account.
Snapshots are used in the Zoning Analysis module to look at zone-level metrics (Tap rate, Swipe rate…):
Jetpack Compose support
Section titled Jetpack Compose supportTo enable Jetpack Compose support for Zoning, it is necessary to add a new Gradle dependency to your Gradle build file. Make sure to follow the Track screens section.
Invisible overlays covering other elements of a Compose screen
Section titled Invisible overlays covering other elements of a Compose screenAn invisible overlay, e.g. a transparent information overlay that does not display any information most of the time, may lead to issues in the Zoning editor. The screen elements covered by the overlay will display 0 taps. On the Contentsquare SDK side, the gesture recognition assigns the taps to the overlay, i.e. the target view path (TVP) of the tap differs from the TVP of the covered element in the Zoning editor.
To avoid this issue, you may change the layout of the screen so that the overlay is no longer present. Another option is to mark the overlay using the extension function Modifier.excludeFromGestureRecognition()
.
The marked Composable and all of its children will be excluded from the gesture recognition. Thus no gestures will be assigned to this part of the Composable hierarchy anymore.
For example:
Lists with Slowly Rendering Items
Section titled Lists with Slowly Rendering ItemsWhen creating a Long Snapshot of a RecyclerView or a lazy Compose list, the contents of the list are scrolled automatically. If individual elements of the list are missing in the resulting snapshot, i.e. they are invisible, this may be because the elements take too long to render. In such a case, automatic scrolling can be delayed. You must have enabled in-app features:
- Long press on the snapshot button to open the Contentsquare settings.
- Move the slider to set the delay for scrolling. The value is displayed in milliseconds.
- Tap on the arrow back to close the Contentsquare settings.
You can now repeat the snapshot and then check it in the zoning editor.
Known limitations
Section titled Known limitationsSnapshot Capture
Section titled Snapshot Capture- The snapshot capture is only supported from Android API 26 (Android Oreo).
- The combination of CoordinatorLayout, AppBarLayout, and RecyclerView is currently not supported.
- ConcatAdapter is currently not supported.
- Lists with different item layouts are not supported.
- Two or more scrollable containers are not supported. Furthermore, horizontal scrollable containers are not supported.
- Snapshots of screens in edge-to-edge / fullscreen mode may contain visual artifacts in Zoning Analysis module, e.g. from the status and navigation button bar. Although some zoning elements will be visually altered by system bars, creating zones and displaying statistics will still work correctly.
- Some lifecycle events are currently not handled, e.g. app in background, device rotation, fragment change.
- The dark mode is currently not supported.
Additional limitations for Compose Screens
Section titled Additional limitations for Compose Screens- The snapshot for Jetpack Compose is not fully supported yet. This also applies to the combination of Compose and WebViews.
- The visual information may not be consistent for snapshots of Jetpack Compose screens. This applies in particular to transparency and visibility.