package Ġio . connect . wifi . sdk Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . wifi . Wifi Manager Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Keep Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġio . connect . wifi . sdk . activity . Activity Helper Ċ import Ġio . connect . wifi . sdk . data . Session Data Ċ import Ġio . connect . wifi . sdk . internal . Log Utils Ċ import Ġio . connect . wifi . sdk . session . Session Executor Ċ import Ġio . connect . wifi . sdk . util . Device Dump Ċ import Ġjava . lang . Exception Ċ import Ġjava . lang . ref . Soft Reference Ċ Ċ /** Ċ Ġ* ĠConnect Ġto Ġwifi Ġcommand Ċ Ġ*/ Ċ class ĠW ifi Session Ġprivate Ġconstructor ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠContext Ġof Ġcurrent Ġentry Ġpoint Ġof Ġthe Ġapp ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġunique Ġidentifier Ġfor Ġthe Ġpartner Ġaccess Ġto Ġapi Ġfor Ġfetching Ġrules ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠapiKey : ĠString , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġunique Ġidentifier Ġof Ġcurrent Ġuser Ġ( app Ġinstall ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠuserId : ĠString , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġidentifier Ġfor Ġdomain Ġname Ġserver Ġof Ġthe ĠAPI ĠSmart WiFi ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġapi Domain : ĠString , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġidentifier Ġof Ġthe Ġchannel ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġchannel Id : ĠInt , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġidentifier Ġof Ġthe Ġproject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠprojectId : ĠInt , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnable / disable Ġinternal Ġdelivery Ġof Ġsuccess Ġcallbacks ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġauto Deliver Success Callback : ĠBoolean , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġcallback Ġfor Ġstatus Ġchanges ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcallback : ĠW ifi Session Callback ?, ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠH older Ġof Ġactivity Ġreference . ĠUsed Ġwhen Ġcontext Ġis Ġno Ġinstance Ġof Ġactivity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġactivity Helper : ĠActivity Helper ? Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġ* ĠCheck ĠOn ĠWiFi Module ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġis Wifi Enabled ( context : ĠContext ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( context . application Context . getSystem Service ( Context . WIFI _ SERVICE ) Ġas ĠW ifi Manager ). is Wifi Enabled ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSC AN _ WIFI _ REQUEST _ CODE Ġ= Ġ 1 2 3 4 5 ĊĊĠĠĠĠĠĠĠ Ġval Ġpermissions Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ NETWORK _ STATE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ WIFI _ STATE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . CHANGE _ WIFI _ STATE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġsession : ĠSession Executor ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitialization ĠSession Executor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Session Executor () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( session Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠSession Data ( apiKey , Ġapi Domain , Ġchannel Id , ĠprojectId , ĠuserId , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdump Ġ= ĠDevice Dump ( context ). getData Dump () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Utils . debug ("[ Wifi Session ] ĠGet Ġsession Ġconfig :\ n data :$ data \ nd ump :$ dump ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Ġ= ĠSession Executor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdump , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Helper , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Deliver Success Callback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġsession Ġconfig Ġfor Ġcurrent Ġdevice Ġdump Ġ& Ġuser Ġsettings Ġ( apiKey , ĠuserId , Ġchannel Id , ĠprojectId ) ĊĠĠĠĠ Ġ* Ġsave Ġconfig Ġto Ġcache ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Session Config () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Utils . debug ("[ Wifi Session ] ĠGet Ġsession Ġconfig ") ĊĠĠĠĠĠĠĠ Ġinit Session Executor () ĊĠĠĠĠĠĠĠ Ġsession ?. request Configs () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBegin Ġconnection Ġsession Ġby Ġconfig Ġfrom Ġcache ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart Session () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Utils . debug ("[ Wifi Session ] ĠStart Ġsession ") ĊĠĠĠĠĠĠĠ Ġinit Session Executor () ĊĠĠĠĠĠĠĠ Ġcheck And Start Scan Wifi () Ġ// old Ġsession ?. start Connection () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck And Start Scan Wifi () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWith ĠAndroid ĠLevel Ġ>= Ġ 2 3 , Ġyou Ġhave Ġto Ġask Ġthe Ġuser Ġfor Ġpermission Ġto ĠCall . ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M Ġ&& ĠBuild . VERSION . SDK _ INT Ġ<= ĠBuild . VERSION _ CODES . Q ) Ġ{ Ġ// Build . VERSION _ CODES . P Ġ 2 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Permissions Needed : ĠMutable List < String > Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( p Ġin Ġpermissions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠContext Compat . check Self Permission ( context , Ġp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Permissions Needed . add ( p ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġfor Ġpermissions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Permissions Needed . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( context Ġas ? ĠActivity )?. let Ġ{ Ġactivity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRequest Ġpermissions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Permissions Needed . to Typed Array (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC AN _ WIFI _ REQUEST _ CODE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Permissions ĠAlready ĠGr anted ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsession ?. start Connection () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠArray < String >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSC AN _ WIFI _ REQUEST _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġrequest Ġis Ġcancelled , Ġthe Ġresult Ġarrays Ġare Ġempty . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results . size Ġ> Ġ 0 Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpermission Ġwas Ġgranted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Session () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPermission Ġdenied , Ġb oo ! ĠDisable Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfunctionality Ġthat Ġdepends Ġon Ġthis Ġpermission . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck And Start Scan Wifi () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel Ġexisting Ġsession Ġif Ġyou Ġwant Ġinterrupt Ġconnect Ġto Ġwifi . ĊĠĠĠĠ Ġ* ĠThis Ġwill Ġnot Ġdisconnect Ġus Ġfrom Ġwifi . ĠThis Ġis Ġfor Ġstopping Ġconnection Ġattempt ĊĠĠĠĠ Ġ* Ġif Ġany Ġstill Ġprocessing Ġ( we Ġdon 't Ġhave Ġsuccess Ġor Ġfail Ġresponse ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcancel Session () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Utils . debug ("[ Wifi Session ] ĠCancel Ġsession ") ĊĠĠĠĠĠĠĠ Ġsession ?. cancel () ĊĠĠĠĠĠĠĠ Ġsession Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Keep ĊĠĠĠ Ġdata Ġclass ĠBuilder ( ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠContext Ġof Ġcurrent Ġentry Ġpoint Ġof Ġthe Ġapp ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġunique Ġidentifier Ġfor Ġthe Ġpartner Ġaccess Ġto Ġapi Ġfor Ġfetching Ġrules ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar ĠapiKey : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġunique Ġidentifier Ġof Ġcurrent Ġuser Ġ( app Ġinstall ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar ĠuserId : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġidentifier Ġfor Ġdomain Ġname Ġserver Ġof Ġthe ĠAPI ĠSmart WiFi ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġapi Domain : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġidentifier Ġof Ġthe Ġchannel ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġchannel Id : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġidentifier Ġof Ġthe Ġproject ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar ĠprojectId : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠEnable / disable Ġinternal Ġdelivery Ġof Ġsuccess Ġcallbacks ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġauto Deliver Success Callback : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġcallback Ġfor Ġstatus Ġchanges ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġcallback : ĠW ifi Session Callback ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠH older Ġof Ġactivity Ġreference . ĠUsed Ġwhen Ġcontext Ġis Ġno Ġinstance Ġof Ġactivity ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġactivity Helper : ĠActivity Helper ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġunique Ġidentifier Ġfor Ġthe Ġpartner Ġaccess Ġto Ġapi Ġfor Ġfetching Ġrules ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠapiKey ( apiKey : ĠString ) Ġ= Ġapply Ġ{ Ġthis . apiKey Ġ= ĠapiKey Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġunique Ġidentifier Ġof Ġcurrent Ġuser Ġ( app Ġinstall ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠuserId ( userId : ĠString ) Ġ= Ġapply Ġ{ Ġthis . userId Ġ= ĠuserId Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġidentifier Ġfor Ġdomain Ġname Ġserver Ġof Ġthe ĠAPI ĠSmart WiFi ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġapi Domain ( api Domain : ĠString ) Ġ= Ġapply Ġ{ Ġthis . api Domain Ġ= Ġapi Domain Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġidentifier Ġof Ġthe Ġchannel ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġchannel Id ( channelId : ĠInt ) Ġ= Ġapply Ġ{ Ġthis . channelId Ġ= Ġchannel Id Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġidentifier Ġof Ġthe Ġproject ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠprojectId ( projectId : ĠInt ) Ġ= Ġapply Ġ{ Ġthis . projectId Ġ= ĠprojectId Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠEnable / disable Ġinternal Ġdelivery Ġof Ġsuccess Ġcallbacks ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġauto Deliver Success Callback ( auto Deliver Success Callback : ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ Ġthis . auto Deliver Success Callback Ġ= Ġauto Deliver Success Callback Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġcallback Ġfor Ġstatus Ġchanges ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġstatus Callback ( callback : ĠW ifi Session Callback ) Ġ= Ġapply Ġ{ Ġthis . callback Ġ= Ġcallback Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġcallback Ġfor Ġstatus Ġchanges ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġactivity Helper ( activity Helper : ĠActivity Helper ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ Ġthis . activity Helper Ġ= Ġactivity Helper Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġcreate Ġnew ĠW ifi Session Ġinstance Ġwith Ġprovided Ġearlier Ġdata ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW ifi Session ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠapiKey . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Domain , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprojectId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Deliver Success Callback , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Helper ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠListener Ġfor Ġsession Ġstatus Ġchanges Ċ Ġ*/ Ċ @ Keep Ċ interface ĠW ifi Session Callback Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStatus Ġhad Ġchanged ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Status Changed ( new Status : ĠWiFi Session Status ) Ċ } Ċ Ċ /** Ċ Ġ* ĠStatus Ġfor Ġconnection Ġsession Ċ Ġ*/ Ċ sealed Ġclass ĠWiFi Session Status Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequest ing Ġremote Ġrules Ġfor Ġcurrent Ġuser Ġ& Ġit 's Ġdevice ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Keep ĊĠĠĠ Ġobject ĠRequest Configs Ġ: ĠWiFi Session Status () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Request Configs " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWe Ġreceived Ġwifi Ġrules ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Keep ĊĠĠĠ Ġobject ĠReceived Configs Ġ: ĠWiFi Session Status () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Received Configs " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWe Ġnow Ġin Ġthe Ġprocess Ġof Ġconnecting Ġto Ġwifi ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Keep ĊĠĠĠ Ġobject ĠConnect ing Ġ: ĠWiFi Session Status () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Connecting " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWe Ġhad Ġsent Ġthe Ġwifi Ġconnection Ġrequest Ġto Ġdevice 's ĠOS Ġ& Ġhad Ġreceived Ġpositive Ġresponse . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Keep ĊĠĠĠ Ġobject ĠSuccess Ġ: ĠWiFi Session Status () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Success " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThere 's Ġan Ġfailure . ĠSee Ġreason Ġfor Ġexplanation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Keep ĊĠĠĠ Ġdata Ġclass ĠError ( val Ġreason : ĠException ) Ġ: ĠWiFi Session Status () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCurrent Ġsession Ġhad Ġbeen Ġcanceled Ġby Ġuser Ġrequest . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Keep ĊĠĠĠ Ġobject ĠCancel Session Ġ: ĠWiFi Session Status () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Cancel Session " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¡ on nection Ġby Ġlink Ġstarted . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Keep ĊĠĠĠ Ġdata Ġclass ĠConnection By Link Send ( val Ġurl : ĠString ) Ġ: ĠWiFi Session Status () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Connection By Link Send " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¡ on nection Ġby Ġlink Ġis Ġsuccessful . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Keep ĊĠĠĠ Ġdata Ġclass ĠConnection By Link Success ( val Ġresponse : ĠString ?) Ġ: ĠWiFi Session Status () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠUn successful Ġwifi Ġpoint Ġsearch ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Keep ĊĠĠĠ Ġdata Ġclass ĠNotFound WiFi Point ( val Ġss id : ĠString ?) Ġ: ĠWiFi Session Status () Ċ Ċ }