파이어베이스를 기반으로한 테스트용 채팅 앱구현 Android Chatting Test App based on Firebase with Kotlin(3)

 

 

나.이.만.나도 이제 만날래!

셀소 방식의 신개념 파티앱이에요 당신의 인연. 더 이상 미룰 수 없어요!!!! 셀프 소개팅, 미팅룸을 열고 참여하여 내 인연을 스스로 만들어가요. 내가 선택한 장소에서 직접 파티 룸을 열어 셀

vlm-naiman.tistory.com

 

 

(2)에서는 login_activity를 코틀린 파일로 변환하였다

 

(3)에서는 파이어베이스에 아이디를 sign in 하고 log in 하여 main_activity에 접근하는 코드를 재설계한다.

 

먼저 (2)에서 만들었던 액티비티를 매니페스트에 추가하고, 퍼미션도 넣어준다. 그결과는 아래와같다. 

activity_splash.xml를 복사하고 스플래쉬의 자바파일도 코틀린으로 변환해준다.

drawable의 이미지는 적당한 이미지를 아무것이나 넣자. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
    package="com.example.fbchattingtest">
 
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
 
        <activity
            android:name=".SplashActivity"
            android:label="@string/app_name"
            android:theme="@style/SplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
        </activity>
        <activity android:name=".LoginActivity" />
    </application>
 
</manifest>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

그리고 SplashActivity를 추가해주어 앱시작시 기반앱의 start Main부분을 재설계한다. 아래는 그 코틀린 코드이다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
class SplashActivity : Activity() {
    private val SPLASH_DISPLAY_LENGTH = 100
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash)
 
        window.setFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN
        )
 
        val firestore = FirebaseFirestore.getInstance()
        val settings = FirebaseFirestoreSettings.Builder().build()
        firestore.firestoreSettings = settings
 
        Handler().postDelayed({
            var mainIntent: Intent? = null
            mainIntent = if (FirebaseAuth.getInstance().currentUser == null) {
                Intent(this@SplashActivity, LoginActivity::class.java)
            } else {
                Intent(this@SplashActivity, MainActivity::class.java)
            }
 
            this@SplashActivity.startActivity(mainIntent)
            this@SplashActivity.finish()
        }, SPLASH_DISPLAY_LENGTH.toLong())
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

 

이렇게해서 실행하면 이제 아래와 같이 로그인페이지 까지 띄울수 있다.

 

 

회원가입을 위해서 파이어베이스 콘솔 인증 페이지에가서 아래를 세팅해준다.

 

아래와 같이  허용해준다.

 

 

 

Sign in 버튼을 누르면 아래와 같이 Authentication 부분에 데이터가 들어오는 것을 확인할 수있다.

 

 

콘솔을 확인해보니, Firebase에서 비밀번호 길이나 문자열 선택등의 옵션등을 바꾸는 기능은 아직 없는 것 같다. 아직은, 제공해준 포맷으로 이메일 인증을 사용해야하는 것같다.

 

아무튼 (1) (2) 에서의 코드로 간단히 회원가입이 가능하고 이를 통해 로그인도 가능하다.

 

 

아래와 같이 collectionPath의 이름도 바꾸고 데이터도 한개 추가해보았다.

 

 

위와 같이 user2로 바꾸고 userModel에도 항목을 하나 추가하면 어떻게 될까?

그결과는 아래와 같이 데이터가 잘 들어오는 것을 확인할 수 있다.

 

 

 

Firebase db는 아주 자유자재로 데이터를 받아들이는 것같다... 넣는대로 다 들어가나봄..

 

아무튼, signInWithEmailAndPassword 메소드가 요구하는건 패스워드와 이메일인데,  dbPath가 다르더라도 인증란에 등록된 애는 하나로 관리 되도록 되어있다. db를 따로 만든 것은 아마 UID를 통해 db로 접근하는 구조로 만들기 위해서 인것 같다.

 

 

 

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유