package Ġcom . example . fun _ tik tok . service . push Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . media . Ring tone Manager Ċ import Ġandroid . util . Layout Direction Ċ import Ġandroid . widget . Remote Views Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġcom . example . fun _ tik tok . R Ċ import Ġcom . example . fun _ tik tok . Video Application Ċ import Ġcom . example . fun _ tik tok . business . environments . K arma Log Utils Ċ Ċ /** Ċ Ġ* Ġinvoke Ġ[ android . view . View . setLayout Direction ] Ċ Ġ* Ġ@ param Ġview GroupId Ċ Ġ* Ġ@ param Ġlayout Direction Ċ Ġ*/ Ċ fun ĠRemote Views . setLayout Direction ( view GroupId : ĠInt , Ġlayout Direction : ĠInt ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġset Int ( view GroupId , Ġ" setLayout Direction ", Ġlayout Direction ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠNotification Helper Ġ{ ĊĊĠĠĠ Ġval Ġshared Preferences Name Ġ= Ġ" Notification SP " ĊĠĠĠ Ġval Ġshared Preferences Notification Id Key Ġ= Ġ" Notification Id Key " ĊĊĠĠĠ Ġval Ġrefresh Notify Id Ġ= ĠInt . MAX _ VALUE ĊĊĠĠĠ Ġprivate Ġval Ġbg Color : ĠInt Ġ= ĠColor . GREEN ĊĠĠĠ Ġprivate Ġval Ġdefault Sound Uri Ġby Ġlazy Ġ{ ĠRing tone Manager . getDefault Uri ( Ring tone Manager . TYPE _ NOTIFICATION ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġvi br ation Pattern Ġby Ġlazy Ġ{ Ġlong ArrayOf ( 1 0 0 , Ġ 2 0 0 ) Ġ} ĊĊĠĠĠ Ġfun Ġsend Notification Compat ( ĊĠĠĠĠĠĠĠ Ġctx : ĠContext Ġ= ĠVideo Application . instance , ĊĠĠĠĠĠĠĠ Ġpush Model : ĠPush Model , ĊĠĠĠĠĠĠĠ Ġpending Intent : ĠPending Intent , ĊĠĠĠĠĠĠĠ Ġnotification Id : ĠInt Ġ= ĠgetLast Notification Id And Add Self ( Video Application . instance ), ĊĠĠĠĠĠĠĠ Ġcancel Ab el : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= Ġctx . getSystem Service ( Context . NOTIFICATION _ SERVICE ) Ġas ? ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġpush Channel Id Ġ= Ġ" SC RL " ĊĠĠĠĠĠĠĠ Ġval Ġpush Channel Name Ġ= Ġ" SC RL " ĊĊĠĠĠĠĠĠĠ Ġval Ġbuild : ĠNotification Compat . Builder ĊĊĠĠĠĠĠĠĠ Ġif Ġ( android . os . Build . VERSION . SDK _ INT Ġ>= Ġandroid . os . Build . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchannel Ġ= Ġnotification Manager . get Notification Channel ( push Channel Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( channel Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Ġ= ĠNotification Channel ( push Channel Id , Ġpush Channel Name , ĠNotification Manager . IMPORT ANCE _ HIGH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . set Show Badge ( true ) Ġ// è®¾ç½® æĺ¯åĲ¦ æĺ¾ç¤º è§Ĵ æłĩ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . lock screen Visibility Ġ= ĠNotification . VIS IBILITY _ PRIVATE Ġ//// è®¾ç½® æĺ¯åĲ¦ åºĶ åľ¨ éĶģ å®ļ å±ı å¹ķ ä¸Ĭ æĺ¾ç¤º æŃ¤ é¢ĳ éģĵ çļĦ éĢļçŁ¥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . description Ġ= Ġpush Channel Id // è®¾ç½® æ¸ ł éģĵ æııè¿° ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . enable V ibration ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . vi br ation Pattern Ġ= Ġvi br ation Pattern ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . enable Lights ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . light Color Ġ= Ġbg Color ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . set By pass D nd ( true )// è®¾ç½® æĺ¯åĲ¦ ç» ķ è¿ĩ åħį æīĵ æī ° æ¨¡å¼ı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager . create Notification Channel ( channel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Ġ= ĠNotification Compat . Builder ( ctx , Ġpush Channel Id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Ġ= ĠNotification Compat . Builder ( ctx , Ġpush Channel Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild . priority Ġ= ĠNotification Compat . PRIORITY _ HIGH ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuild . set Channel Id ( push Channel Id ) ĊĠĠĠĠĠĠĠ Ġbuild . set Defaults ( Notification Compat . DEFAULT _ SOUND ) ĊĊĠĠĠĠĠĠĠ Ġbuild . set V ibrate ( vi br ation Pattern ) ĊĠĠĠĠĠĠĠ Ġbuild . set Defaults ( Notification Compat . DEFAULT _ V IB RATE ) ĊĊĠĠĠĠĠĠĠ Ġbuild . set Lights ( bgColor , Ġ 1 0 0 0 , Ġ 1 5 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġbuild . set Only Alert Once ( false ) ĊĊĠĠĠĠĠĠĠ Ġbuild . set Small Icon ( R . drawable . ic _ service _ active ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor ( bgColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( push Model . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Sound ( default Sound Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( push Model . body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Badge IconType ( Notification Compat . BAD GE _ ICON _ LARGE ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= Ġbuild . build () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! cancel Ab el ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification . flags Ġ= Ġnotification . flags Ġor ĠNotification Compat . FLAG _ NO _ CLEAR ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager . notify ( notification Id , Ġnotification ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK arma Log Utils . d ( tag Ġ= ĠK arma Log Utils . TAG _ PUSH , Ġmsg Ġ= Ġ" notification -> notification Id =$ notification Id ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun ĠgetLast Notification Id And Add Self ( ctx : ĠContext ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsp Ġ= Ġctx . get SharedPreferences ( shared Preferences Name , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġsp . getInt ( shared Preferences Notification Id Key , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġrefresh Notify Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Last Notification Id ( ctx , Ġresult Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Apply Shared Pref ") ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġset Last Notification Id ( ctx : ĠContext , Ġnotification Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġif Ġ( notification Id Ġ== Ġrefresh Notify Id ) Ġ 0 Ġelse Ġnotification Id ĊĠĠĠĠĠĠĠ Ġctx . get SharedPreferences ( shared Preferences Name , ĠContext . MODE _ PRIVATE ). edit (). put Int ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences Notification Id Key , Ġnotification Id ĊĠĠĠĠĠĠĠ Ġ). commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Text R tl ( root : ĠRemote Views , Ġview GroupId : ĠInt , Ġis R tl : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġroot . setLayout Direction ( view GroupId , Ġif Ġ( is R tl ) ĠLayout Direction . RTL Ġelse ĠLayout Direction . LTR ) ĊĠĠĠ Ġ} Ċ }