package Ġcom . android devs . fire bas en ot ifications Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġcom . google . firebase . iid . Firebase InstanceId Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Ċ import Ġcom . google . gson . Gson Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ const Ġval ĠTOP IC Ġ= Ġ"/ topics / my Topic 2 " Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ ĠFirebase Service . shared Pref Ġ= Ġget SharedPreferences (" shared Pref ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ ĠFirebase InstanceId . getInstance (). instanceId . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Service . token Ġ= Ġit . token ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Token . setText ( it . token ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠFirebase Messaging . getInstance (). subscribe To Topic ( TOPIC ) ĊĊĠĠĠĠĠĠĠ Ġbtn Send . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġet Title . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġet Message . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecipient Token Ġ= Ġet Token . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( title . isNotEmpty () Ġ&& Ġmessage . isNotEmpty () Ġ&& Ġrecipient Token . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPush Notification ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Data ( title , Ġmessage ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecipient Token ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Notification ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Notification ( notification : ĠPush Notification ) Ġ= ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠRet rofit Instance . api . post Notification ( notification ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Response : Ġ${ Gson (). toJson ( response )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġresponse . error Body (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġe . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ