---
title: In-app features - Flutter (classic)
description: Implement in-app features with the Contentsquare Flutter SDK
lastUpdated: 07 April 2026
source_url:
  html: https://docs.contentsquare.com/en/flutter/in-app-features/
  md: https://docs.contentsquare.com/en/flutter/in-app-features/index.md
---

> Documentation index: https://docs.contentsquare.com/llms.txt
> Use this file to discover all available pages before exploring further.

The latest CSQ SDK is here! Learn how to [upgrade your app](https://docs.contentsquare.com/en/csq-sdk-flutter/experience-analytics/upgrade-from-cs-sdk/).

In addition to its tracking functionalities, the SDKs incorporate certain features tailored for Contentsquare users, including **Screenshot Capture** and **SDK Logs**.

## Implement in-app features (iOS Only)

Note

This implementation phase is required on the iOS side only (on Android, there is nothing to do).

To allow Contentsquare users to enable in-app features:

1. [Add the custom URL scheme in your app Info](#1-add-the-custom-url-scheme-in-your-app-info)
2. [Call the SDK when the app is launched via a deeplink](#2-call-the-sdk-when-the-app-is-launched-via-a-deeplink)

### 1. Add the custom URL scheme in your app Info

For in-app features to function, your app needs to be accessible via a custom URL scheme. This can be achieved by implementing **ONE** of the following approaches:

#### Using Xcode

1. Open your project settings
2. Select the app target
3. Select the `Info` settings
4. Scroll to `URL Types`
5. Set the URL scheme to `cs-$(PRODUCT_BUNDLE_IDENTIFIER)`

#### Or using a Text editor

1. Open the `Info.plist` of your project

2. Add the following snippet:

   **Info.plist**

   ```xml
   <key>CFBundleURLTypes</key>
   <array>
       <dict>
           <key>CFBundleURLSchemes</key>
           <array>
               <string>cs-$(PRODUCT_BUNDLE_IDENTIFIER)</string>
           </array>
       </dict>
   </array>
   ```

### 2. Call the SDK when the app is launched via a deeplink

In `ios/Runner/AppDelegate.swift`, add a new method to the `AppDelegate` class:

**ios/Runner/AppDelegate.swift**

```swift
import ContentsquareModule


override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    Contentsquare.handle(url: url)
    return super.application(app, open: url, options: options)
  }
```

Here is what your `AppDelegate` class should look like after adding the in-app features:

**ios/Runner/AppDelegate.swift**

```swift
import UIKit
import Flutter
import ContentsquareModule


@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }


  // Add this method:
  override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
      Contentsquare.handle(url: url)
      return super.application(app, open: url, options: options)
  }
}
```

## Enable in-app features

In-app features can be enabled in different ways:

### Scan the QR Code

If you have access to the Contentsquare platform, you can open the in-app features modal from the menu and scan the QR code displayed with your phone.

Take a look at the native documentation for further information.

### Alternative methods

We provide alternative methods to enable in-app features especially for iOS Simulator and Android Emulator.

* Android

  Follow the [Native Android SDK documentation for Enable in-app features](https://docs.contentsquare.com/en/android/in-app-features/)

* iOS

  Follow the [Native iOS SDK documentation for Enable in-app features](https://docs.contentsquare.com/en/ios/in-app-features/)

## Debugging and Logging

Contentsquare provides Logging capabilities that allow you to see the raw event data logged by your app. Use this when 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.

## Screenshot capture

To unlock the full data-visualization capabilities of Contentsquare, the SDK provides a way to capture screenshots of your app screens. These screenshots 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.

Warning

For screenshot capture to work, the session has to be tracked (included in tracked users and not opted-out) and a first screenview event has to be sent before.

* Android

  Follow the [Native Android SDK documentation for Screenshot Capture](https://docs.contentsquare.com/en/android/in-app-features/#screenshot-capture)

* iOS

  Follow the [Native iOS SDK documentation for Screenshot Capture](https://docs.contentsquare.com/en/ios/in-app-features/#screenshot-capture)

## Known limitations

* In debug mode, screenshots are not reliable and may differ from those taken in release mode. For accurate and consistent results, use screenshots from release mode.
