iOS / Android:

Videos: iOS Video, Android Video

Link User Experience:

  1. Build quick links that should deep link (vs. open home screen)

  2. Email the link to yourself

    1. Do NOT paste the link in the browser bar

    2. Ensure the email does not “wrap” the link (i.e., tracking or security domain)

  3. Click link from a test device (not a simulator)

    1. Ensure the app version tested uses the same API key as the link (test vs. live)

  4. Click link in these scenarios

SDK Initialization:

  1. Enable debug mode for Branch SDK by calling the setDebug()/enableLogging() before the SDK is initialized. You can find examples in the above videos, and in our iOS or Android documentation.

  2. Launch your application, and view the debug logs in the log console (i.e. Logcat).

  3. Verify that Branch SDK is initialized correctly, by making sure the SDK made a request to  v1/open or v1/install endpoints:

  4. Close the application and verify that the SDK sent a request to the v1/close endpoint.

  5. Repeat steps 2-4 a couple of times to make sure the requests are sent on every action, and not just the first time you Launch the application.

  6. Create a Branch link through either of the available Branch methods, some of which are: Quick Links, API, or any of the SDK methods.

  7. Use the following methods for iOS or Android to test the link, and make sure  that it is all setup. Make sure to verify that link data is passed into the application every time, and your application is able to parse the data correctly via initSession() callback.


SDK Custom Event Logging:

Non-referred event:

  1. Trigger the custom event via SDK (iOS / Android)

  2. Verify that each event is sent to Branch by verifying the Logs (with debug/logging enabled, you should see a v1/event call) and Dashboard Liveview events

    1. If you are a Data Feeds user, you should see this event attributed in a Custom Event export.

  3. If it is a commerce event (iOS / Android) - make sure all the commerce data is also passed to Branch through the same sources.

Referred event

  1. Click on a link

  2. Trigger the custom event via SDK (iOS / Android)

    1. If it is a commerce event (iOS / Android) - make sure all the commerce data is also passed to Branch through the same sources

  3. Verify that each event is sent to Branch

    1. SDK: Verify the Logs (by calling the setDebug()/enableLogging(), you should see a v1/event call) and 

    2. Data Feeds: You should see this event attributed with link ID in the last_attributed_touch_data_tilde_id data (Export API, CSVs, Webhooks)

    3. Dashboard Liveview events: You should see the event triggered and the link in the Session Referring Link URL

Deferred Deep Linking:

  1. Connect a test device to your computer

    1. Uninstall all app versions (test & prod) from device

  2. Click a branch link in device

    1. Let link redirect to the App Store, but do NOT download the app

  3. Build app into the device via xcode|android studio

    1. Ensure app build contains Branch SDK and the same API key as the link

    2. MUST happen within 2 hours of clicking link (Branch matching window defaults to 2 hours)

  4. Open app to initialize Branch SDK, which matches browser<>device pair with most recent click

    1. If device clicked any branch link before, match is guaranteed --- If not, Branch will use fingerprinting to match

    2. If Branch saw browser<>device pair install app in the past, +is_first_session parameter value will be “0”

    3. To force +is_first_session to be “1” during testing, activate debug mode in the SDK

Web:

SDK Initialization:

  1. Ensure you aren’t running any Adblockers (some block the web SDK)

  2. Ensure branch-latest.min.js is loaded in the network calls

  3. Look for app.link request:

    1. Ensure response is 200 OK

    2. Ensure correct Branch key is in the branch_key param

    3. Example: https://app.link/_r?sdk=web2.33.1&_t=446772116780734172&branch_key=key_live_hkDytPACtipny3N9XmnbZlapBDdj4WIL&callback=branch_callback__0

Journeys:

  1. Confirm API key used in the web SDK aligns with API key used in app

    1. Validate Deep Link routing setup

    2. If not using $canonical_url, confirm keys accounted for via banner template, .setBranchViewData, or Metatags

    3. Confirm app recognizes app.link alternate domains

  2. Activate banner and validate filters

    1. Check urls containing the web SDK, where banner should appear

    2. Check urls containing the web SDK, where banner should NOT appear

  3. Load web pages with banners that will deep link (i.e., not home screen), in these scenarios

    1. iOS - Safari (app not installed)

    2. iOS - Safari (app installed - cold start)

    3. iOS - Safari (app installed - warm start)

    4. iOS - Chrome (app not installed)

    5. iOS - Chrome (app installed - cold start)

    6. iOS - Chrome (app installed - warm start)

    7. Android - Chrome (app not installed)

    8. Android - Chrome (app installed - cold start)

    9. Android - Chrome (app installed - warm start)



Best Practices:


  1. Test on actual devices, and utilize Test Mode to imitate fresh installs, otherwise -  Branch will be able to identify that device previously had the application installed, and will not send the install event.

  2. When testing on multiple devices at the same time - it is best to use different links, and not identify with the same ID. Otherwise Branch will consider both devices to be used by the same user. In that case - links clicked on one device will be able to pass data to another device.
    We also recommend testing on different networks, or on one device at a time to prevent flaky behavior.

  3. During testing, you may run into Error messages containing the following text, or its variation: “can't open the page because the address is invalid.” This is an indicator that you used to have your application installed, and used it recently. You then uninstalled the application, and clicked on a Branch link.
    This happens when our forced URI redirect mode tries to forcefully open the application via a URI scheme. When the application is not available on the device - it will result in the given error.
    This scenario will almost never happen to regular users, as our research has shown, however it will greatly improve app opening through deep linking.
    If you would rather be on a safe side - you may change the forcefulness of the mode at the top of your Link Settings page. We recommend keeping it at the intelligent mode setting.


Sources: