본문 바로가기
안드로이드

Sharedpreferences 사용해서 자동로그인 기능 추가하기! 1편 (Kotlin)

by 개발_블로그 2021. 10. 12.
반응형

개발을 하다보면 간단한 값을 저장하고 꺼내와야할 때가 있다. 

간단한 저장을 하고 꺼내와야되는데 서버와의 통신을 통해 DB에서 꺼내오는 것은 조금 낭비라는 생각이 든다 . 

그럴때 쓰는 것이 바로 Sharedpreferences다 

 

먼저 Sharedpreferences란?? 

 

SharedPreferences는 안드로이드에서 Map과 같이 key-value 방식으로 간단하게 데이터를 저장하는 방식이다.
SharedPreferences의 장점은 구현이 쉬우면서 app이 재부팅되도 데이터가 유지된다는 점이다.

하지만 앱을 삭제할 시에 데이터들이 삭제가 된다는 점은 유의하자! 

 

중요한것은 key -value 방식이라는 것이다 . 

key-value 방식을 사용하는 이유? (개인적인 생각)

우리가 어떤 방(value)에 문을 열기위해서는 key가 필요하다 . 방이 여러개고 key도 여러개인데

약 key가 똑같이 생겼다면?? 

어떤 key를 써서 방문을 열어야될지 난감할 것 이다. 방을 헷갈리지않고 잘 찾게하기위해 key-value

방식을 사용한다. 때문에 key 이름을 잘 설정하는것이 중요하다 

 

내가 shared를 사용한 부분은 자동로그인 부분이다 . 

구현방법은 많이 있지만 아주아주 간단하게 구현을 해보도록 하겠다. 

 

순서는 sharedpreferences 객체를 선언하고 key를 설정해준다

그 다음 edit 객체를선언하고 (edit 객체는 추가, 수정, 삭제를 할 수 있다.)

edit객체를 설정했으면 shared 에다가 저장할 변수들을 넣어주면 된다. 

마지막으로 apply()를 사용하여 적용을 해주면 끝이다. (apply 안해주면 저장안됨!)

저장을 할 변수들도 key-value 방식으로 저장을 해줘야된다. 

 

먼저 함수를 만들어보자 이름은 saveData라고 하고 파라미터에 로그인 Email값을 넣어준다 . 

(참고 = putString 뿐만 아니라 int, boolean 등 다양하게 저장할 수 있다! )

    fun saveDate( loginEmail :String ){
        val pref =getSharedPreferences("userEmail", MODE_PRIVATE) //shared key 설정
        val edit = pref.edit() // 수정모드
        edit.putString("email", loginEmail) // 값 넣기
        edit.apply() // 적용하기
    }

위의 함수를 만들어줬다면 로그인시에 로그인이 성공을 하였다면 저 메소드를 넣어준다. 

   //아이디와 비밀번호를 어느 editText에 입력을 했다치고 설명을 하겠다! ^^
   
   loginButton.setOnClickListener {
   		val Email = et_email.text.toString() 
            ///어쩌고 저쩌고 로그인 성공!
            saveData(Email)
   }

이렇게 해주면 자신의 로컬(Device)의 내부저장소에 email 아이디가 저장이 된것을 확인 할 수 있다. 

확인방법 ! 안드로이드 스튜디오의 오른쪽에 devicefile explorer를 누르고

 data/data/어플리케이션 패키지 이름/shared_prefs/shared객체 key 값/  파일을 찾아가면된다. 

 

 

하면 이런식으로 저장이 된것을 확인할 수 있다. 마찬가지로 저장할 때 "email" 이란 key값으로 저장된것을 확인 할 수

있다.

<map>
    <string name="email">hyun19@gmail.com</string>
</map>

 

다음시간에 shared로 저장한 것을 꺼내와서 자동 로그인하는것을 마저 설명하도록 하겠다! 

반응형