package Ġcom . dirty dish . app . dirty dish Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . util . Log Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Service Ċ import Ġcom . google . firebase . messaging . Remote Message Ċ import Ġandroid . app . Notification Manager Ċ import Ġcom . dirty dish . app . dirty dish . R . mip map . ic _ launcher Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . media . Ring tone Manager Ċ import Ġandroid . support . v 4 . app . Notification Compat Ċ import Ġcom . dirty dish . app . dirty dish . data . AccessToken Ċ import Ġcom . dirty dish . app . dirty dish . data . Supply Ċ import Ġcom . dirty dish . app . dirty dish . sing letons . Session Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database . Database Reference Ċ import Ġcom . google . firebase . database . Firebase Database Ċ import Ġandroid . os . Bundle ĊĊĊĊ Ċ class ĠMy Firebase Messaging Service Ġ: ĠFirebase Messaging Service () Ġ{ ĊĠĠĠ Ġval ĠTAG Ġ= Ġ" Messaging Service " ĊĠĠĠ Ġoverride Ġfun Ġon Message Received ( remote Message : ĠRemote Message ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle ĠF CM Ġmessages Ġhere . ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġapplication Ġis Ġin Ġthe Ġforeground Ġhandle Ġboth Ġdata Ġand Ġnotification Ġmessages Ġhere . ĊĠĠĠĠĠĠĠ Ġ// ĠAlso Ġif Ġyou Ġintend Ġon Ġgenerating Ġyour Ġown Ġnotifications Ġas Ġa Ġresult Ġof Ġa Ġreceived ĠF CM ĊĠĠĠĠĠĠĠ Ġ// Ġmessage , Ġhere Ġis Ġwhere Ġthat Ġshould Ġbe Ġinitiated . ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" From : Ġ" Ġ+ Ġremote Message !!. from ) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Notification ĠMessage ĠBody : Ġ" Ġ+ Ġremote Message . notification ?. body !! ) ĊĠĠĠĠĠĠĠ Ġif Ġ( remote Message . notification Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification ( remote Message . notification ?. title , Ġremote Message . notification ?. body ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġif ĠInstance ID Ġtoken Ġis Ġupdated . ĠThis Ġmay Ġoccur Ġif Ġthe Ġsecurity Ġof ĊĠĠĠĠ Ġ* Ġthe Ġprevious Ġtoken Ġhad Ġbeen Ġcomp romise d . ĠNote Ġthat Ġthis Ġis Ġcalled Ġwhen Ġthe ĠInstance ID Ġtoken ĊĠĠĠĠ Ġ* Ġis Ġinitially Ġgenerated Ġso Ġthis Ġis Ġwhere Ġyou Ġwould Ġretrieve Ġthe Ġtoken . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon New Token ( token : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Ref reshed Ġtoken : Ġ$ token ") ĊĊĠĠĠĠĠĠĠ Ġsave Token ( token ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġyou Ġwant Ġto Ġsend Ġmessages Ġto Ġthis Ġapplication Ġinstance Ġor ĊĠĠĠĠĠĠĠ Ġ// Ġmanage Ġthis Ġapps Ġsubscriptions Ġon Ġthe Ġserver Ġside , Ġsend Ġthe ĊĠĠĠĠĠĠĠ Ġ// ĠInstance ĠID Ġtoken Ġto Ġyour Ġapp Ġserver . ĊĠĠĠĠĠĠĠ Ġ// Ġsend Registration ToServer ( token ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Notification ( title : ĠString ?, Ġbody : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠMain Menu Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TOP ) ĊĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent . getActivity ( this , Ġ 0 , Ġintent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ ONE _ SHOT ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsound Uri Ġ= ĠRing tone Manager . getDefault Uri ( Ring tone Manager . TYPE _ NOTIFICATION ) ĊĠĠĠĠĠĠĠ Ġval Ġnotification Builder Ġ= ĠNotification Compat . Builder ( application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . mip map . ic _ launcher ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Sound ( sound Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( pending Intent ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= Ġget System Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠ Ġnotification Manager . notify ( 0 , Ġnotification Builder . build ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Token ( token : ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠAccess Token ( token = token ) ĊĠĠĠĠĠĠĠ ĠSession . accessToken Ġ= Ġtoken ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= ĠFirebase Auth . getInstance (). currentUser ?. uid ĊĠĠĠĠĠĠĠ Ġif Ġ( userId Ġis ĠString ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb : ĠFirebase Database Ġ= ĠFirebase Database . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ref : ĠDatabase Reference Ġ= Ġdb . getReference (" tokens "). child ( userId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ref . setValue ( token ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } ĊĊ