0

Background:

  • Our webapp has a feature that sends links by email to users.
  • When clicked inside the email, the link should open our webapp.
  • Our webapp (window A) includes a few actions that create new tabs because the content cannot be rendered inside an iFrame (window B)
  • window A and window B communicate using postMessage.

Problem: On Android devices, using the Gmail app, clicking/tapping links in emails open the resulting page inside a Chrome Custom Tab browser that properly displays Window A.

However, opening window B will position it over window A. While postMessage between the two browsing contexts is working there is no way for the user to return to Window A. Back arrow in the browser will return user to Gmail app.

We'd like to detect this situation and gracefully fallback so the user doesn't find themselves stranded on Window B - as we do for other non-multi-tab browsers like WebViews (Facebook, etc).

Seems that Chrome Custom Tabs uses the exact same user agent as "regular" multi-tab Chrome browser so that's not an option.

Would appreciate if anyone has figured out a way to detect loading through Chrome Custom Tabs

Shai Ben-Tovim
  • 892
  • 8
  • 20

1 Answers1

1

Custom Tabs and Trusted Web Activity are largely the same protocol. The solution described in How can I detect if my website is opened inside a Trusted Web Actvity? should work for Custom Tabs too.

andreban
  • 4,621
  • 1
  • 20
  • 49
  • Thanks for the tip @andreban!. Just FYI - when using Samsung Browser the `refferer == ""` so this method works only between Gmail app and standard Chrome browser – Shai Ben-Tovim Feb 20 '22 at 14:27
  • 1
    Just to be more precise on my last comment: When Samsung Browser is set as default browser, and webapp is opened by Gmail in Samsung Browser Custom Tabs, the `referrer == ""` so this method works only between Gmail app and standard Chrome browser's Custom Tabs. – Shai Ben-Tovim Feb 20 '22 at 14:35
  • by any chance do you have similar solution for `SFSafariViewController `or `WKWebview`? Those webviews also do not support tabs in proper manner. – Shai Ben-Tovim Mar 09 '22 at 15:20