Supporting Mobile Devices
TalkJS has been designed from the ground to work well in mobile web browsers and inside mobile apps (using a Webview).
TalkJS is responsive, so if your app is as well, the most of it should just work great out of the box. This page lists some ways you can improve the user experience on mobile.
For more native-like user experiences on mobile devices, we recommend fixing the width and height of the viewport, so that the chat fills the screen perfectly. Additionally, you probably want to disable zoom so that touch interactions become as fast as in native apps (most mobile browsers add a 300ms tap delay unless you disable zoom).
The code below accomplishes both these steps.
html<metaname="viewport"content="width=device-width, initial-scale=1, maximum-scale=1"/>
Note: On iOS 10+, Safari will not actually disable zoom with this setting, but it will still support immediate touch interactions.
If you embed TalkJS into a native app using Webviews, you can use our support for mobile push notifications as described here.
TalkJS has been designed to work well inside Cordova-based apps, and you ought to be able to follow the usual web-based integration steps.
However, you need to add a few little settings to make everything work smoothly:
On some platforms, you need to whitelist the TalkJS URIs to be able to load TalkJS.
- Install cordova-plugin-whitelist, and scroll down to the section about Content Security Policies.
- Add a Content Security Policy which allows access to
- We depend on Google Cloud for the file sharing feature. If you use file sharing, also add
By default, Cordova will open all links inside your app, which includes external links that your users may share amongst each other. If you don't want that, install cordova-plugin-inappbrowser. Don't worry about the plugin's confusing name, it includes a feature to avoid using an in-app browser :-)
TalkJS will automatically detect the presence of this plugin and ensure that external links are opened in the device's system browser.
For React Native, we have made available a SDK that will greatly simplify the work of integrating TalkJS into your application. Please check out our React Native Getting Started guide, or view our TalkJS React Native examples for reference.
On Android, the webview will by default open the default browser to handle any links clicked. This is not the case on iOS. If you try to open a link or attachment from a chatbox in a default WebView, it will open in the same window and you won't be able to go back.
We recommend implementing a workaround using the
Once this callback is triggered you can open the link in an external browser using React Native's
For Flutter, we have made available a TODO SDK that will greatly simplify the work of integrating TalkJS into your application. Please check out our Flutter Getting Started guide, or view our TalkJS Flutter examples for reference.