AdSupport on Managed Workflows

Hi all:

With my team we are working with a managed workflow and we are using the FirebaseAnalitycs library, we need enable the Adsupport, because we need to use the extra features ( audiences , campaign attribution , and some user properties). The documentation said, in order to enable it we need to add the Adsupport framework using Xcode on a Bare Workflow, with my team we would like to keep using the Manage Workflow
My question is there a way to enable the AdSupport in a Manage Workflow?

Here is the output of my EAS diagnostics:

 EAS CLI 0.45.1 environment info:
    System:
      OS: Linux 5.11 Ubuntu 20.04.3 LTS (Focal Fossa)
      Shell: 5.0.17 - /bin/bash
    Binaries:
      Node: 14.15.1 - /usr/bin/node
      Yarn: 1.22.17 - /usr/bin/yarn
      npm: 6.14.8 - /usr/bin/npm
    Utilities:
      Git: 2.25.1 - /usr/bin/git
    npmPackages:
      expo: ^44.0.0 => 44.0.6 
      expo-dev-client: ~0.8.4 => 0.8.4 
      expo-updates: ~0.11.6 => 0.11.6 
      react: 17.0.1 => 17.0.1 
      react-dom: 17.0.1 => 17.0.1 
      react-native: 0.64.3 => 0.64.3 
      react-native-web: 0.17.1 => 0.17.1 
    npmGlobalPackages:
      eas-cli: 0.45.1
      expo-cli: 5.2.0
    Project workflow: managed

Thanks in advance

Hey @fernando.cardozo, this isn’t currently possible out of the box. You’d need to either migrate to a Bare project or write a config plugin (Config Plugins - Expo Documentation) which would involve the work needed to implement it like in a bare project (plus some additional steps for handling the nuances of a config plugin) but would allow you to continue to use the Managed flow.

@adamjnav is on the expo roadmap to implement AdSupport for managed workflow in the future? If not could you please provide more specific solution with config plugin? I think there are many expo users struggling with this problem.

1 Like

Hey! We wrote our own config plugin that seems to do the trick for adding AdSupport, that can maybe be useful for inspiration:

In our app.config.js:
plugins: [['./src/config/config-plugins/adSupportFramework.js']],

And then in adSupportFramework.js

// eslint-disable-next-line @typescript-eslint/no-var-requires
const { withXcodeProject } = require('@expo/config-plugins')

const withAddedFrameworks = (config) => {
  return withXcodeProject(config, (config) => {
    const xcodeProject = config.modResults
    xcodeProject.addFramework('AdSupport.framework')
    return config
  })
}

module.exports = withAddedFrameworks
1 Like