Skip to main content

Deep links

A deep link opens your app from outside it, ideally right where the person needs to be: a link in a message, a button on your website or a QR code on a flyer that opens a product's page. Nowa registers your links with iOS and Android, so the phone knows your app handles them.

Before you start​

Decide which links you need:

  • A custom URL scheme, such as myapp://..., for links you create yourself. It works on iOS and Android.
  • Web links on a domain you control, such as https://example.com/.... In Nowa, these open your app on Android.
  1. Click the gear in the top bar (Settings) or press Ctrl/Cmd + ,. Under Integrations, click Deep Links.
  2. Turn on Enabled.
  3. Under Configuration, fill in URL Scheme, Host or both.
  4. Press Enter or click the send icon (Submit) after each one. A check mark confirms the save.

Type the values without the ://, in lowercase letters (Android treats capitals as different letters):

  • URL Scheme: only the scheme, such as myapp.
  • Host: only the domain, such as example.com, not https://example.com. Add a path after it to match only links that start with it, such as example.com/app.

From now on, your app handles these links itself, so the next step is the logic that opens the right screen (see Handle the link in your app). The settings take effect in a built app. To try a link, run the app on a device or emulator with the desktop app. See Run on a device or emulator.

What each field sets up​

FieldOpens your app fromWorks on
URL SchemeLinks like myapp://open.my.app/products/12iOS and Android
HostLinks like https://example.com/products/12Android only
Save Host too, so Android gets your scheme

Currently, saving URL Scheme updates only your iOS app right away. Android gets your scheme the next time Nowa updates its Android settings, for example when you save Host. To add a scheme without a host, save any Host, then clear it again. Before you rely on it, open a link on an Android device or emulator.

Things to know:

  • Write your links with open.my.app. On Android, Nowa registers your scheme together with the host open.my.app, so a link looks like myapp://open.my.app/products/12. The same link works on iOS, which only looks at the scheme.
  • Web links open your app on Android only. On iPhone, web links need Apple's Universal Links, which Nowa doesn't set up. Apple's guide explains them: Supporting universal links in your app.
  • For web links, Android checks that the domain is yours. Your website must publish a small verification file, https://example.com/.well-known/assetlinks.json for the domain example.com. Android's App Links guide shows what goes in it.

Use deep links with Google Sign-In​

Google sign-in adds its own link entry to your iPhone app: once you save the iOS Client ID on the Google Sign-In page, or when Firebase handles Google sign-in for you. Together with a URL Scheme, Nowa currently writes two separate entries where iOS expects one, so iOS may ignore one of them: either your links or Google sign-in may not work on iPhone.

You can ask Nowa AI in Agent mode to combine them, for example: "In ios/Runner/Info.plist, merge the two CFBundleURLTypes entries into one, so both my deep link scheme and Google Sign-In keep working." Nowa can't check the result for you, so afterwards try both a link and Google sign-in on an iPhone or the iOS simulator. If something goes wrong, Restore Checkpoint in the chat undoes Nowa AI's changes.

Nowa can undo the merge later. It rebuilds your iPhone app's settings file from your project settings each time you change something that goes into it, such as the URL Scheme, the iOS Client ID, the AdMob iOS App ID, an iOS permission or the App Name (see the warning in Set permissions). That brings the two entries back, so after such a change, merge them again and test once more.

Nowa registers your links, but it doesn't add the logic that opens the right screen when a link arrives. Nowa AI can add that part for you.

New projects use GoRouter, where each screen has a route Path (Route Settings in Details), such as /products, that a link can point to. See Navigate between screens. An older project that uses Navigator shows Enable GoRouter in the Router panel, which lists deep linking as built in for GoRouter and "Not supported out of the box" for Navigator. See Switch an older project to GoRouter.

Or ask Nowa AI

In Agent mode, try: "Handle incoming deep links (the app_links package is already added) and open the screen whose route path matches the link." Then open a link on a device to check that the right screen appears.

Turn Enabled off. Nowa removes the link settings from your iOS and Android app. Working in the code? See What Nowa adds to your code.

Next steps​