package Ġcom . example . sharing ang . utils . notification Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġcom . example . sharing ang . Build Config Ċ import Ġcom . example . sharing ang . R Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Ċ Ċ private Ġconst Ġval ĠNOT IFICATION _ ID Ġ= Ġ 0 Ċ Ċ /** Ċ Ġ* ĠSend Ġand Ġdisplay Ġa Ġnotification Ċ Ġ* Ġ@ param Ġmessage Body Ġthe Ġmessage Ġto Ġbe Ġdisplayed Ġin Ġthe Ġnotification Ċ Ġ* Ġ@ param Ġmessage Title Ġthe Ġtitle Ġof Ġthe Ġmessage Ġto Ġbe Ġdisplayed Ċ Ġ* Ġ@ param Ġchannel Id Ġthe Ġidentifier Ġof Ġthe Ġnotification Ġchannel Ċ Ġ* Ġ@ param Ġapplication Context Ġthe Ġcontext Ġof Ġthe Ġapplication Ċ Ġ*/ Ċ fun ĠNotification Manager . send Notification ( ĊĠĠĠ Ġmessage Body : ĠString , ĊĠĠĠ Ġmessage Title : ĠString , ĊĠĠĠ Ġchannel Id : ĠString , ĊĠĠĠ Ġdee plink : ĠString , ĊĠĠĠ Ġapplication Context : ĠContext Ċ ) Ġ{ ĊĠĠĠ Ġval Ġcontent Intent Ġ= ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse ( dee plink )) ĊĠĠĠ Ġcontent Intent . set Package ( Build Config . APPLICATION _ ID ) ĊĠĠĠ Ġcontent Intent . add Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TOP ) ĊĠĠĠ Ġval Ġcontent Pending Intent Ġ= ĠPending Intent . getActivity ( ĊĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠ ĠNOT IFICATION _ ID , ĊĠĠĠĠĠĠĠ Ġcontent Intent , ĊĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ ONE _ SHOT ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġbuilder Ġ= Ġbuild Notification ( ĊĠĠĠĠĠĠĠ Ġmessage Body , ĊĠĠĠĠĠĠĠ Ġmessage Title , ĊĠĠĠĠĠĠĠ Ġchannel Id , ĊĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠ Ġcontent Pending Intent ĊĠĠĠ Ġ) ĊĠĠĠ Ġnotify ( NOTIFICATION _ ID , Ġbuilder . build ()) Ċ } Ċ Ċ private Ġfun Ġbuild Notification ( ĊĠĠĠ Ġmessage Body : ĠString , ĊĠĠĠ Ġmessage Title : ĠString , ĊĠĠĠ Ġchannel Id : ĠString , ĊĠĠĠ Ġapplication Context : ĠContext , ĊĠĠĠ Ġcontent Pending Intent : ĠPending Intent Ċ ): ĠNotification Compat . Builder Ġ{ ĊĠĠĠ Ġreturn ĠNotification Compat . Builder ( ĊĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠ Ġchannel Id ĊĠĠĠ Ġ). set Small Icon ( R . drawable . ic _ launcher _ foreground ) ĊĠĠĠĠĠĠĠ Ġ. setContent Title ( message Title ) ĊĠĠĠĠĠĠĠ Ġ. setContent Text ( message Body ) ĊĠĠĠĠĠĠĠ Ġ. setContent Intent ( content Pending Intent ) ĊĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ LOW ) ĊĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate Ġa Ġnotification Ġchannel , Ġrequired Ġsince ĠAndroid ĠO Ċ Ġ* Ġ@ param Ġchannel Id Ġthe Ġid Ġof Ġthe Ġchannel Ċ Ġ* Ġ@ param Ġchannel Name Ġthe Ġname Ġof Ġthe Ġchannel Ċ Ġ* Ġ@ param Ġchannel Description Ġthe Ġdescription Ġof Ġthe Ġchannel Ċ Ġ* Ġ@ param Ġactivity Ġthe Ġactivity Ċ Ġ*/ Ċ fun Ġcreate Channel ( ĊĠĠĠ Ġchannel Id : ĠString , ĊĠĠĠ Ġchannel Name : ĠString , ĊĠĠĠ Ġchannel Description : ĠString , ĊĠĠĠ Ġactivity : ĠActivity Ċ ) Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnotification Channel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager . IMPORT ANCE _ HIGH ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĠsetShow Badge ( false ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġnotification Channel . enable Lights ( true ) ĊĠĠĠĠĠĠĠ Ġnotification Channel . light Color Ġ= ĠColor . BLUE ĊĠĠĠĠĠĠĠ Ġnotification Channel . enable V ibration ( true ) ĊĠĠĠĠĠĠĠ Ġnotification Channel . description Ġ= Ġchannel Description ĊĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= Ġactivity . getSystem Service ( Notification Manager :: class . java ) ĊĠĠĠĠĠĠĠ Ġnotification Manager . create Notification Channel ( notification Channel ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠSubscribe Ġto Ġthe Ġtopic Ġon ĠFirebase Messaging Ċ Ġ* Ġ@ param Ġtopic Ġthe Ġtopic Ġto Ġsubscribe Ġto Ċ Ġ*/ Ċ fun Ġsubscribe To Topic ( topic : ĠString ) Ġ{ ĊĠĠĠ ĠFirebase Messaging . getInstance (). subscribe To Topic ( topic ) Ċ } Ċ Ċ /** Ċ Ġ* ĠUn subscribe Ġfrom Ġthe Ġtopic Ġon ĠFirebase Messaging Ċ Ġ* Ġ@ param Ġtopic Ġthe Ġtopic Ġto Ġunsubscribe Ġfrom Ċ Ġ*/ Ċ fun Ġunsubscribe From Topic ( topic : ĠString ) Ġ{ ĊĠĠĠ ĠFirebase Messaging . getInstance (). unsubscribe From Topic ( topic ) Ċ } Ċ