package Ġcom . example . detail application . service Ċ Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġcom . example . detail application . R Ċ import Ġcom . google . android . gms . tasks . On Complete Listener Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Service Ċ Ċ /* Ċ import Ġcom . google . firebase . iid . Firebase InstanceId Ċ import Ġcom . google . firebase . iid . Firebase InstanceId Service Ċ */ ĊĊ Ċ class ĠMy Firebase Instance ID Service Ġ: ĠFirebase Messaging Service () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon New Token ( p 0 : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on New Token ( p 0 ) ĊĠĠĠĠĠĠĠ ĠFirebase Messaging . getInstance (). token . add On Complete Listener ( On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" Fetching ĠF CM Ġregistration Ġtoken Ġfailed ", Ġtask . exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Complete Listener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġnew ĠF CM Ġregistration Ġtoken ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġtask . result ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformat Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog Ġand Ġtoast ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= ĠgetString ( 0 , Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġmsg ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( base Context , Ġmsg , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġyou Ġwant Ġto Ġsend Ġmessages Ġto Ġthis Ġapplication Ġinstance Ġor ĊĠĠĠĠĠĠĠ Ġ// Ġmanage Ġthis Ġapps Ġsubscriptions Ġon Ġthe Ġserver Ġside , Ġsend Ġthe ĊĠĠĠĠĠĠĠ Ġ// ĠF CM Ġregistration Ġtoken Ġto Ġyour Ġapp Ġserver . ĊĠĠĠĠĠĠĠ Ġsend Registration ToServer ( Firebase Messaging . getInstance (). token . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ ĠFirebase Messaging . getInstance (). token . add On Complete Listener ( On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ(! task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" Fetching ĠF CM Ġregistration Ġtoken Ġfailed ", Ġtask . exception ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Complete Listener ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġnew ĠF CM Ġregistration Ġtoken ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġtask . result ĊĊĠĠĠĠĠĠĠ Ġ// ĠLog Ġand Ġtoast ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= ĠgetString ( R . string . msg _ token _ fmt , Ġtoken ) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġmsg ) ĊĠĠĠĠĠĠĠ ĠToast . makeText ( base Context , Ġmsg , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ}) ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ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 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// Ġ[ START Ġrefresh _ token ] ĊĠĠĠ Ġfun Ġon Token Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġupdated ĠInstance ID Ġtoken . ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġval Ġref reshed Token : ĠString Ġ= ĠFirebase InstanceId . getInstance (). getToken () ĊĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ref reshed Ġtoken : Ġ$ ref reshed 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 ( ref reshed Token ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġ[ END Ġrefresh _ token ] ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPers ist Ġtoken Ġto Ġthird - party Ġservers . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠModify Ġthis Ġmethod Ġto Ġassociate Ġthe Ġuser 's ĠF CM ĠInstance ID Ġtoken Ġwith Ġany Ġserver - side Ġaccount ĊĠĠĠĠ Ġ* Ġmaintained Ġby Ġyour Ġapplication . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtoken ĠThe Ġnew Ġtoken . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsend Registration ToServer ( token : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠImplement Ġthis Ġmethod Ġto Ġsend Ġtoken Ġto Ġyour Ġapp Ġserver . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" My Firebase IID Service " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġcommunication Ġchannel Ġto Ġthe Ġservice . Ġ ĠMay Ġreturn Ġnull Ġif ĊĠĠĠĠ Ġ* Ġclients Ġcan Ġnot Ġbind Ġto Ġthe Ġservice . Ġ ĠThe Ġreturned ĊĠĠĠĠ Ġ* Ġ[ android . os . IB inder ] Ġis Ġusually Ġfor Ġa Ġcomplex Ġinterface ĊĠĠĠĠ Ġ* Ġthat Ġhas Ġbeen Ġ[ described Ġusing Ċ Ġ* Ġa idl ]( {@ doc Root } guide / components / aid l . html ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ* Note Ġthat Ġun like Ġother Ġapplication Ġcomponents , Ġcalls Ġon Ġto Ġthe ĊĠĠĠĠ Ġ* ĠI Binder Ġinterface Ġreturned Ġhere Ġmay Ġnot Ġhappen Ġon Ġthe Ġmain Ġthread ĊĠĠĠĠ Ġ* Ġof Ġthe Ġprocess *. Ġ ĠMore Ġinformation Ġabout Ġthe Ġmain Ġthread Ġcan Ġbe Ġfound Ġin ĊĠĠĠĠ Ġ* Ġ[ Processes Ġand Ċ Ġ* ĠThread s ]( {@ doc Root } guide / topics / fund amentals / processes - and - threads . html ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġintent ĠThe ĠIntent Ġthat Ġwas Ġused Ġto Ġbind Ġto Ġthis Ġservice , ĊĠĠĠĠ Ġ* Ġas Ġgiven Ġto Ġ[ ĠContext . bind Service ][ android . content . Context . bind Service ]. Ġ ĠNote Ġthat Ġany Ġextras Ġthat Ġwere Ġincluded Ġwith ĊĠĠĠĠ Ġ* Ġthe ĠIntent Ġat Ġthat Ġpoint Ġwill Ġ* not * Ġbe Ġseen Ġhere . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠReturn Ġan ĠI Binder Ġthrough Ġwhich Ġclients Ġcan Ġcall Ġon Ġto Ġthe ĊĠĠĠĠ Ġ* Ġservice . ĊĠĠĠĠ Ġ*/ Ċ }