Files
react-native-notifications/docs/notifications-events.html
yogevbd 06cab506f0 Deploy website
Deploy website version based on 0b7175f855
2020-01-15 18:02:08 +02:00

101 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Handling Notification Events · React native notifications</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="When a push notification is received by the device, the application can be in one of the following states:"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Handling Notification Events · React native notifications"/><meta property="og:type" content="website"/><meta property="og:url" content="https://wix.github.io/react-native-notifications/"/><meta property="og:description" content="When a push notification is received by the device, the application can be in one of the following states:"/><meta property="og:image" content="https://wix.github.io/react-native-notifications/img/undraw_online.svg"/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://wix.github.io/react-native-notifications/img/undraw_tweetstorm.svg"/><link rel="shortcut icon" href="/react-native-notifications/undefined"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script src="/react-native-notifications/js/scrollSpy.js"></script><link rel="stylesheet" href="/react-native-notifications/css/main.css"/><script src="/react-native-notifications/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/react-native-notifications/"><h2 class="headerTitle">React native notifications</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class="siteNavGroupActive"><a href="/react-native-notifications/docs/installation-ios" target="_self">Docs</a></li><li class=""><a href="/react-native-notifications/docs/general-api" target="_self">API</a></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line1"></div><div class="line2"></div><div class="line3"></div></div></div><h2><i></i><span>Guides</span></h2><div class="tocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle">Guides</h3><ul class=""><li class="navListItem"><a class="navItem" href="/react-native-notifications/docs/getting-started">Getting Started</a></li><li class="navListItem"><a class="navItem" href="/react-native-notifications/docs/subscription">Subscription</a></li><li class="navListItem navListItemActive"><a class="navItem" href="/react-native-notifications/docs/notifications-events">Events</a></li><li class="navListItem"><a class="navItem" href="/react-native-notifications/docs/localNotifications">Local Notifications</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Installation</h3><ul class=""><li class="navListItem"><a class="navItem" href="/react-native-notifications/docs/installation-ios">iOS Installation</a></li><li class="navListItem"><a class="navItem" href="/react-native-notifications/docs/installation-android">Android Installation</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Advanced</h3><ul class=""><li class="navListItem"><a class="navItem" href="/react-native-notifications/docs/advanced-ios">iOS</a></li></ul></div></div></section></div><script>
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
var links = coll[i].nextElementSibling.getElementsByTagName('*');
if (checkActiveCategory){
for (var j = 0; j < links.length; j++) {
if (links[j].classList.contains('navListItemActive')){
coll[i].nextElementSibling.classList.toggle('hide');
coll[i].childNodes[1].classList.toggle('rotate');
checkActiveCategory = false;
break;
}
}
}
coll[i].addEventListener('click', function() {
var arrow = this.childNodes[1];
arrow.classList.toggle('rotate');
var content = this.nextElementSibling;
content.classList.toggle('hide');
});
}
document.addEventListener('DOMContentLoaded', function() {
createToggler('#navToggler', '#docsNav', 'docsSliderActive');
createToggler('#tocToggler', 'body', 'tocActive');
var headings = document.querySelector('.toc-headings');
headings && headings.addEventListener('click', function(event) {
var el = event.target;
while(el !== headings){
if (el.tagName === 'A') {
document.body.classList.remove('tocActive');
break;
} else{
el = el.parentNode;
}
}
}, false);
function createToggler(togglerSelector, targetSelector, className) {
var toggler = document.querySelector(togglerSelector);
var target = document.querySelector(targetSelector);
if (!toggler) {
return;
}
toggler.onclick = function(event) {
event.preventDefault();
target.classList.toggle(className);
};
}
});
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Handling Notification Events</h1></header><article><div><span><p>When a push notification is received by the device, the application can be in one of the following states:</p>
<ol>
<li><strong>Forground:</strong> When the app is running and is used by the user right now; in this case, a <code>notificationReceived</code> event will be fired, do not forget to invoke <code>completion()</code> callback.</li>
</ol>
<p>Finally, when a notification is <em>opened</em> by the device user (i.e. tapped-on), a <code>notificationOpened</code> event is fired, here as well you need to remember invoking <code>completion()</code> callback.</p>
<p>Example:</p>
<pre><code class="hljs css language-javascript"><span class="hljs-keyword">constructor</span>() {
Notifications.events().registerNotificationReceived(<span class="hljs-function">(<span class="hljs-params">notification: Notification, completion: (response: NotificationCompletion</span>) =&gt;</span> <span class="hljs-keyword">void</span>) =&gt; {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Notification Received - Foreground"</span>, notification.data);
<span class="hljs-comment">// Calling completion on iOS with `alert: true` will present the native iOS inApp notification.</span>
completion({<span class="hljs-attr">alert</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">sound</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">badge</span>: <span class="hljs-literal">false</span>});
});
Notifications.events().registerRemoteNotificationOpened(<span class="hljs-function">(<span class="hljs-params">notification: Notification, completion: (</span>) =&gt;</span> <span class="hljs-keyword">void</span>, <span class="hljs-attr">action</span>: NotificationActionResponse) =&gt; {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Notification opened by device user"</span>, notification.data);
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`Notification opened with an action identifier: <span class="hljs-subst">${action.identifier}</span> and response text: <span class="hljs-subst">${action.text}</span>`</span>);
completion();
});
}
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="notification-object"></a><a href="#notification-object" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Notification Object</h3>
<p>When you receive a push notification, you'll get an instance of <a href="notification-object">Notification</a> object, contains the following methods:</p>
<h2><a class="anchor" aria-hidden="true" id="querying-initial-notification"></a><a href="#querying-initial-notification" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Querying initial notification</h2>
<p>React-Native's <a href="https://facebook.github.io/react-native/docs/pushnotificationios.html#getinitialnotification"><code>PushNotificationsIOS.getInitialNotification()</code></a> allows for the async retrieval of the original notification used to open the App on iOS, but it has no equivalent implementation for Android.</p>
<pre><code class="hljs css language-javascript"><span class="hljs-keyword">import</span> {Notifications} <span class="hljs-keyword">from</span> <span class="hljs-string">'react-native-notifications'</span>;
Notifications.getInitialNotification()
.then(<span class="hljs-function">(<span class="hljs-params">notification</span>) =&gt;</span> {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Initial notification was:"</span>, (notification ? notification.data : <span class="hljs-string">'N/A'</span>));
})
.catch(<span class="hljs-function">(<span class="hljs-params">err</span>) =&gt;</span> <span class="hljs-built_in">console</span>.error(<span class="hljs-string">"getInitialNotifiation() failed"</span>, err));
</code></pre>
<blockquote>
<p><strong>Note</strong></p>
<p>Notifications are considered 'initial' under the following terms:</p>
</blockquote>
<blockquote>
<ul>
<li>User tapped on a notification, <em>AND</em> -</li>
<li>App was either not running at all (&quot;dead&quot; state), <em>OR</em> it existed in the background with <strong>no running activities</strong> associated with it.</li>
</ul>
</blockquote>
</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/react-native-notifications/docs/subscription"><span class="arrow-prev"></span><span>Subscription</span></a><a class="docs-next button" href="/react-native-notifications/docs/localNotifications"><span>Local Notifications</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#querying-initial-notification">Querying initial notification</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/react-native-notifications/" class="nav-home"></a><div><h5>Docs</h5><a href="/react-native-notifications/docs/getting-started">Getting Started (or other categories)</a><a href="/react-native-notifications/docs/installation-ios">Guides</a><a href="/react-native-notifications/docs/general-api">API Reference</a></div><div></div><div><h5>More</h5><a href="/react-native-notifications/blog">Blog</a><a href="https://github.com/wix/react-native-notifications">GitHub</a><a class="github-button" href="https://github.com/wix/react-native-notifications" data-icon="octicon-star" data-count-href="/facebook/docusaurus/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">Star</a></div></section><section class="copyright">Copyright © 2020 Wix</section></footer></div></body></html>