package Ġcom . kick starter . libs Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . work . Backoff Policy Ċ import Ġandroidx . work . Existing Work Policy Ċ import Ġandroidx . work . One Time Work RequestBuilder Ċ import Ġandroidx . work . Work Manager Ċ import Ġandroidx . work . work Data Of Ċ import Ġcom . google . android . gms . tasks . On Complete Listener Ċ import Ġcom . google . firebase . crash ly t ics . Firebase Crash ly t ics Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Ċ import Ġcom . kick starter . libs . br aze . Remote Push Client Type Ċ import Ġcom . kick starter . libs . qual ifiers . ApplicationContext Ċ import Ġcom . kick starter . libs . utils . Play Services Capability Ċ import Ġcom . kick starter . libs . utils . Work Utils Ċ import Ġcom . kick starter . services . firebase . Register Token Worker Ċ import Ġcom . kick starter . services . firebase . Unregister Token Worker Ċ import Ġcom . kick starter . ui . Intent Key Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠDevice Registrar ( ĊĠĠĠ Ġprivate Ġval Ġplay Services Capability : ĠPlay Services Capability , ĊĠĠĠ Ġ@ param : ApplicationContext Ġ@ field : ApplicationContext Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġpush Client Type : ĠRemote Push Client Type Ċ ) Ġ: ĠDevice Registrar Type Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf ĠPlay ĠServices Ġis Ġavailable Ġon Ġthis Ġdevice , Ġstart Ġa Ġservice Ġto Ġregister Ġit Ġin Ġthe Ġbackend . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġregister Device () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . play Services Capability . is Cap able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Messaging . getInstance (). token . add On Complete Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOn Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . exception ?. fill In StackTrace ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Crash ly t ics . getInstance (). record Exception ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Complete Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġnew ĠF CM Ġregistration Ġtoken ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġtask . result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Token ( this . context , Ġtoken ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ- ĠBr aze Ġregister Ġpush Ġnotification Ġtoken ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . push Client Type . register Push Messages ( this . context , Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf ĠPlay ĠServices Ġis Ġavailable Ġon Ġthis Ġdevice , Ġdelete Ġthe Ġexisting Ġtoken . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġunregister Device () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . play Services Capability . is Cap able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunregister Token () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġunregister Token () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠOne Time Work RequestBuilder < Unregister Token Worker >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Backoff Criteria ( Backoff Policy . EXP ON ENTIAL , ĠBACK OFF _ DELAY , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Constraints ( Work Utils . base Constraints ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠWork Manager . getInstance ( this . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. enqueue Unique Work ( UN REGISTER _ TOKEN , ĠExisting Work Policy . REPLACE , Ġrequest ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBACK OFF _ DELAY Ġ= Ġ 3 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREG ISTER _ TOKEN Ġ= Ġ" register _ push _ token " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUN REGISTER _ TOKEN Ġ= Ġ" unregister _ push _ token " ĊĊĠĠĠĠĠĠĠ Ġfun Ġregister Token ( context : ĠContext , Ġtoken : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġwork Data Of ( Intent Key . PUSH _ TOKEN Ġto Ġtoken ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠOne Time Work RequestBuilder < Register Token Worker >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set InputData ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Backoff Criteria ( Backoff Policy . EXP ON ENTIAL , ĠBACK OFF _ DELAY , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Constraints ( Work Utils . base Constraints ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠWork Manager . getInstance ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enqueue Unique Work ( REGISTER _ TOKEN , ĠExisting Work Policy . REPLACE , Ġrequest ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ