package Ġ` in `. new dev point . autos ms . verification . auto _ sms _ verification Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . util . Log Ċ import Ġandroidx . annotation . NonNull Ċ import Ġcom . google . android . gms . auth . api . phone . Sms Retriever Ċ Ċ import Ġio . flutter . embedding . engine . plugins . Flutter Plugin Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Method Channel . MethodCall Handler Ċ import Ġio . flutter . plugin . common . Method Channel . Result Ċ Ċ /** ĠAuto Sms Verification Plugin Ġ*/ Ċ class ĠAuto Sms Verification Plugin Ġ: ĠFlutter Plugin , ĠMethod Call Handler , ĠMy Sms Listener Ġ{ ĊĠĠĠ Ġ/// ĠThe ĠMethod Channel Ġthat Ġwill Ġthe Ġcommunication Ġbetween ĠFlutter Ġand Ġnative ĠAndroid ĊĠĠĠ Ġ/// ĊĠĠĠ Ġ/// ĠThis Ġlocal Ġreference Ġserves Ġto Ġregister Ġthe Ġplugin Ġwith Ġthe ĠFlutter ĠEngine Ġand Ġunregister Ġit ĊĠĠĠ Ġ/// Ġwhen Ġthe ĠFlutter ĠEngine Ġis Ġdet ached Ġfrom Ġthe ĠActivity ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġchannel : ĠMethod Channel ĊĊĠĠĠ Ġprivate Ġvar Ġm Result : ĠResult ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġreceiver : ĠS ms Broadcast Receiver ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġalready Called Sms Retrieve Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Engine (@ NonNull Ġflutter Plugin Binding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchannel Ġ= ĠMethod Channel ( flutter Plugin Binding . binary Messenger , Ġ" auto _ sms _ verification ") ĊĠĠĠĠĠĠĠ Ġchannel . set MethodCall Handler ( this ) ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġflutter Plugin Binding . application Context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" app Signature " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignature Ġ= ĠApp Signature Helper ( this . context ). getApp Signatures ()[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( signature ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" start Listening " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . m Result Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Ġ= ĠS ms Broadcast Receiver () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Listening () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop Listening " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalready Called Sms Retrieve Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunregister () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġresult . not Implemented () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Engine (@ NonNull Ġbinding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchannel . set MethodCall Handler ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Listening () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠS ms Retriever . getClient ( this . context Ġ/* Ġcontext Ġ*/) ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġclient . start Sms Retriever () ĊĠĠĠĠĠĠĠ Ġtask . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSuccessfully Ġstarted Ġretrie ver , Ġexpect Ġbroadcast Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( java Class :: getSimpleName . name , Ġ" task Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver ?. set Sms Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . context . register Receiver ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent Filter ( Sms Retriever . SMS _ RE TR IE VED _ ACTION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġunregister () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . context . unregister Receiver ( receiver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon O tp Received ( message : ĠString ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmessage ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! already Called Sms Retrieve ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Result ?. success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalready Called Sms Retrieve Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon O tp Timeout () Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ