본문 바로가기

안드로이드

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

728x90

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

간단한 저장을 하고 꺼내와야되는데 서버와의 통신을 통해 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로 저장한 것을 꺼내와서 자동 로그인하는것을 마저 설명하도록 하겠다!