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
Advertisement
Answer
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.