{"id":3053,"date":"2020-02-25T09:08:57","date_gmt":"2020-02-25T02:08:57","guid":{"rendered":"https:\/\/briswell-vn.com\/?p=3053"},"modified":"2020-05-22T07:54:07","modified_gmt":"2020-05-22T00:54:07","slug":"android-firebase-for-beginer","status":"publish","type":"post","link":"https:\/\/www.briswell-vn.com\/en\/news\/android-firebase-for-beginer\/","title":{"rendered":"Android Firebase for beginers"},"content":{"rendered":"<p><\/p>\n<h1 style=\"text-align: center;\"><strong>Firebase<\/strong><\/h1>\n<h2>I. <span class=\"s2\">What is Firebase<\/span><\/h2>\n<p><span class=\"s1\">Google Firebase is a Google-backed application development software that enables developers to develop iOS, Android and <a href=\"https:\/\/searchsoftwarequality.techtarget.com\/definition\/Web-application-Web-app\"><span class=\"s2\">Web apps<\/span><\/a>. Firebase provides tools for tracking analytics, reporting and fixing app crashes, creating marketing and product experiment. Firebase has many services and today I&#8217;m going to introduce to in-app messaging, cloud messages and real-time databases.<\/span><\/p>\n<h2>II. <span class=\"s1\">Add Firebase to your app<\/span><\/h2>\n<p><span class=\"s2\">Before you integrate Firebase into your Android app, you need to create a Firebase project to connect to your Android app. log in to Firebase console in this link <a href=\"https:\/\/console.firebase.google.com\/?hl=en\">https:\/\/console.firebase.google.com\/?hl=en<\/a><\/span><br \/>\n<span class=\"s2\"><strong>Step 1<\/strong>: A<\/span><span class=\"s1\">fter you signed-in to Firebase, click on &#8220;<strong>Create a project<\/strong>&#8220;.<\/span><br \/>\n<span class=\"s2\"><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3795 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-9.31.55-AM-1024x566.png\" alt=\"\" width=\"1024\" height=\"566\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075255\/Screen-Shot-2020-02-20-at-9.31.55-AM-1024x566.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075255\/Screen-Shot-2020-02-20-at-9.31.55-AM-300x166.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075255\/Screen-Shot-2020-02-20-at-9.31.55-AM-768x424.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075255\/Screen-Shot-2020-02-20-at-9.31.55-AM.png 1338w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/> <\/span><\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 2<\/strong>: There are steps to take to create a new Firebase project. Click on Android icon. <\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3797 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-9.43.53-AM-1024x565.png\" alt=\"\" width=\"1024\" height=\"565\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075332\/Screen-Shot-2020-02-20-at-9.43.53-AM-1024x565.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075332\/Screen-Shot-2020-02-20-at-9.43.53-AM-300x166.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075332\/Screen-Shot-2020-02-20-at-9.43.53-AM-768x424.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075332\/Screen-Shot-2020-02-20-at-9.43.53-AM.png 1340w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 3<\/strong>: Enter<\/span><span class=\"s1\"> your &#8220;<strong>Android package name<\/strong>&#8221; the same as package name in AndroidManifest<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3798 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-21-at-3.19.26-PM.png\" alt=\"\" width=\"570\" height=\"600\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075551\/Screen-Shot-2020-02-21-at-3.19.26-PM.png 570w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075551\/Screen-Shot-2020-02-21-at-3.19.26-PM-285x300.png 285w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3799 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-9.51.12-AM-1024x121.png\" alt=\"\" width=\"1024\" height=\"121\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075616\/Screen-Shot-2020-02-20-at-9.51.12-AM-1024x121.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075616\/Screen-Shot-2020-02-20-at-9.51.12-AM-300x36.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075616\/Screen-Shot-2020-02-20-at-9.51.12-AM-768x91.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075616\/Screen-Shot-2020-02-20-at-9.51.12-AM.png 1357w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 4<\/strong>:\u00a0\u00a0<\/span><span class=\"s1\">Download &#8220;<strong>google-services.json&#8221;<\/strong> and add to the project.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3800 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-21-at-3.20.06-PM.png\" alt=\"\" width=\"716\" height=\"639\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075822\/Screen-Shot-2020-02-21-at-3.20.06-PM.png 716w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075822\/Screen-Shot-2020-02-21-at-3.20.06-PM-300x268.png 300w\" sizes=\"auto, (max-width: 716px) 100vw, 716px\" \/><br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li class=\"p1\"><span class=\"s1\">Click on Project to switch view, you will see the root directory of the project . Put the &#8220;<strong>google-services.json<\/strong>&#8221; file into\u00a0 &#8220;Project\/~\/app&#8221; folder.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3802 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-9.56.43-AM.png\" alt=\"\" width=\"461\" height=\"339\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075857\/Screen-Shot-2020-02-20-at-9.56.43-AM.png 461w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075857\/Screen-Shot-2020-02-20-at-9.56.43-AM-300x221.png 300w\" sizes=\"auto, (max-width: 461px) 100vw, 461px\" \/><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3804 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-9.58.50-AM.png\" alt=\"\" width=\"448\" height=\"279\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075949\/Screen-Shot-2020-02-20-at-9.58.50-AM.png 448w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07075949\/Screen-Shot-2020-02-20-at-9.58.50-AM-300x187.png 300w\" sizes=\"auto, (max-width: 448px) 100vw, 448px\" \/><br \/>\n<\/span><\/li>\n<\/ul>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 5<\/strong>: Add Firebase SDK.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>1. <\/strong>In<strong> &#8220;<\/strong><\/span><span class=\"s2\"><strong>build.gradle<\/strong>&#8221; (Project)<\/span><span class=\"s1\">:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3805 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-10.06.20-AM-1024x479.png\" alt=\"\" width=\"1024\" height=\"479\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080017\/Screen-Shot-2020-02-20-at-10.06.20-AM-1024x479.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080017\/Screen-Shot-2020-02-20-at-10.06.20-AM-300x140.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080017\/Screen-Shot-2020-02-20-at-10.06.20-AM-768x359.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080017\/Screen-Shot-2020-02-20-at-10.06.20-AM.png 1399w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>2. <\/strong>In<strong> &#8220;<\/strong><\/span><span class=\"s2\"><strong>build.gradle<\/strong>&#8221; (app):<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3806 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-10.11.34-AM-1024x578.png\" alt=\"\" width=\"1024\" height=\"578\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080052\/Screen-Shot-2020-02-20-at-10.11.34-AM-1024x578.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080052\/Screen-Shot-2020-02-20-at-10.11.34-AM-300x169.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080052\/Screen-Shot-2020-02-20-at-10.11.34-AM-768x433.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080052\/Screen-Shot-2020-02-20-at-10.11.34-AM.png 1399w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 6<\/strong>: Run and wait Firebase verify the app, you will see message when success, click on \u201c<strong>Continue to console<\/strong>\u201d.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3807 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-19-at-4.31.20-PM-31.png\" alt=\"\" width=\"822\" height=\"483\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080122\/Screen-Shot-2020-02-19-at-4.31.20-PM-31.png 822w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080122\/Screen-Shot-2020-02-19-at-4.31.20-PM-31-300x176.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080122\/Screen-Shot-2020-02-19-at-4.31.20-PM-31-768x451.png 768w\" sizes=\"auto, (max-width: 822px) 100vw, 822px\" \/><\/p>\n<h2>III.\u00a0<span class=\"s1\">In-App Message<\/span><\/h2>\n<h3>1. I<span class=\"s1\">ntroduction<\/span><\/h3>\n<p class=\"p1\"><span class=\"s1\">Firebase In-App Messaging helps you engage your app&#8217;s active users by sending them targeted, contextual messages that encourage them to use key app features. For example, you could send an in-app message to get users to subscribe, watch a video, complete a level, or buy an item. You can customize messages as cards, banners, modals, or images, and set up triggers so that they appear exactly when they&#8217;d benefit your users most.<\/span><\/p>\n<h3>2. Get start<\/h3>\n<p><strong>Step 1<\/strong>:\u00a0<span class=\"s1\">Add \u201c<strong><span class=\"s2\">implementation <\/span><\/strong><span class=\"s3\"><strong>\u2018com.google.firebase:firebase-inappmessaging-display:19.0.3\u2019<\/strong>\u00a0into &#8220;<strong>build.gradle<\/strong>&#8221; (app)<\/span><\/span><span class=\"s3\">\u00a0and Click &#8220;<strong>Sync Now<\/strong>&#8220;.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3809 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-19-at-4.51.31-PM-33-1024x641.png\" alt=\"\" width=\"1024\" height=\"641\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080223\/Screen-Shot-2020-02-19-at-4.51.31-PM-33-1024x641.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080223\/Screen-Shot-2020-02-19-at-4.51.31-PM-33-300x188.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080223\/Screen-Shot-2020-02-19-at-4.51.31-PM-33-768x481.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080223\/Screen-Shot-2020-02-19-at-4.51.31-PM-33-350x220.png 350w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080223\/Screen-Shot-2020-02-19-at-4.51.31-PM-33.png 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Step 2<\/strong>: G<span class=\"s1\">et Firebase instance ID (this id&#8217;s used to test in-app message on Firebase).<\/span><\/p>\n<pre>private fun createInstanceId() {\r\n    FirebaseInstanceId.getInstance().instanceId.addOnCompleteListener { task -&gt;\r\n        if (!task.isSuccessful) {\r\n            Log.w(TAG, \"getInstanceId failed\", task.exception)\r\n            return@addOnCompleteListener\r\n        }\r\n\r\n        \/\/create new instance id Token\r\n        val msg = task.result?.id\r\n        Log.d(TAG, \"token: $msg\")\r\n    }\r\n}<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3810 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-19-at-5.01.04-PM-35-1024x417.png\" alt=\"\" width=\"1024\" height=\"417\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080253\/Screen-Shot-2020-02-19-at-5.01.04-PM-35-1024x417.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080253\/Screen-Shot-2020-02-19-at-5.01.04-PM-35-300x122.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080253\/Screen-Shot-2020-02-19-at-5.01.04-PM-35-768x312.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080253\/Screen-Shot-2020-02-19-at-5.01.04-PM-35.png 1396w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 3<\/strong>: Run the app and open &#8220;Logcat&#8221; tool, we will see the ID token.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3811 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-19-at-5.23.36-PM-51-1024x625.png\" alt=\"\" width=\"1024\" height=\"625\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080319\/Screen-Shot-2020-02-19-at-5.23.36-PM-51-1024x625.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080319\/Screen-Shot-2020-02-19-at-5.23.36-PM-51-300x183.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080319\/Screen-Shot-2020-02-19-at-5.23.36-PM-51-768x469.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080319\/Screen-Shot-2020-02-19-at-5.23.36-PM-51.png 1399w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 4<\/strong>: Copy the ID token, open Firebase console -&gt; &#8220;<strong>In-App Messaging<\/strong>&#8220;, click \u201c<strong>Create your first campaign<\/strong>\u201d.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3813 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-19-at-5.06.23-PM-41-1024x606.png\" alt=\"\" width=\"1024\" height=\"606\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080401\/Screen-Shot-2020-02-19-at-5.06.23-PM-41-1024x606.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080401\/Screen-Shot-2020-02-19-at-5.06.23-PM-41-300x177.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080401\/Screen-Shot-2020-02-19-at-5.06.23-PM-41-768x454.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080401\/Screen-Shot-2020-02-19-at-5.06.23-PM-41.png 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 5<\/strong>: Enter &#8220;<strong>Message title<\/strong>&#8221; (ex: Hello I&#8217;m FireBase), &#8220;<strong>Body<\/strong>&#8221; (optional), &#8220;<strong>Images<\/strong>&#8221; (ex: <a href=\"https:\/\/cdn.pixabay.com\/photo\/2015\/10\/12\/14\/54\/coffee-983955_960_720.jpg\"><span class=\"s2\">https:\/\/cdn.pixabay.com\/photo\/2015\/10\/12\/14\/54\/coffee-983955_960_720.jpg<\/span><\/a>)<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3814 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-19-at-5.12.17-PM-45-1.png\" alt=\"\" width=\"938\" height=\"639\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080500\/Screen-Shot-2020-02-19-at-5.12.17-PM-45-1.png 938w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080500\/Screen-Shot-2020-02-19-at-5.12.17-PM-45-1-300x204.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080500\/Screen-Shot-2020-02-19-at-5.12.17-PM-45-1-768x523.png 768w\" sizes=\"auto, (max-width: 938px) 100vw, 938px\" \/><br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>Add &#8220;<strong>Button text<\/strong>&#8220;.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3816 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-19-at-5.12.47-PM-47.png\" alt=\"\" width=\"938\" height=\"692\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080533\/Screen-Shot-2020-02-19-at-5.12.47-PM-47.png 938w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080533\/Screen-Shot-2020-02-19-at-5.12.47-PM-47-300x221.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080533\/Screen-Shot-2020-02-19-at-5.12.47-PM-47-768x567.png 768w\" sizes=\"auto, (max-width: 938px) 100vw, 938px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 6<\/strong>: Click \u201c<strong>Test on Device<\/strong>\u201d, and paste the ID token into &#8220;<strong>Add an instance ID<\/strong>&#8221; field.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3817 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-19-at-5.17.37-PM-49.png\" alt=\"\" width=\"937\" height=\"665\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080559\/Screen-Shot-2020-02-19-at-5.17.37-PM-49.png 937w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080559\/Screen-Shot-2020-02-19-at-5.17.37-PM-49-300x213.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080559\/Screen-Shot-2020-02-19-at-5.17.37-PM-49-768x545.png 768w\" sizes=\"auto, (max-width: 937px) 100vw, 937px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\">Firebase In-App Messaging sends the test message as soon as you click &#8220;<b>Test<\/b>&#8220;. To see it, move the app to background, then re-open the app on your testing device.<\/span><\/p>\n<p class=\"p1\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3818 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-19-at-5.24.22-PM-53-1024x663.png\" alt=\"\" width=\"1024\" height=\"663\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080625\/Screen-Shot-2020-02-19-at-5.24.22-PM-53-1024x663.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080625\/Screen-Shot-2020-02-19-at-5.24.22-PM-53-300x194.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080625\/Screen-Shot-2020-02-19-at-5.24.22-PM-53-768x497.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080625\/Screen-Shot-2020-02-19-at-5.24.22-PM-53.png 1143w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><em>Result<\/em>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3819 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screenshot_20200219-173204-57-576x1024.jpg\" alt=\"\" width=\"576\" height=\"1024\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080648\/Screenshot_20200219-173204-57-576x1024.jpg 576w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080648\/Screenshot_20200219-173204-57-169x300.jpg 169w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080648\/Screenshot_20200219-173204-57-768x1365.jpg 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080648\/Screenshot_20200219-173204-57-864x1536.jpg 864w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080648\/Screenshot_20200219-173204-57.jpg 1080w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/p>\n<p><strong>Step 7<\/strong>: After test successfully, click &#8220;<strong>Next&#8221;<\/strong> to continue.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3820 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-10.50.56-AM.png\" alt=\"\" width=\"940\" height=\"662\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080709\/Screen-Shot-2020-02-20-at-10.50.56-AM.png 940w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080709\/Screen-Shot-2020-02-20-at-10.50.56-AM-300x211.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080709\/Screen-Shot-2020-02-20-at-10.50.56-AM-768x541.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3821 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-10.54.15-AM.png\" alt=\"\" width=\"933\" height=\"638\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080755\/Screen-Shot-2020-02-20-at-10.54.15-AM.png 933w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080755\/Screen-Shot-2020-02-20-at-10.54.15-AM-300x205.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080755\/Screen-Shot-2020-02-20-at-10.54.15-AM-768x525.png 768w\" sizes=\"auto, (max-width: 933px) 100vw, 933px\" \/><\/p>\n<p>Click &#8220;<strong>Review<\/strong>&#8221; to publish your message.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3822 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-10.56.19-AM.png\" alt=\"\" width=\"940\" height=\"671\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080836\/Screen-Shot-2020-02-20-at-10.56.19-AM.png 940w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080836\/Screen-Shot-2020-02-20-at-10.56.19-AM-300x214.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080836\/Screen-Shot-2020-02-20-at-10.56.19-AM-768x548.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3824 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-10.55.31-AM-1024x663.png\" alt=\"\" width=\"1024\" height=\"663\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080911\/Screen-Shot-2020-02-20-at-10.55.31-AM-1024x663.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080911\/Screen-Shot-2020-02-20-at-10.55.31-AM-300x194.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080911\/Screen-Shot-2020-02-20-at-10.55.31-AM-768x497.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080911\/Screen-Shot-2020-02-20-at-10.55.31-AM.png 1143w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>When click &#8220;<strong>Publish<\/strong>&#8221; message will send to the app.<\/p>\n<p>Result:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3825\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screenshot_20200219-173204-57-1-576x1024.jpg\" alt=\"\" width=\"282\" height=\"501\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080936\/Screenshot_20200219-173204-57-1-576x1024.jpg 576w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080936\/Screenshot_20200219-173204-57-1-169x300.jpg 169w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080936\/Screenshot_20200219-173204-57-1-768x1365.jpg 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080936\/Screenshot_20200219-173204-57-1-864x1536.jpg 864w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080936\/Screenshot_20200219-173204-57-1.jpg 1080w\" sizes=\"auto, (max-width: 282px) 100vw, 282px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3826\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screenshot_20200219-173801-59-169x300.jpg\" alt=\"\" width=\"282\" height=\"501\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080953\/Screenshot_20200219-173801-59-169x300.jpg 169w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080953\/Screenshot_20200219-173801-59-576x1024.jpg 576w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080953\/Screenshot_20200219-173801-59-768x1365.jpg 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080953\/Screenshot_20200219-173801-59-864x1536.jpg 864w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07080953\/Screenshot_20200219-173801-59.jpg 1080w\" sizes=\"auto, (max-width: 282px) 100vw, 282px\" \/><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3827\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screenshot_20200219-173901-61-169x300.jpg\" alt=\"\" width=\"282\" height=\"501\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081013\/Screenshot_20200219-173901-61-169x300.jpg 169w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081013\/Screenshot_20200219-173901-61-576x1024.jpg 576w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081013\/Screenshot_20200219-173901-61-768x1365.jpg 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081013\/Screenshot_20200219-173901-61-864x1536.jpg 864w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081013\/Screenshot_20200219-173901-61.jpg 1080w\" sizes=\"auto, (max-width: 282px) 100vw, 282px\" \/><\/p>\n<h2>IV. Cloud Message<\/h2>\n<h3>1. Introduction<\/h3>\n<p class=\"p1\"><span class=\"s1\">Firebase Cloud Messaging (FCM) is a cross-platform messaging solution that lets you reliably send messages at no cost.\u00a0<\/span><span class=\"s1\">Using FCM, you can notify a client app that new email or other data is available to sync. You can send notification messages to drive user re-engagement and retention. For use cases such as instant messaging, a message can transfer a payload of up to 4KB to a client app.<\/span><\/p>\n<h3>2. Get start<\/h3>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 1<\/strong>:\u00a0Add \u201c<strong><span class=\"s2\">implementation <\/span><\/strong><span class=\"s3\"><strong>\u2018com.google.firebase:firebase-messaging:20.1.0\u2019<\/strong>\u00a0&#8220;into &#8220;<strong>build.gradle<\/strong>&#8221; (app)<\/span><span class=\"s3\">\u00a0and Click &#8220;<strong>Sync Now<\/strong>&#8220;.<\/span><\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3828 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-8.07.39-AM-63-1024x627.png\" alt=\"\" width=\"1024\" height=\"627\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081040\/Screen-Shot-2020-02-20-at-8.07.39-AM-63-1024x627.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081040\/Screen-Shot-2020-02-20-at-8.07.39-AM-63-300x184.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081040\/Screen-Shot-2020-02-20-at-8.07.39-AM-63-768x470.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081040\/Screen-Shot-2020-02-20-at-8.07.39-AM-63.png 1399w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 2<\/strong> : Add filter to AndroidManifest file.<\/span><\/p>\n<pre class=\"clear-for-copy\"><span class=\"tag\">&lt;service<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 <\/span><span class=\"atn\">android:name<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\".java.MyFirebaseMessagingService\"<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 <\/span><span class=\"atn\">android:exported<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"false\"<\/span><span class=\"tag\">&gt;<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 <\/span><span class=\"tag\">&lt;intent-filter&gt;<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span class=\"tag\">&lt;action<\/span> <span class=\"atn\">android:name<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"com.google.firebase.MESSAGING_EVENT\"<\/span> <span class=\"tag\">\/&gt;<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 <\/span><span class=\"tag\">&lt;\/intent-filter&gt;<\/span>\r\n<span class=\"tag\">&lt;\/service&gt;<\/span><\/pre>\n<p class=\"p1\"><span class=\"s1\"><span class=\"atv\">MyFirebaseMessagingService is a<\/span>\u00a0service that extends\u00a0<\/span><em><span class=\"s2\">FirebaseMessagingService<\/span><\/em><span class=\"s1\">. This is required when you want to do any message handling beyond receiving notifications on apps in the background. To receive notifications in foreground apps, to receive data payload, to send upstream messages, and so on, you must use this service.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3829 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-8.13.02-AM-65-1024x625.png\" alt=\"\" width=\"1024\" height=\"625\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081111\/Screen-Shot-2020-02-20-at-8.13.02-AM-65-1024x625.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081111\/Screen-Shot-2020-02-20-at-8.13.02-AM-65-300x183.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081111\/Screen-Shot-2020-02-20-at-8.13.02-AM-65-768x469.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081111\/Screen-Shot-2020-02-20-at-8.13.02-AM-65.png 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\">Now you will see an\u00a0error at <strong>line 23<\/strong>. This is occurred because we don\u2019t have <em>MyFirebaseMessagingService<\/em> file in project so let create it.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3830 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-8.16.28-AM-67.png\" alt=\"\" width=\"825\" height=\"241\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081137\/Screen-Shot-2020-02-20-at-8.16.28-AM-67.png 825w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081137\/Screen-Shot-2020-02-20-at-8.16.28-AM-67-300x88.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081137\/Screen-Shot-2020-02-20-at-8.16.28-AM-67-768x224.png 768w\" sizes=\"auto, (max-width: 825px) 100vw, 825px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3831 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-8.17.14-AM-69.png\" alt=\"\" width=\"351\" height=\"145\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081206\/Screen-Shot-2020-02-20-at-8.17.14-AM-69.png 351w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081206\/Screen-Shot-2020-02-20-at-8.17.14-AM-69-300x124.png 300w\" sizes=\"auto, (max-width: 351px) 100vw, 351px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3832 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-8.17.30-AM-71-1024x183.png\" alt=\"\" width=\"1024\" height=\"183\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081227\/Screen-Shot-2020-02-20-at-8.17.30-AM-71-1024x183.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081227\/Screen-Shot-2020-02-20-at-8.17.30-AM-71-300x54.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081227\/Screen-Shot-2020-02-20-at-8.17.30-AM-71-768x137.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081227\/Screen-Shot-2020-02-20-at-8.17.30-AM-71.png 1393w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\">Change package name from <em>.java.MyFirebaseMessagingService<\/em> to <em>&lt;package&gt;.MyFirebaseMessagingService<\/em>.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3833 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-8.24.31-AM-77-1024x627.png\" alt=\"\" width=\"1024\" height=\"627\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081251\/Screen-Shot-2020-02-20-at-8.24.31-AM-77-1024x627.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081251\/Screen-Shot-2020-02-20-at-8.24.31-AM-77-300x184.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081251\/Screen-Shot-2020-02-20-at-8.24.31-AM-77-768x470.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081251\/Screen-Shot-2020-02-20-at-8.24.31-AM-77.png 1399w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 3\u00a0<\/strong>(optional): Set a default icon and color, you can skip this step if you do not want icon and color in your notification.<\/span><\/p>\n<blockquote>\n<pre class=\"clear-for-copy\"><span class=\"com\">&lt;!-- Set custom default icon. This is used when no icon is set for incoming notification messages.\r\n\u00a0 \u00a0 \u00a0See README(https:\/\/goo.gl\/l4GJaQ) for more. --&gt;<\/span>\r\n<span class=\"tag\">&lt;meta-data<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 <\/span><span class=\"atn\">android:name<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"com.google.firebase.messaging.default_notification_icon\"<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 <\/span><span class=\"atn\">android:resource<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"@drawable\/ic_stat_ic_notification\"<\/span> <span class=\"tag\">\/&gt;<\/span>\r\n<span class=\"com\">&lt;!-- Set color used with incoming notification messages. This is used when no color is set for the incoming\r\n\u00a0 \u00a0 \u00a0notification message. See README(https:\/\/goo.gl\/6BKBk7) for more. --&gt;<\/span>\r\n<span class=\"tag\">&lt;meta-data<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 <\/span><span class=\"atn\">android:name<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"com.google.firebase.messaging.default_notification_color\"<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 <\/span><span class=\"atn\">android:resource<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"@color\/colorAccent\"<\/span> <span class=\"tag\">\/&gt;<\/span><\/pre>\n<\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3834 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-8.36.41-AM-79-1024x627.png\" alt=\"\" width=\"1024\" height=\"627\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081324\/Screen-Shot-2020-02-20-at-8.36.41-AM-79-1024x627.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081324\/Screen-Shot-2020-02-20-at-8.36.41-AM-79-300x184.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081324\/Screen-Shot-2020-02-20-at-8.36.41-AM-79-768x470.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081324\/Screen-Shot-2020-02-20-at-8.36.41-AM-79.png 1399w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\"><strong>Step 4\u00a0<\/strong><\/span><span class=\"s2\">(Optional): From Android 8.0 (API level 26) and higher,\u00a0<a href=\"https:\/\/developer.android.com\/guide\/topics\/ui\/notifiers\/notifications.html#ManageChannels\"><span class=\"s3\">notification channels<\/span><\/a>\u00a0are supported and recommended. FCM provides a default notification channel with basic settings. If you prefer to\u00a0<a href=\"https:\/\/developer.android.com\/guide\/topics\/ui\/notifiers\/notifications.html#CreateChannel\"><span class=\"s3\">create<\/span><\/a>\u00a0and use your own default channel, set\u00a0<\/span><span class=\"s4\">default_notification_channel_id<\/span><span class=\"s2\">\u00a0to the ID of your notification channel object as shown; FCM will use this value whenever incoming messages do not explicitly set a notification channel. To learn more, see\u00a0<a href=\"https:\/\/developer.android.com\/guide\/topics\/ui\/notifiers\/notifications.html#ManageChannels\"><span class=\"s3\">Manage notification channels<\/span><\/a>.<\/span><\/p>\n<ul>\n<li class=\"p1\"><span class=\"s1\">Goto <strong>res\/values\/strings.xml<\/strong> and add this line.<\/span><\/li>\n<\/ul>\n<blockquote>\n<pre>&lt;string name=\"default_notification_channel_id\"&gt;1&lt;\/string&gt;<\/pre>\n<\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3835 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-8.44.38-AM-83-1024x350.png\" alt=\"\" width=\"1024\" height=\"350\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081349\/Screen-Shot-2020-02-20-at-8.44.38-AM-83-1024x350.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081349\/Screen-Shot-2020-02-20-at-8.44.38-AM-83-300x103.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081349\/Screen-Shot-2020-02-20-at-8.44.38-AM-83-768x263.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081349\/Screen-Shot-2020-02-20-at-8.44.38-AM-83.png 1395w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<ul>\n<li><span class=\"s1\">Open <strong>AndroidManifest<\/strong> file and add this code.<\/span><\/li>\n<\/ul>\n<blockquote>\n<pre class=\"clear-for-copy\"><span class=\"tag\">&lt;meta-data<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 <\/span><span class=\"atn\">android:name<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"com.google.firebase.messaging.default_notification_channel_id\"<\/span><span class=\"pln\">\r\n\u00a0 \u00a0 <\/span><span class=\"atn\">android:value<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"@string\/default_notification_channel_id\"<\/span> <span class=\"tag\">\/&gt;<\/span><\/pre>\n<\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3836 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-8.46.55-AM-85-1024x627.png\" alt=\"\" width=\"1024\" height=\"627\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081416\/Screen-Shot-2020-02-20-at-8.46.55-AM-85-1024x627.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081416\/Screen-Shot-2020-02-20-at-8.46.55-AM-85-300x184.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081416\/Screen-Shot-2020-02-20-at-8.46.55-AM-85-768x470.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081416\/Screen-Shot-2020-02-20-at-8.46.55-AM-85.png 1399w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p class=\"p1\"><span class=\"s1\">\u00a0<strong>Step 5<\/strong>: Open <strong>MainActivity<\/strong> to retrieve the current registration token, add this function<\/span><\/p>\n<blockquote>\n<pre>private fun createInstanceId() {\r\n    FirebaseInstanceId.getInstance().instanceId.addOnCompleteListener { task -&gt;\r\n        if (!task.isSuccessful) {\r\n            Log.w(TAG, \"getInstanceId failed\", task.exception)\r\n            return@addOnCompleteListener\r\n        }\r\n\r\n        \/\/get id Token\r\n        \/\/ Get new Instance ID token\r\n        val token = task.result?.token\r\n\r\n        \/\/ Log and toast\r\n        Log.d(TAG, \"token: $token\")\r\n        Toast.makeText(baseContext, \"token: $token\", Toast.LENGTH_SHORT).show()\r\n    }\r\n}<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3837 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-8.56.08-AM-87-1024x626.png\" alt=\"\" width=\"1024\" height=\"626\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081446\/Screen-Shot-2020-02-20-at-8.56.08-AM-87-1024x626.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081446\/Screen-Shot-2020-02-20-at-8.56.08-AM-87-300x183.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081446\/Screen-Shot-2020-02-20-at-8.56.08-AM-87-768x469.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081446\/Screen-Shot-2020-02-20-at-8.56.08-AM-87.png 1399w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<ul>\n<li class=\"p1\"><span class=\"s1\">Run the app, to get Firebase instance ID.<\/span><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3838 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screenshot_20200220-125154-576x1024.jpg\" alt=\"\" width=\"576\" height=\"1024\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081508\/Screenshot_20200220-125154-576x1024.jpg 576w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081508\/Screenshot_20200220-125154-169x300.jpg 169w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081508\/Screenshot_20200220-125154-768x1365.jpg 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081508\/Screenshot_20200220-125154-864x1536.jpg 864w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081508\/Screenshot_20200220-125154.jpg 1080w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/p>\n<p><strong>Step 6<\/strong>: Add the code below into the <strong>MyFirebaseMessagingService<\/strong> class.<\/p>\n<blockquote>\n<pre>class MyFirebaseMessagingService : FirebaseMessagingService() {\r\n    companion object {\r\n        private val TAG = this::class.java.simpleName\r\n    }\r\n\r\n    override fun onNewToken(token: String) {\r\n        Log.d(TAG, \"Refreshed token: $token\")\r\n        super.onNewToken(token)\r\n    }\r\n\r\n    override fun onMessageReceived(remoteMessage: RemoteMessage) {\r\n        super.onMessageReceived(remoteMessage)\r\n        Log.d(TAG, \"From: ${remoteMessage.from}\")\r\n\r\n        remoteMessage.data.isNotEmpty().let {\r\n        }\r\n\r\n        remoteMessage.notification?.let {\r\n            Log.d(TAG, \"Message Notification Body: ${it.body}\")\r\n            it.body?.let { body -&gt;\r\n                sendNotification(body)\r\n            }\r\n        }\r\n    }\r\n\r\n    private fun sendNotification(messageBody: String) {\r\n        val intent = Intent(this, CloudMessageActivity::class.java)\r\n        intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP\r\n        val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT)\r\n\r\n        val channelId = getString(R.string.default_notification_channel_id)\r\n        val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)\r\n        val notificationBuilder = NotificationCompat.Builder(this, channelId)\r\n            .setSmallIcon(R.drawable.ic_notifications)\r\n            .setContentTitle(\"Mess Title\")\r\n            .setContentText(messageBody)\r\n            .setAutoCancel(true)\r\n            .setSound(defaultSoundUri)\r\n            .setContentIntent(pendingIntent)\r\n\r\n        val notificationManager =\r\n            getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager\r\n\r\n        if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.O) {\r\n            val channel = NotificationChannel(\r\n                channelId, \"Channel human readable title\",\r\n                NotificationManager.IMPORTANCE_DEFAULT\r\n            )\r\n            notificationManager.createNotificationChannel(channel)\r\n        }\r\n\r\n        notificationManager.notify(1, notificationBuilder.build())\r\n    }\r\n}<\/pre>\n<\/blockquote>\n<p><strong>Step 7<\/strong>: Test <strong>Cloud Messaging<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3839 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-12.47.45-PM.png\" alt=\"\" width=\"745\" height=\"573\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081528\/Screen-Shot-2020-02-20-at-12.47.45-PM.png 745w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081528\/Screen-Shot-2020-02-20-at-12.47.45-PM-300x231.png 300w\" sizes=\"auto, (max-width: 745px) 100vw, 745px\" \/><\/p>\n<p>Enter <strong>Notification<\/strong>\u00a0<strong>Title<\/strong>, <strong>text<\/strong> and <strong>image<\/strong> (optional) ex:\u00a0https:\/\/cdn.pixabay.com\/photo\/2017\/07\/07\/02\/05\/symbol-2480161_960_720.png and send test message.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3840 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-1.00.12-PM.png\" alt=\"\" width=\"940\" height=\"686\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081545\/Screen-Shot-2020-02-20-at-1.00.12-PM.png 940w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081545\/Screen-Shot-2020-02-20-at-1.00.12-PM-300x219.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081545\/Screen-Shot-2020-02-20-at-1.00.12-PM-768x560.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/p>\n<ul>\n<li>Add the token we got from\u00a0<strong>Logcat<\/strong> (step 5)<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3841 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-1.07.28-PM.png\" alt=\"\" width=\"941\" height=\"692\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081608\/Screen-Shot-2020-02-20-at-1.07.28-PM.png 941w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081608\/Screen-Shot-2020-02-20-at-1.07.28-PM-300x221.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081608\/Screen-Shot-2020-02-20-at-1.07.28-PM-768x565.png 768w\" sizes=\"auto, (max-width: 941px) 100vw, 941px\" \/><\/p>\n<ul>\n<li><strong>Result<\/strong>:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3842 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screenshot_20200220-141558-576x1024.jpg\" alt=\"\" width=\"576\" height=\"1024\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081635\/Screenshot_20200220-141558-576x1024.jpg 576w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081635\/Screenshot_20200220-141558-169x300.jpg 169w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081635\/Screenshot_20200220-141558-768x1365.jpg 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081635\/Screenshot_20200220-141558-864x1536.jpg 864w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081635\/Screenshot_20200220-141558.jpg 1080w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Step 7<\/strong>: Create and send message.<\/p>\n<p>After test successfully, click &#8220;<strong>Next<\/strong>&#8221; to continue.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3843\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-2.22.42-PM-300x164.png\" alt=\"\" width=\"300\" height=\"164\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081717\/Screen-Shot-2020-02-20-at-2.22.42-PM-300x164.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081717\/Screen-Shot-2020-02-20-at-2.22.42-PM-768x419.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081717\/Screen-Shot-2020-02-20-at-2.22.42-PM.png 936w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3844 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-2.25.56-PM.png\" alt=\"\" width=\"939\" height=\"639\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081729\/Screen-Shot-2020-02-20-at-2.25.56-PM.png 939w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081729\/Screen-Shot-2020-02-20-at-2.25.56-PM-300x204.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081729\/Screen-Shot-2020-02-20-at-2.25.56-PM-768x523.png 768w\" sizes=\"auto, (max-width: 939px) 100vw, 939px\" \/><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3845 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-2.23.43-PM.png\" alt=\"\" width=\"944\" height=\"644\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081755\/Screen-Shot-2020-02-20-at-2.23.43-PM.png 944w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081755\/Screen-Shot-2020-02-20-at-2.23.43-PM-300x205.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081755\/Screen-Shot-2020-02-20-at-2.23.43-PM-768x524.png 768w\" sizes=\"auto, (max-width: 944px) 100vw, 944px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Click &#8220;<strong>Publish<\/strong>&#8221; to send a message.<\/li>\n<\/ul>\n<p><strong>Result<\/strong>:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3846\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screenshot_20200220-144456_One-UI-Home-300x255.jpg\" alt=\"\" width=\"412\" height=\"350\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081831\/Screenshot_20200220-144456_One-UI-Home-300x255.jpg 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081831\/Screenshot_20200220-144456_One-UI-Home-1024x869.jpg 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081831\/Screenshot_20200220-144456_One-UI-Home-768x652.jpg 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081831\/Screenshot_20200220-144456_One-UI-Home.jpg 1076w\" sizes=\"auto, (max-width: 412px) 100vw, 412px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3847\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screenshot_20200220-144505-242x300.png\" alt=\"\" width=\"282\" height=\"350\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081852\/Screenshot_20200220-144505-242x300.png 242w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081852\/Screenshot_20200220-144505-824x1024.png 824w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081852\/Screenshot_20200220-144505-768x954.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081852\/Screenshot_20200220-144505.png 1062w\" sizes=\"auto, (max-width: 282px) 100vw, 282px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3848\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screenshot_20200220-144509-169x300.jpg\" alt=\"\" width=\"197\" height=\"350\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081914\/Screenshot_20200220-144509-169x300.jpg 169w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081914\/Screenshot_20200220-144509-576x1024.jpg 576w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081914\/Screenshot_20200220-144509-768x1365.jpg 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081914\/Screenshot_20200220-144509-864x1536.jpg 864w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07081914\/Screenshot_20200220-144509.jpg 1080w\" sizes=\"auto, (max-width: 197px) 100vw, 197px\" \/><\/p>\n<h2>V. Realtime Database<\/h2>\n<h3>1. Introduction<\/h3>\n<p>The Firebase Realtime Database is a cloud-hosted database. Data is stored as JSON and synchronized in realtime to every connected client. When you build cross-platform apps with our iOS, Android, and JavaScript SDKs, all of your clients share one Realtime Database instance and automatically receive updates with the newest data.<\/p>\n<h3>2. Get start<\/h3>\n<p><span class=\"s1\"><strong>Step 1<\/strong>:\u00a0<\/span>Add \u201c<strong>implementation &#8216;com.google.firebase:firebase-database:19.2.1&#8217;<\/strong>\u00a0&#8220;into &#8220;build.gradle&#8221; (app)\u00a0and Click &#8220;<b>Sync Now<\/b>&#8220;.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3849 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-3.26.15-PM-1024x382.png\" alt=\"\" width=\"1024\" height=\"382\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082008\/Screen-Shot-2020-02-20-at-3.26.15-PM-1024x382.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082008\/Screen-Shot-2020-02-20-at-3.26.15-PM-300x112.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082008\/Screen-Shot-2020-02-20-at-3.26.15-PM-768x286.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082008\/Screen-Shot-2020-02-20-at-3.26.15-PM.png 1379w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Step 2<\/strong>: Configure realtime database rules for testing<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3851 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-3.38.14-PM-1024x541.png\" alt=\"\" width=\"1024\" height=\"541\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082049\/Screen-Shot-2020-02-20-at-3.38.14-PM-1024x541.png 1024w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082049\/Screen-Shot-2020-02-20-at-3.38.14-PM-300x159.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082049\/Screen-Shot-2020-02-20-at-3.38.14-PM-768x406.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082049\/Screen-Shot-2020-02-20-at-3.38.14-PM.png 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>About real time database rules you can read from <a href=\"https:\/\/firebase.google.com\/docs\/database\/security\/quickstart#sample-rules%22\">here<\/a><\/p>\n<p><strong>Step 3<\/strong>: Create UserModel Class<\/p>\n<blockquote>\n<pre>data class UserModel(\r\n    var id: String = \"\",\r\n    var name: String = \"\",\r\n    var age: Int = 0,\r\n    var email: String = \"\"\r\n) {\r\n    override fun toString(): String {\r\n        return \"UserModel(id='$id', name='$name', age=$age, email='$email')\"\r\n    }\r\n}\r\n<\/pre>\n<\/blockquote>\n<p><strong>Step 4<\/strong>: Create layout with 3 edit (name, age and email), 4 button (insert, get, update, delete), 1 recycler view to contain User data<\/p>\n<p>This is my layout.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3852 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screenshot_20200220-160304-492x1024.png\" alt=\"\" width=\"492\" height=\"1024\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082107\/Screenshot_20200220-160304-492x1024.png 492w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082107\/Screenshot_20200220-160304-144x300.png 144w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082107\/Screenshot_20200220-160304-768x1597.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082107\/Screenshot_20200220-160304-739x1536.png 739w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082107\/Screenshot_20200220-160304-985x2048.png 985w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082107\/Screenshot_20200220-160304.png 1080w\" sizes=\"auto, (max-width: 492px) 100vw, 492px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Step 5:<\/strong><\/p>\n<p>Write to your database<\/p>\n<p>First\u00a0initialize\u00a0<em>databaseReference<\/em>.<\/p>\n<blockquote>\n<pre>private fun initDatabase() {\r\n    databaseReference = FirebaseDatabase.getInstance().reference\r\n}<\/pre>\n<\/blockquote>\n<p>Next, get data from EditText and insert to database.<\/p>\n<blockquote>\n<pre>private fun insertUser() {\r\n    if (edt_name.text.isNullOrEmpty() || edt_age.text.isNullOrEmpty() || edt_email.text.isNullOrEmpty()) {\r\n        Toast.makeText(this, \"Some field are missing.\", Toast.LENGTH_SHORT).show()\r\n        return\r\n    }\r\n\r\n    \/\/get key\r\n    val key = databaseReference.child(\"User\").push().key\r\n\r\n    \/\/get user data from edit text\r\n    val user = UserModel(\r\n        name = edt_name.text.toString(),\r\n        age = edt_age.text.toString().toInt(),\r\n        email = edt_email.text.toString()\r\n    )\r\n\r\n    key?.let {\r\n        user.id = key\r\n\r\n        \/\/ Write a data to the database\r\n        databaseReference.child(\"User\").child(key).setValue(user).addOnSuccessListener {\r\n            clearText()\r\n            \/\/get user data from database\r\n            getUser()\r\n            \/\/scroll to new item\r\n            recycler_user.scrollToPosition(recyclerAdapter.userList.size - 1)\r\n        }\r\n            .addOnFailureListener {\r\n                Toast.makeText(this, \"Upload Error\", Toast.LENGTH_SHORT).show()\r\n            }\r\n    }\r\n}<\/pre>\n<\/blockquote>\n<p>Add this code to insert button click event.<\/p>\n<blockquote>\n<pre>btn_insert.setOnClickListener {\r\n    insertUser()\r\n}<\/pre>\n<\/blockquote>\n<p>After clicking the &#8220;<strong>Insert<\/strong>&#8221;\u00a0button in your app, data will be send to Firebase immediately.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3853 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-4.36.54-PM.png\" alt=\"\" width=\"960\" height=\"409\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082139\/Screen-Shot-2020-02-20-at-4.36.54-PM.png 960w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082139\/Screen-Shot-2020-02-20-at-4.36.54-PM-300x128.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082139\/Screen-Shot-2020-02-20-at-4.36.54-PM-768x327.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/p>\n<p><strong>Read database:<\/strong><\/p>\n<blockquote>\n<pre>databaseReference.child(\"User\").addValueEventListener(object : ValueEventListener {\r\n    override fun onCancelled(dataError: DatabaseError) {\r\n        Toast.makeText(this@DataBaseActivity, \"Upload Error\", Toast.LENGTH_SHORT).show()\r\n    }\r\n\r\n    override fun onDataChange(dataSnapshot: DataSnapshot) {\r\n        \r\n        \/\/get user list from database\r\n        val list = dataSnapshot.children.mapNotNull {\r\n            it.getValue(UserModel::class.java)\r\n        }\r\n        list.forEach {\r\n            Log.i(\"Users\", it.toString())\r\n        }\r\n        \/\/add to recycler view\r\n        if (list.isNotEmpty()) {\r\n            recyclerAdapter.userList.clear()\r\n            recyclerAdapter.userList.addAll(list)\r\n            recyclerAdapter.notifyDataSetChanged()\r\n        }\r\n    }\r\n})<\/pre>\n<\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3854 size-large\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screenshot_20200221-082417-492x1024.png\" alt=\"\" width=\"492\" height=\"1024\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082214\/Screenshot_20200221-082417-492x1024.png 492w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082214\/Screenshot_20200221-082417-144x300.png 144w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082214\/Screenshot_20200221-082417-768x1597.png 768w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082214\/Screenshot_20200221-082417-739x1536.png 739w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082214\/Screenshot_20200221-082417-985x2048.png 985w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082214\/Screenshot_20200221-082417.png 1080w\" sizes=\"auto, (max-width: 492px) 100vw, 492px\" \/><\/p>\n<p><strong>Update database:<\/strong><\/p>\n<blockquote>\n<pre>private fun updateUser() {\r\n    user?.let {\r\n        \/\/create new user object\r\n        val user = UserModel(\r\n            it.id,\r\n            edt_name.text.toString(),\r\n            edt_age.text.toString().toInt(),\r\n            edt_email.text.toString()\r\n        )\r\n        \/\/update user\r\n        databaseReference.child(\"User\/${it.id}\").setValue(user)\r\n    }\r\n}<\/pre>\n<\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3855 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-5.13.21-PM.png\" alt=\"\" width=\"951\" height=\"462\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082239\/Screen-Shot-2020-02-20-at-5.13.21-PM.png 951w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082239\/Screen-Shot-2020-02-20-at-5.13.21-PM-300x146.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082239\/Screen-Shot-2020-02-20-at-5.13.21-PM-768x373.png 768w\" sizes=\"auto, (max-width: 951px) 100vw, 951px\" \/><\/p>\n<p><strong>Delete database<\/strong>:<\/p>\n<blockquote>\n<pre>private fun deleteUser() {\r\n    \/\/ get user id\r\n    val query =\r\n        databaseReference.child(\"User\").orderByChild(\"id\").equalTo(user?.id)\r\n\r\n    query.addListenerForSingleValueEvent(object : ValueEventListener {\r\n        override fun onDataChange(dataSnapshot: DataSnapshot) {\r\n            for (user in dataSnapshot.children) {\r\n                \/\/remove user\r\n                user.ref.removeValue().addOnSuccessListener {\r\n                    clearText()\r\n                }\r\n            }\r\n        }\r\n\r\n        override fun onCancelled(databaseError: DatabaseError) {\r\n            Log.e(\r\n                TAG,\r\n                \"onCancelled\",\r\n                databaseError.toException()\r\n            )\r\n        }\r\n    })\r\n    getUser()\r\n}<\/pre>\n<\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3856 size-full\" src=\"https:\/\/briswell-vn.com\/wp-content\/uploads\/2020\/02\/Screen-Shot-2020-02-20-at-5.14.08-PM.png\" alt=\"\" width=\"953\" height=\"396\" srcset=\"https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082302\/Screen-Shot-2020-02-20-at-5.14.08-PM.png 953w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082302\/Screen-Shot-2020-02-20-at-5.14.08-PM-300x125.png 300w, https:\/\/s3-ap-southeast-1.amazonaws.com\/homepage-media\/wp-content\/uploads\/2020\/02\/07082302\/Screen-Shot-2020-02-20-at-5.14.08-PM-768x319.png 768w\" sizes=\"auto, (max-width: 953px) 100vw, 953px\" \/><\/p>\n<h2>VI. Reference documents<\/h2>\n<p><a href=\"https:\/\/firebase.google.com\/docs\/guides\">https:\/\/firebase.google.com\/docs\/guides<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/firebase\/quickstart-android\/blob\/995be41782f84b3c54e41d7d7e5d3a5048fe329e\/messaging\/app\/src\/main\/java\/com\/google\/firebase\/quickstart\/fcm\/kotlin\/MyFirebaseMessagingService.kt#L65-L77\">https:\/\/github.com\/firebase\/quickstart-android\/blob\/995be41782f84b3c54e41d7d7e5d3a5048fe329e\/messaging\/app\/src\/main\/java\/com\/google\/firebase\/quickstart\/fcm\/kotlin\/MyFirebaseMessagingService.kt#L65-L77<\/a><\/p>\n<p><a href=\"https:\/\/proandroiddev.com\/firebase-android-playground-realtime-database-560d4e18404a\">https:\/\/proandroiddev.com\/firebase-android-playground-realtime-database-560d4e18404a<\/a><\/p>\n<p><a href=\"https:\/\/www.learnhowtoprogram.com\/android\/data-persistence\/firebase-reading-data-and-event-listeners\">https:\/\/www.learnhowtoprogram.com\/android\/data-persistence\/firebase-reading-data-and-event-listeners<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Firebase I. What is Firebase Google Firebase is a Google-backed application development software that enables developers to develop iOS, Android and Web apps. Firebase provides tools for tracking analytics, reporting and fixing app crashes, creating marketing and product experiment. Firebase has many services and today I&#8217;m going to introduce to in-app messaging, cloud messages and real-time databases. II. Add Firebase to your app Before you [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":4029,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"footnotes":""},"categories":[4,71],"tags":[],"class_list":["post-3053","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","category-it-tec"],"_links":{"self":[{"href":"https:\/\/www.briswell-vn.com\/en\/wp-json\/wp\/v2\/posts\/3053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.briswell-vn.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.briswell-vn.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.briswell-vn.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.briswell-vn.com\/en\/wp-json\/wp\/v2\/comments?post=3053"}],"version-history":[{"count":0,"href":"https:\/\/www.briswell-vn.com\/en\/wp-json\/wp\/v2\/posts\/3053\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.briswell-vn.com\/en\/wp-json\/wp\/v2\/media\/4029"}],"wp:attachment":[{"href":"https:\/\/www.briswell-vn.com\/en\/wp-json\/wp\/v2\/media?parent=3053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.briswell-vn.com\/en\/wp-json\/wp\/v2\/categories?post=3053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.briswell-vn.com\/en\/wp-json\/wp\/v2\/tags?post=3053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}