// Ċ // Ġ ĠCopyright Ġ 2 0 2 0 ĠP LA ID , ĠInc . Ċ // Ċ // Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ // Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ // Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ // Ċ // ĠĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ // Ċ // Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ // Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ // Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ // Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ // Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ // Ċ package Ġio . k arte . android . notifications . internal . wrapper Ċ Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġio . k arte . android . core . logger . Logger Ċ import Ġio . k arte . android . notifications . Message Receive Activity Ċ import Ġio . k arte . android . notifications . Message Receiver Ċ import Ġio . k arte . android . tracking . values Of Ċ Ċ private Ġconst Ġval ĠEX TRA _ TARGET _ PUSH _ FLAG Ġ= ĠKEY _ PUSH _ NOTIFICATION _ FLAG Ċ private Ġconst Ġval ĠEX TRA _ M ASS _ PUSH _ FLAG Ġ= ĠKEY _ M ASS _ PUSH _ NOTIFICATION _ FLAG Ċ private Ġconst Ġval ĠEX TRA _ EVENT _ VALUES Ġ= ĠKEY _ EVENT _ VALUES Ċ private Ġconst Ġval ĠEX TRA _ CA MP A IGN _ ID Ġ= ĠKEY _ CA MP A IGN _ ID Ċ private Ġconst Ġval ĠEX TRA _ SHORT EN _ ID Ġ= ĠKEY _ SHORT EN _ ID Ċ private Ġconst Ġval ĠEX TRA _ EVENT _ TYPE Ġ= Ġ" k rt _ event _ name " Ċ private Ġconst Ġval ĠEX TRA _ COMPONENT _ NAME Ġ= Ġ" k rt _ component _ name " Ċ internal Ġconst Ġval ĠACTION _ K AR TE _ IG NO RED Ġ= Ġ" io . k arte . android . notifications . MESSAGE _ IGNORE " Ċ Ċ private Ġconst Ġval ĠLOG _ TAG Ġ= Ġ" K arte . Notifications . Intent " Ċ Ċ internal Ġenum Ġclass ĠEventType ( val Ġvalue : ĠString ) Ġ{ ĊĠĠĠ ĠMESSAGE _ CLICK (" message _ click "), ĠMESSAGE _ IGNORE (" message _ ignore "); ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġof ( value : ĠString ?): ĠEventType ? Ġ= Ġvalues (). find Ġ{ Ġit . value Ġ== Ġvalue Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠIntent Wrapper ( val Ġintent : ĠIntent ) Ġ: ĠMessage Wrapper Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtarget Push Flag Ġ= Ġintent . getString Extra ( EXTRA _ TARGET _ PUSH _ FLAG ) ĊĠĠĠ Ġprivate Ġval Ġmass Push Flag Ġ= Ġintent . getString Extra ( EXTRA _ M ASS _ PUSH _ FLAG ) ĊĠĠĠ Ġoverride Ġval ĠisValid Ġ= Ġtarget Push Flag Ġ!= Ġnull Ġ|| Ġmass Push Flag Ġ!= Ġnull ĊĠĠĠ Ġval ĠeventType Ġ= ĠEventType . of ( intent . getString Extra ( EXTRA _ EVENT _ TYPE )) ĊĠĠĠ Ġoverride Ġval Ġevent Values Ġ= Ġvalues Of ( intent . getString Extra ( EXTRA _ EVENT _ VALUES )) ĊĠĠĠ Ġoverride Ġval Ġcampaign Id : ĠString ? Ġ= Ġintent . getString Extra ( EXTRA _ CA MP A IGN _ ID ) ĊĠĠĠ Ġoverride Ġval Ġshort en Id : ĠString ? Ġ= Ġintent . getString Extra ( EXTRA _ SHORT EN _ ID ) ĊĠĠĠ Ġoverride Ġval Ġis Target Push Ġ= Ġtarget Push Flag Ġ== Ġ" true " ĊĠĠĠ Ġoverride Ġval Ġis Mass Push Ġ= Ġmass Push Flag Ġ== Ġ" true " ĊĊĠĠĠ Ġfun Ġpop Component Name () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Name Ġ= Ġintent . getString Extra ( EXTRA _ COMPONENT _ NAME ) ĊĠĠĠĠĠĠĠ Ġintent . remove Extra ( EXTRA _ COMPONENT _ NAME ) ĊĠĠĠĠĠĠĠ Ġif Ġ( component Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . component Ġ= ĠComponent Name . un flatten FromString ( component Name ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . component Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclean () Ġ{ ĊĠĠĠĠĠĠĠ Ġintent . remove Extra ( EXTRA _ TARGET _ PUSH _ FLAG ) ĊĠĠĠĠĠĠĠ Ġintent . remove Extra ( EXTRA _ M ASS _ PUSH _ FLAG ) ĊĠĠĠĠĠĠĠ Ġintent . remove Extra ( EXTRA _ EVENT _ VALUES ) ĊĠĠĠĠĠĠĠ Ġintent . remove Extra ( EXTRA _ CA MP A IGN _ ID ) ĊĠĠĠĠĠĠĠ Ġintent . remove Extra ( EXTRA _ SHORT EN _ ID ) ĊĠĠĠĠĠĠĠ Ġintent . remove Extra ( EXTRA _ EVENT _ TYPE ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** ĠAndroid 1 2 ä»¥ éĻį ãģ® éĢļçŁ¥ ãĥĪ ãĥ© ãĥ³ ãĥĿ ãĥª ãĥ³ åĪ¶ éĻĲ ãģ® ãĥķ ãĥ© ãĤ° Ġ*/ Ċ internal Ġfun Ġis Tr amp oline Blocked ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn ĠBuild . VERSION . SDK _ INT Ġ>= Ġ 3 1 Ġ&& Ġcontext . application Info . target Sdk Version Ġ>= Ġ 3 1 Ċ } Ċ Ċ internal Ġclass ĠIntent Processor ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġintent : ĠIntent Ġ= ĠIntent (), ĊĠĠĠ Ġprivate Ġval Ġuse Activity : ĠBoolean Ġ= Ġfalse Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġpush Component Name () Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ ãĤ¯ãĥªãĥĥãĤ¯ çŃī è¨Ī æ¸ ¬ çĶ¨ ãģ« Message Receiver ãĤĴ set Class ãģĻãĤĭ ãĢĤ ĊĠĠĠĠĠĠĠ Ġ// ĠAndroid 1 2 ä»¥ éĻį ãģ¯ Receiver ãģĭãĤī Activity ãģĮ èµ· åĭķ ãģ§ãģį ãģªãģĦ ( éĢļçŁ¥ ãĥĪ ãĥ© ãĥ³ ãĥĿ ãĥª ãĥ³ åĪ¶ éĻĲ ) ãģŁãĤģ ãĢģ Activity ãĤĴä½¿ ãģĨ ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Class Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Activity ) ĠMessage Receive Activity :: class . java Ġelse ĠMessage Receiver :: class . java ĊĊĠĠĠĠĠĠĠ Ġ// Ġintent ãģ« åħĥ ãĢ ħ Component Name ãģĮ ãĤ»ãĥĥãĥĪ ãģķãĤĮãģ¦ãģĦãĤĭ åł´åĲĪãģ¯ Message Receiver ãģ§ å¾ © åħĥ ãģ§ãģįãĤĭ ãĤĪãģĨãģ« extra ãģ« åħ¥ ãĤĮ ãģ¦ ãģĬ ãģı ãĢĤ ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Name Ġ= Ġintent . component ĊĠĠĠĠĠĠĠ Ġif Ġ( component Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ COMPONENT _ NAME , Ġcomponent Name . flatten ToString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġintent . set Class ( context , Ġreceiver Class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġput EventType ( type : ĠEventType ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ ĠLogger . d ( LOG _ TAG , Ġ" put Ġevent Ġtype : Ġ$ type ") ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ EVENT _ TYPE , Ġtype . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcopy Info To Intent ( message : ĠRemote Message Wrapper ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ ĠLogger . d ( LOG _ TAG , Ġ" copy Info To Intent () Ġdata : Ġ${ message . data }, Ġintent : Ġ$ intent ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( message . is Target Push ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ TARGET _ PUSH _ FLAG , Ġ" true ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ CA MP A IGN _ ID , Ġmessage . campaign Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ SHORT EN _ ID , Ġmessage . short en Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ EVENT _ VALUES , Ġmessage . event Values Str ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( message . is Mass Push ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ M ASS _ PUSH _ FLAG , Ġ" true ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ EVENT _ VALUES , Ġmessage . event Values Str ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpending Intent ( unique Id : ĠInt ): ĠPending Intent Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġflag Ġ= ĠPending Intent . FLAG _ ONE _ SHOT ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ> ĠBuild . VERSION _ CODES . M ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflag Ġ= Ġflag . or ( Pending Intent . FLAG _ IM MUT ABLE ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( use Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . getActivity ( context , Ġunique Id , Ġintent , Ġflag ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . get Broadcast ( context , Ġunique Id , Ġintent , Ġflag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġfor Click ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage : ĠRemote Message Wrapper , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent : ĠIntent ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ): ĠIntent Processor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuse Activity Ġ= Ġis Tr amp oline Blocked ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwrapper Ġ= Ġif Ġ( intent Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . w ( LOG _ TAG , Ġ" use Ġno Ġlaunch Ġintent .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent Processor ( context , Ġuse Activity Ġ= Ġuse Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TOP Ġor ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent Processor ( context , Ġintent , Ġuse Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwrapper ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. push Component Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put EventType ( EventType . MESSAGE _ CLICK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. copy Info To Intent ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfor Ignore ( context : ĠContext , Ġmessage : ĠRemote Message Wrapper ): ĠIntent Processor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIntent Processor ( context , ĠIntent ( ACTION _ K AR TE _ IG NO RED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. push Component Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put EventType ( EventType . MESSAGE _ IGNORE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. copy Info To Intent ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ