About Webview SDK
This SDK is meant to be used on pages linked to by messages/items with a "webview" target.
This kind of target is useful to create specific interactions that are not provided by channels.
The Webview SDK provides a generic way to interact with supported channels that can open your page in a webview which allows you to use the same target on different channels without having to write multiple integrations.
Supported channels
See the webview documentation.
Integration
You can load the SDK by adding the following script
tag to your target page.
You'll need to replace <YOUR_DOMAIN>
with your ED domain's name.
You'll need to replace <YOUR_ED_HOST>
with your ED hostname, valid values include engagement.dimelo.com
and digital.ringcentral.com
.
<script>
(function (d, s, url, id) {
d.addEventListener('DOMContentLoaded', function() {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = url;
js.async = true;
fjs.parentNode.insertBefore(js, fjs);
});
})(document, 'scr' + 'ipt', 'https://<YOUR_DOMAIN>.<YOUR_ED_HOST>/webview/sdk.js', 'ed_webview_sdk_loader');
</script>
Once loaded the SDK will attempt to call the rcedWebviewSdkLoaded
function, if defined. It will be called with the SDK instance as a parameter. You can also access the instance through RCED.WebviewSDK.instance
Here's a basic rcedWebviewSdkLoaded
example:
window.rcedWebviewSdkLoaded = function(sdk) {
console.log(sdk === RCED.WebviewSDK.instance) // true
// use sdk in your page
};
Available methods
The SDK instance responds to the following methods:
supportFeature
This method will tell you if a feature is supported by the opening channel.
This method takes a string corresponding to a feature name as a parameter and returns true
if the channel that launched the webview supports it or false
otherwise.
Even if a feature is not supported, an empty method with its name is still available.
Here's a basic example:
window.rcedWebviewSdkLoaded = function(sdk) {
if (sdk.supportFeature('close')) {
// logic that uses the feature
} else {
sdk.close(); // does not crash, here `close` definition is equivalent to `function() {}`
}
}
close
This method will close the webview if the channel that launched the webview supports it or do nothing otherwise.
This method doesn't take any parameter and doesn't return anything.
Here's a basic example:
window.rcedWebviewSdkLoaded = function(sdk) {
sdk.close();
}
Supported features by channels
Since not every channel supports every feature, you'll find support info in the following table:
- Yes: Supported
- Not yet: Supported by channel but not by SDK yet
- N/A: Not supported by channel
RingCX Messaging Web | RingCX Messaging iOS | RingCX Messaging Android | Unsupported channels | |
---|---|---|---|---|
close | Yes | Yes, since v2.4.2 | Yes, since v2.3.1 | N/A |
Automatic title update | Yes | Yes, since v2.4.2 | Yes, since v2.3.1 | N/A |
Integrations specific behavior
Some integrations have extra behavior specific to their related channel. Those are the following.
RingCX Messaging
When opening your webview page in RingCX Messaging, the title element's text will become the chat webview header's text, and when you change your page's title element's textContent
, it will change the chat's webview header text.