/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 2 1 ĠF U JIT SU ĠCLO UD ĠTE CH NO LOG IES ĠLIMITED ĠAll ĠRights ĠReserved . Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* Ġhttp :// 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 Ġcom . n if cloud . mb a as . core Ċ import Ġcom . n if cloud . mb a as . core . N CM B Local File . check N CM B Context Ċ import Ġcom . n if cloud . mb a as . core . N CM B Local File . create Ċ import Ġcom . n if cloud . mb a as . core . N CM B Local File . readFile Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġjava . util .* Ċ import Ġcom . google . android . gms . tasks . On Canceled Listener Ċ import Ġcom . google . android . gms . tasks . On Complete Listener Ċ import Ġcom . google . firebase . Firebase App Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Ċ import Ġjava . io . IOException Ċ import Ġjava . util . Arrays ĊĊ Ċ /** Ċ Ġ* ĠInstallation Ġinformation Ġhandle Ġclass Ċ Ġ* Ċ Ġ* ĠN CM B Installation Ġis Ġused Ġto Ġretrieve Ġand Ġsave , Ġupdate Ġthe Ġinstallation Ġdata . Ċ Ġ* ĠBasic Ġfeatures Ġare Ġinherit Ġfrom ĠN CM B Object Ġand ĠN CM B Base Ċ Ġ*/ Ċ class ĠN CM B Installation Ġ: ĠN CM B Object Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApplication Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġapplication Name : ĠString ? ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġapplication Ġname ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġapplication Ġname ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Fields . isNull ( APPLICATION _ NAME )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġm Fields . getString ( APPLICATION _ NAME ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( e . message )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġapplication Ġname ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġapplication Name ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fields . put ( APPLICATION _ NAME , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Update Keys . add ( APPLICATION _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( e . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApplication ĠVersion ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġapp Version : ĠString ? ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġapplication Ġversion ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġapplication ĠVersion ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Fields . isNull ( APP _ VERSION )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġm Fields . getString ( APP _ VERSION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġapplication Ġversion ĊĠĠĠĠĠĠĠĠ Ġ* ĠReadOnly Ġfield ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġapp Version ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fields . put ( APP _ VERSION , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Update Keys . add ( APP _ VERSION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBadge Ġnumber Ġ( iOS ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġbadge : ĠInt ? ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġbadge Ġcount ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġbadge Ġcount ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Fields . isNull ( BAD GE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġm Fields . getInt ( BAD GE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġbadge Ġcount ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġapplication Name ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fields . put ( BAD GE , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Update Keys . add ( BAD GE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChannels Ġinformation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġchannels : ĠArray < String >? ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġchannels ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġchannels ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Fields . isNull ( CHANNEL S )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠarrayOf ( m Fields . getString ( CHANNEL S )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġchannels ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġchannels ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fields . put ( CHANNEL S , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Update Keys . add ( CHANNEL S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDevice Ġtype Ġinformation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġdevice Type : ĠString ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġdevice Ġtype ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġdevice Ġtype ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Fields . isNull ( DEVICE _ TYPE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġm Fields . getString ( DEVICE _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġdevice Ġtype ĊĠĠĠĠĠĠĠĠ Ġ* ĠReadOnly Ġfield ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġdevice Ġtype ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fields . put ( DEVICE _ TYPE , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Update Keys . add ( DEVICE _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDevice Ġtoken ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġdevice Token : ĠString ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġdevice Ġtoken ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġdevice Ġtoken ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Fields . isNull ( DEVICE _ TOKEN )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġm Fields . getString ( DEVICE _ TOKEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġdevice Ġtoken ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġdevice Ġtoken ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fields . put ( DEVICE _ TOKEN , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Update Keys . add ( DEVICE _ TOKEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSDK ĠVersion Ġinformation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġsdk Version : ĠString ? ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet ĠSDK Ġversion ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠSDK Ġversion ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Fields . isNull ( SDK _ VERSION )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġm Fields . getString ( SDK _ VERSION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet ĠSDK Ġversion ĊĠĠĠĠĠĠĠĠ Ġ* ĠReadOnly Ġfield ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠSDK version ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fields . put ( SDK _ VERSION , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Update Keys . add ( SDK _ VERSION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTime zone Ġinfo ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtime Zone : ĠString ? ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġtimezone ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtimezone ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Fields . isNull ( TIME _ ZONE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġm Fields . getString ( TIME _ ZONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġtimezone ĊĠĠĠĠĠĠĠĠ Ġ* ĠReadOnly Ġfield ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġtimezone ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fields . put ( TIME _ ZONE , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Update Keys . add ( TIME _ ZONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġcustom Ġfield Ġvalue ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġfield Ġname ĊĠĠĠĠ Ġ* Ġ@ return Ġfield Ġvalue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetValue ( name : ĠString ?): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Fields . isNull ( name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġm Fields . get ( name ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( error . message )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor Ġmethod ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor () Ġ: Ġsuper (" installation ") Ġ{ ĊĠĠĠĠĠĠĠ Ġm Ignore Keys Ġ= Ġignore Keys ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor Ġfrom ĠJSON ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġparams Ġparams Ġsource ĠJSON ĊĠĠĠĠ Ġ* Ġ@ throws ĠN CM B Exception ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġconstructor ( params : ĠJSONObject ) Ġ: Ġsuper (" installation ", Ġparams ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Ignore Keys Ġ= Ġignore Keys ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSave Ġinstallation Ġobject ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠN CM B Exception Ġexception Ġfrom ĠN IF CLOUD Ġmobile Ġbackend ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( N CM B Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġsave (){ ĊĠĠĠĠĠĠĠ Ġ// connect ĊĠĠĠĠĠĠĠ Ġval Ġinstallation Service Ġ= ĠN CM B Installation Service () ĊĠĠĠĠĠĠĠ Ġval Ġresponse Data : ĠJSONObject ĊĠĠĠĠĠĠĠ Ġif Ġ( getObject Id () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// new Ġcreate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// response Data Ġ= Ġinstallation Service . create Installation ( local Device Token , Ġm Fields ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// update ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġupdate Json : ĠJSONObject ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Json Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Update Json Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// response Data Ġ= Ġinstallation Service . update Installation ( getObject Id (), Ġupdate Json ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// local Data Ġ= Ġresponse Data ĊĠĠĠĠĠĠĠ Ġm Update Keys . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSave Ġinstallation Ġobject Ġin ĠBackground ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcallback ĠSave ĠCallback ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġsave In Background ( save Callback : ĠN CM B Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// connect ĊĠĠĠĠĠĠĠ Ġval Ġinstallation Service Ġ= ĠN CM B Installation Service () ĊĠĠĠĠĠĠĠ Ġval Ġobject Id Ġ= Ġget ObjectId () ĊĠĠĠĠĠĠĠ Ġif Ġ( objectId Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdevice Token Ġ= Ġdevice Token ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( device Token Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// new Ġcreate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstallation Service . save Installation In Background ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Token , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . create Register Json Data (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Callback ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException (" registration Id Ġis Ġmust Ġnot Ġbe Ġnull .")); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// update ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Json Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Update Json Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException ( e . message )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstallation Service . update Installation In Background ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Json , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Callback ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Callback . done ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN CM B Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġdevice Ġtoken Ġin Ġbackground ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcallback ĠToken Callback ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Device Token In Background ( callback : ĠN CM B Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠDevice Token Callback Queue . instance ĊĠĠĠĠĠĠĠ Ġif ( instance Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance . is During Save Installation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance . add Queue ( callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠN CM B . getCurrent Context () ĊĠĠĠĠĠĠĠ Ġif ( context Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Firebase App . get Apps ( context . application Context ). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . done ( N CM B Exception ( IOException ( CAN NOT _ GET _ DEVICE _ TOKEN _ MESSAGE ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdevice Token Ġ= Ġdevice Token ĊĠĠĠĠĠĠĠ Ġif Ġ( device Token Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . done ( null , Ġdevice Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget Device Token Internal Process ( callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġdevice Ġtoken Ġ( Internal ĠProcess ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcallback ĠToken Callback ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġget Device Token Internal Process ( callback : ĠN CM B Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠN CM B . getCurrent Context () ĊĠĠĠĠĠĠĠ Ġif ( context != Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Firebase App . get Apps ( context . application Context ). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Messaging . getInstance (). token ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . done ( N CM B Exception ( IOException ( CAN NOT _ GET _ DEVICE _ TOKEN _ MESSAGE ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// return @ On Complete Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . done ( null , Ġtask . result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġnew ĠF CM Ġregistration Ġtoken ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). add On Canceled Listener ( On Canceled Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Canceled () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . done ( N CM B Exception ( IOException ( CAN NOT _ GET _ DEVICE _ TOKEN _ MESSAGE ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . done ( N CM B Exception ( IOException ( CAN NOT _ GET _ DEVICE _ TOKEN _ MESSAGE ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAP PLICATION _ NAME Ġ= Ġ" application Name " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAPP _ VERSION Ġ= Ġ" app Version " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBAD GE Ġ= Ġ" badge " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHAN NEL S Ġ= Ġ" channels " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEVICE _ TYPE Ġ= Ġ" device Type " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEVICE _ TOKEN Ġ= Ġ" device Token " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSDK _ VERSION Ġ= Ġ" sdk Version " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTIME _ ZONE Ġ= Ġ" time Zone " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP USH _ TYPE Ġ= Ġ" push Type " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAND ROID Ġ= Ġ" android " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠF CM Ġ= Ġ" fc m " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġcurrent Installation ĠfileName ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠINSTALL ATION _ FILENAME Ġ= Ġ" current Installation " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġchannels Ġfolder ĠName ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHAN NEL S _ FOLDER _ NAME Ġ= Ġ" channels " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġrequest Ġcode ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠP LAY _ SERVICES _ RESOL UTION _ REQUEST Ġ= Ġ 9 0 0 0 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġcannot Ġget Ġdevice Ġtoken Ġmessage ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCAN NOT _ GET _ DEVICE _ TOKEN _ MESSAGE Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can Ġnot Ġget Ġdevice Ġtoken , Ġplease Ġcheck Ġyour Ġgoogle - service . json " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġpush Ġdevice ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġignore Keys Ġ= ĠArrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" objectId ", Ġ" application Name ", Ġ" app Version ", Ġ" badge ", Ġ" channels ", Ġ" device Token ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" device Type ", Ġ" sdk Version ", Ġ" time Zone ", Ġ" create Date ", Ġ" update Date ", Ġ" acl ", Ġ" push Type " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġcurrent Ġinstallation Ġobject ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠN CM B Installation Ġobject Ġthat Ġis Ġcreated Ġfrom Ġdata Ġthat Ġis Ġsaved Ġto Ġlocal Ġfile .< br ></ br > ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġlocal Ġfile Ġis Ġnot Ġavailable , Ġit Ġreturns Ġempty ĠN CM B Installation Ġobject ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Installation : ĠN CM B Installation Ġ= ĠN CM B Installation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( field . getObject Id () Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstallation Service Ġ= ĠN CM B Installation Service () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġinstallation Service . getCurrent Installation FromFile () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠN CM B Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( N CM B Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfetch () Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobject Id Ġ= Ġget ObjectId () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstallation Service Ġ= ĠN CM B Installation Service () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( objectId Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstallation Service . fetch Installation ( this , Ġobject Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException (" objectId Ġis Ġmust Ġnot Ġbe Ġnull .")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( N CM B Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfetch In Background ( fetch Callback : ĠN CM B Callback ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobject Id Ġ= Ġget ObjectId () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstallation Service Ġ= ĠN CM B Installation Service () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( objectId Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstallation Service . fetch Installation In Background ( this , Ġobject Id , Ġfetch Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException (" objectId Ġis Ġmust Ġnot Ġbe Ġnull .")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġsave Ġcurrent ĠN CM B Object Ġto Ġdata Ġstore ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠN CM B Exception Ġexception Ġfrom ĠN IF CLOUD Ġmobile Ġbackend ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Throws ( N CM B Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdelete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobject Id Ġ= Ġget ObjectId () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstallation Service Ġ= ĠN CM B Installation Service () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( objectId Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstallation Service . delete Installation ( objectId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠN CM B Exception ( IllegalArgumentException (" objectId Ġis Ġmust Ġnot Ġbe Ġnull .")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( N CM B Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdelete In Background ( delete Callback : ĠN CM B Callback ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobject Id Ġ= Ġget ObjectId () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstallation Service Ġ= ĠN CM B Installation Service () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( objectId Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstallation Service . delete Installation In Background ( objectId , Ġdelete Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Callback . done ( N CM B Exception ( IllegalArgumentException (" objectId Ġis Ġmust Ġnot Ġbe Ġnull . "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ