package Ġcom . segment analytics react native Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . Package Info Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Network Capabilities Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . provider . Settings . Secure . getString Ċ import Ġandroid . util . Log Ċ import Ġandroidx . core . content . pm . Package Info Compat Ċ import Ġcom . facebook . react . React Activity Ċ import Ġcom . facebook . react . React Application Ċ import Ġcom . facebook . react . bridge .* Ċ import Ġcom . facebook . react . module . annotations . React Module Ċ import Ġcom . so vr an react native . S ov ran Module Ċ import Ġjava . lang . Exception Ċ import Ġjava . util .* ĊĊ Ċ enum Ġclass ĠConnection Type Ġ{ ĊĠ ĠCell ular , ĠUnknown , ĠW ifi Ċ } Ċ Ċ @ React Module ( name =" Analytics React Native ") Ċ class ĠAnalytics React Native Module Ġ: ĠReact Context Base Java Module , ĠActivity EventListener , ĠLifecycle EventListener Ġ{ ĊĊĠ Ġconstructor ( react Context : ĠReact ApplicationContext ) Ġ: Ġsuper ( react Context ) Ġ{ ĊĠĠĠ Ġthis . p Info Ġ= Ġreact Context . package Manager . get Package Info ( react Context . packageName , Ġ 0 ) ĊĠĠĠ Ġ// ĠListen Ġfor Ġnew Ġintent s Ġwhen Ġapp Ġis Ġin Ġthe Ġbackground ĊĠĠĠ Ġreact Context . add Activity EventListener ( this ) ĊĠĠĠ Ġ// ĠListen Ġfor Ġresume Ġevents Ġwhen Ġit Ġis Ġcold Ġstarted , Ġor Ġin Ġthe Ġbackground ĊĠĠĠ Ġreact Context . add Lifecycle EventListener ( this ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġis Col d Launch Ġ= Ġtrue ĊĠ Ġprivate Ġval Ġp Info : ĠPackage Info ĊĊĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ" Analytics React Native " ĊĠ Ġ} ĊĊĠ Ġ@ React Method ( is Blocking S ynchronous Method Ġ= Ġtrue ) ĊĠ Ġfun Ġget UUID Sync (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠUUID . randomUUID (). toString () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Build Number (): ĠString Ġ{ ĊĠĠĠĠĠ Ġreturn ĠPackage Info Compat . getLong Version Code ( p Info ). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Hardware Ids ") ĊĠĠĠ Ġprivate Ġfun Ġget UniqueId ( collect DeviceId Ġ: ĠBoolean ): ĠString ? Ġ{ ĊĠĠĠĠĠ Ġif Ġ( collect DeviceId ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetString ( react ApplicationContext . content Resolver , ĠSettings . Secure . ANDROID _ ID ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Connection Type ( context : ĠContext ): ĠConnection Type Ġ{ ĊĠĠĠĠĠ Ġval Ġcm Ġ= Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ? ĊĠĠĠĠĠ Ġvar Ġresult : ĠConnection Type Ġ= ĠConnection Type . Unknown ĊĊĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcm ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcm . get Network Capabilities ( cm . active Network )?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Transport ( Network Capabilities . TRANSPORT _ WIFI )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠConnection Type . Wifi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( has Transport ( Network Capabilities . TRANSPORT _ CELL ULAR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠConnection Type . Cell ular ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠConnection Type . Unknown ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcm ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcm . active Network Info ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠConnect ivity Manager . TYPE _ WIFI ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠConnection Type . Wifi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== ĠConnect ivity Manager . TYPE _ MOB ILE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠConnection Type . Cell ular ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠConnection Type . Unknown ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ React Method ĊĠĠĠ Ġfun ĠgetContext Info ( config : ĠRead able Map , Ġpromise : ĠPromise ) Ġ{ ĊĠĠĠĠĠ Ġval ĠappName : ĠString Ġ= Ġreact ApplicationContext . application Info . load Label ( react ApplicationContext . package Manager ). toString () ĊĠĠĠĠĠ Ġval Ġapp Version : ĠString Ġ= Ġp Info . version Name ĊĠĠĠĠĠ Ġval Ġbuild Number Ġ= Ġget Build Number () ĊĠĠĠĠĠ Ġval Ġbundle Id Ġ= Ġreact ApplicationContext . packageName ĊĊĠĠĠĠĠ Ġval Ġconnection Type : ĠConnection Type Ġ= Ġget Connection Type ( react ApplicationContext ) ĊĠĠĠĠĠ Ġval Ġtimezone : ĠTime Zone Ġ= ĠTime Zone . getDefault () ĊĠĠĠĠĠ Ġval Ġcurrent Locale : ĠLocale Ġ= ĠLocale . getDefault () ĊĠĠĠĠĠ Ġval Ġlocale : ĠString Ġ= Ġ"${ current Locale . language }-${ current Locale . country }" ĊĊĠĠĠĠĠ Ġval Ġscreen Width Ġ= Ġ ĠResources . getSystem (). display Metrics . width Pixels ĊĠĠĠĠĠ Ġval Ġscreen Height Ġ= Ġ ĠResources . getSystem (). display Metrics . height Pixels ĊĊĠĠĠĠĠ Ġval Ġscreen Density Ġ= ĠResources . getSystem (). display Metrics . density ; ĊĊĠĠĠĠĠ Ġval Ġcontext Info : ĠWrit able Map Ġ= ĠArguments . create Map () ĊĊĠĠĠĠĠ Ġcontext Info . putString (" appName ", ĠappName ) ĊĠĠĠĠĠ Ġcontext Info . putString (" app Version ", Ġapp Version ) ĊĠĠĠĠĠ Ġcontext Info . putString (" build Number ", Ġbuild Number ) ĊĠĠĠĠĠ Ġcontext Info . putString (" bundle Id ", Ġbundle Id ) ĊĠĠĠĠĠ Ġcontext Info . putString (" deviceId ", Ġget UniqueId ( config . has Key (" collect DeviceId ") Ġ&& Ġconfig . getBoolean (" collect DeviceId "))) ĊĠĠĠĠĠ Ġcontext Info . putString (" device Name ", ĠBuild . DEVICE ) ĊĠĠĠĠĠ Ġcontext Info . putString (" device Type ", Ġ" android ") ĊĠĠĠĠĠ Ġcontext Info . putString (" manufacturer ", ĠBuild . MAN U FACT UR ER ) ĊĠĠĠĠĠ Ġcontext Info . putString (" model ", ĠBuild . MODEL ) ĊĊĠĠĠĠĠ Ġcontext Info . putString (" timezone ", Ġtimezone . id ) ĊĠĠĠĠĠ Ġcontext Info . putString (" locale ", Ġlocale ) ĊĠĠĠĠĠ Ġcontext Info . putString (" network Type ", Ġconnection Type . toString (). toLowerCase ( current Locale )) ĊĊĠĠĠĠĠ Ġcontext Info . putString (" os Name ", Ġ" Android ") ĊĠĠĠĠĠ Ġcontext Info . putString (" os Version ", ĠBuild . VERSION . RELEASE ) ĊĊĠĠĠĠĠ Ġcontext Info . put Int (" screen Width ", Ġscreen Width ) ĊĠĠĠĠĠ Ġcontext Info . put Int (" screen Height ", Ġscreen Height ) ĊĠĠĠĠĠ Ġcontext Info . put Double (" screen Density ", Ġscreen Density . toDouble ()) ĊĊĠĠĠĠĠ Ġpromise . resolve ( context Info ) ĊĠĠĠ Ġ} ĊĊĠ Ġfun Ġget Ref errer ( activity : ĠActivity ): ĠUri ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP _ MR 1 ) Ġ{ ĊĠĠĠĠĠ Ġactivity . referrer ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġtrack Deep Links ( intent : ĠIntent ?) Ġ{ ĊĠĠĠ Ġif Ġ( intent Ġ== Ġnull Ġ|| Ġintent . data Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠLog . d ( name , Ġ" No ĠIntent Ġdata Ġfound ") ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġproperties Ġ= ĠHashtable < String , ĠString >() ĊĊĠĠĠ Ġif Ġ( current Activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠLog . d ( name , Ġ" No Ġactivity Ġfound ") ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġref errer Ġ= Ġget Ref errer ( current Activity !! ) ĊĊĠĠĠ Ġif Ġ( referrer Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġreferring Application Ġ= Ġref errer . toString () ĊĠĠĠĠĠ Ġproperties [" ref erring _ application "] Ġ= Ġreferring Application ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġuri Ġ= Ġintent . data ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġproperties [" url "] Ġ= Ġuri . toString () ĊĠĠĠĠĠ Ġfor Ġ( parameter Ġin Ġuri !!. query Parameter Names ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġuri . getQuery Parameter ( parameter ) ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġvalue . trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ}. isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġproperties [ parameter ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġ// Ġhandle Ġerror ĊĠĠĠĠĠ ĠLog . d ( name , Ġ" Error Ġgetting ĠURL : Ġ${ e . message }") ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠLog . d ( name , Ġ" Sending ĠDee plink Ġdata Ġto Ġstore : Ġuri =${ uri }, Ġref errer =${ referrer }") ĊĠĠĠ Ġval Ġso vr an Ġ= Ġ( current Activity ?. application Ġas ĠReact Application ) ĊĠĠĠĠĠ Ġ? . react Native Host ĊĠĠĠĠĠ Ġ? . react Instance Manager ĊĠĠĠĠĠ Ġ? . current React Context ĊĠĠĠĠĠ Ġ? . get Native Module ( S ov ran Module :: class . java ) ĊĠĠĠ Ġso vr an ?. dispatch (" add - deep Link - data ", Ġproperties ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Activity Result ( activity : ĠActivity ?, Ġrequest Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠ Ġ// ĠDo Ġnothing ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ?) Ġ{ ĊĠĠĠ ĠLog . d ( name , Ġ" on New Intent Ġ= Ġ${ intent }") ĊĠĠĠ Ġtrack Deep Links ( intent ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Host Resume () Ġ{ ĊĠĠĠ Ġif Ġ( current Activity Ġ!= Ġnull Ġ&& Ġis Col d Launch ) Ġ{ ĊĠĠĠĠĠ Ġis Col d Launch Ġ= Ġfalse ĊĠĠĠĠĠ ĠLog . d ( name , Ġ" on Host Resume Ġ= Ġ${ current Activity !!. intent }") ĊĠĠĠĠĠ Ġtrack Deep Links ( current Activity !!. intent ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Host Pause () Ġ{ ĊĠĠĠ Ġ// ĠDo Ġnothing ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Host Destroy () Ġ{ ĊĠĠĠ Ġis Col d Launch Ġ= Ġtrue ĊĠĠĠ Ġ// ĠDo Ġnothing ĊĠ Ġ} Ċ } Ċ