Realtime Database

(실시간 데이터베이스)




파이어베이스에서 제공하는 많은 기능들 중,

실시간 데이터베이스의 기능을 실습해보자

예제는 간단하게 유저의 정보를 입력하는 것이다.






우선 데이터 베이스의 기능을 앱 수준의 gradle에 추가해야한다.

다음과 같이 dependencies안에 데이터베이스를 컴파일 해준다.







다음으로 파이어베이스 콘솔 페이지에서 읽기/쓰기 권한을 모두 true로 변경한다

권한은 Realtime Database에서 설정할 수 있다.

이로써 데이터베이스 사용에 대한 준비가 모두 끝났다.

바로 소스를 보면서 분석을 시작한다.





 

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
39
40
41

 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
 
public class MainActivity extends AppCompatActivity {
 
    private DatabaseReference mDatabase;
    private TextView textView;
    private Button button;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        textView = (TextView)findViewById(R.id.text);
        button = (Button)findViewById(R.id.button);
 
        mDatabase = FirebaseDatabase.getInstance().getReference();
 
        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                writeNewUser("1234","NEW","newnewenw@naver.com");
            }
        });
    }
 
    private void writeNewUser(String userId, String name, String email) {
        User user = new User(name, email);
 
        mDatabase.child("users").child(userId).setValue(user);
    }
}
cs


버튼을 클릭하면 이벤트가 발생하며 파이어 베이스로 데이터를 전송하게 된다.

이때 전송된 데이터는 JSON으로 변환되어 저장되므로 유의한다.

데이터 저장을 위해서는 구글에서 제공하는 Firebase 패키지를 import 해줘야한다.

다음은 유저의 정보를 저장하는 User Class이다.





 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * Created by new on 2016. 8. 22..
 */
public class User {
 
    public String username;
    public String email;
 
    public User() {
 
    }
 
    public User(String username, String email) {
        this.username = username;
        this.email = email;
    }
 
}
 
cs




생성될 때 기본적인 유저의 정보를 받아, 

이 클래스의 String 값들이 setValue 메소드를 통하여 파이어베이스에 저장된다.

해당 코드를 디바이스에 설치하여 버튼을 눌렀을때 다음과 같이 확인할 수 있다.





저작자 표시
신고


Baas(Backend as a Service)

서비스형 백엔드



규모가 있는 어플리케이션을 런칭하기위하여 백엔드의 개발은 거의 필수적이다.

그러나 서버 구축에 들어가는 시간과 서버 내부의 개별적인 프로그램 사용으로

백앤드의 기술은 초보자에게 결코 쉽지 않다.




이러한 고민을 해결해주는 기술이 바로 서비스형 백엔드이다.

푸시, 위치기반, 접속제한, DB과 같은 백엔드 기술을 구현 할 필요없이

클라우드에 연결함으로써 Baas에서 제공하는 API를 호출하여 사용한다.


소프트웨어 플랫폼을 제공하는 Paas(Platform as a Service)와 비슷하나 

모바일/웹 앱 개발에 특화된 점이 차이점이라고 할 수 있다.


현재 서비스하는 다양한 Baas들이 많지만 구글의 Firebase를 기반으로 설명을 진행하겠다.

예전 Firebase 홈페이지가 있지만 구글에 인수된 후 버전에 변화가 있으므로 아래의 주소로 들어가야한다.


https://firebase.google.com/







개발 환경 설정




firebase 공식 홈페이지에 접속한다.

들어가자마자 메인 화면에 나오는 Get Started For Free를 클릭,

구글 아이디로 로그인하고 시작하자.







콘솔들이 있는 창으로 이동한다. 

현재는 만든 프로젝트가 없으니 아래쪽에 아무 프로젝트도 뜨지 않는다.

중간의 새 프로젝트 만들기 버튼을 클릭한다.






프로젝트 만들기 팝업창이다.

프로젝트 이름을 입력하고 국가/지역을 선택한 후 프로젝트 만들기를 클릭한다.






프로젝트를 만들고 넘어가는 다음 화면에 플랫폼을 추가하는 화면이 등장한다.

Android앱에 Firebase 추가를 눌러준다







자신이 만든 앱의 패키지 이름을 넣고 앱 추가를 누른다.

카카오톡/페이스북 앱 등록과 비슷한 느낌이다.







다음화면으로 넘어가면서 자동으로 google-service.json파일이 다운로드 된다.

이를 복사하여 프로젝트 창의 App폴더에 넣어주도록 하자.







2번째 단계를 완료 후 다음으로 넘어가면 Gradle에 추가해야할 코드들이 나온다

아래 위의 코드가 들어갈 gradle은 다른 파일이다!

1번은 프로젝트 수준 gradle, dependencies에 입력,

2번은 앱 수준의 gradle, 맨 마지막줄에 입력하면 된다.







단, 구글 서비스가 일정 버전 이하면 Sync가 성공적으로 수행되지 않으니

SDK 매니저를 실행하여 최신버전으로 업데이트 하기 바란다.

업데이트 할 목록은 Google Play services와 Google Repository이다.






SDK 매니저를 통하여 업데이트 한다.

업데이트 후 Sync now 를 클릭하면 성공적으로 grable이 등록된다.


이로써 기본적인 Firebase 세팅이 완료되었다.



저작자 표시
신고

카카오톡 로그인 - 2 



이미 만들어져 있는것을 포스팅하는게 아니라

하면서 포스팅하다보니 삽질에 삽질을 반복한다

삽질과 새벽 하드코딩으로 개발 능력이 강화된다는 명언이 있듯이

나의 헛삽질로 만들어진 포스팅이 내가 기억하려고 올리는 이유가 가장 크지만

(그래서 좀 허접함)

 이걸 보고 누군가에게 도움이 될 수 있으면 참 기쁜일이겠다. 



그럼 저번에 이어서 카카오톡 로그인 소스코드를 살펴보도록 하자

소스코드는 크게 4개로 나뉘며 분석은 없으니 알아서 쓰기 바란다.

단말기에서 테스트 완료하였고 복붙 만으로 실행이 될 것이다.

버전은 2016년 1.1.20 기준이다.



카카오톡 로그인 소스코드(JAVA)



LoginActivity.java


 

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package com.example.anew.kakao;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
 
import com.kakao.auth.ISessionCallback;
import com.kakao.auth.KakaoSDK;
import com.kakao.auth.Session;
import com.kakao.util.exception.KakaoException;
import com.kakao.util.helper.log.Logger;
 
/**
 * Created by hp on 2016-01-26.
 */
public class LoginActivity  extends Activity {
 
    private SessionCallback callback;      //콜백 선언
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.activity_login);
 
        callback = new SessionCallback();                  // 이 두개의 함수 중요함
        Session.getCurrentSession().addCallback(callback);
 
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (Session.getCurrentSession().handleActivityResult(requestCode, resultCode, data)) {
            return;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Session.getCurrentSession().removeCallback(callback);
    }
 
    private class SessionCallback implements ISessionCallback {
 
        @Override
        public void onSessionOpened() {
            redirectSignupActivity();  // 세션 연결성공 시 redirectSignupActivity() 호출
        }
        @Override
        public void onSessionOpenFailed(KakaoException exception) {
            if(exception != null) {
                Logger.e(exception);
            }
            setContentView(R.layout.activity_login); // 세션 연결이 실패했을때
        }                                            // 로그인화면을 다시 불러옴
    }
 
    protected void redirectSignupActivity() {       //세션 연결 성공 시 SignupActivity로 넘김
        final Intent intent = new Intent(this, KakaoSignupActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        startActivity(intent);
        finish();
    }
 
}
cs


로그인 초기 화면이다.

 액티비티를 로드하고, 가장 중요한 콜백 함수를 등록한다.

또한 세션 연결 시 다음으로 넘어갈 클래스를 호출한다.





KakaoSignupActivity.java


 

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.example.anew.kakao;
 
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
 
import com.kakao.auth.ApiResponseCallback;
import com.kakao.auth.ErrorCode;
import com.kakao.network.ErrorResult;
import com.kakao.usermgmt.UserManagement;
import com.kakao.usermgmt.callback.MeResponseCallback;
import com.kakao.usermgmt.response.model.UserProfile;
 
import com.kakao.util.helper.log.Logger;
 
public class KakaoSignupActivity extends Activity{
    /**
     * Main으로 넘길지 가입 페이지를 그릴지 판단하기 위해 me를 호출한다.
     * @param savedInstanceState 기존 session 정보가 저장된 객체
     */
 
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestMe();
    }
    /**
     * 사용자의 상태를 알아 보기 위해 me API 호출을 한다.
     */
    protected void requestMe() { //유저의 정보를 받아오는 함수
        UserManagement.requestMe(new MeResponseCallback() {
            @Override
            public void onFailure(ErrorResult errorResult) {
                String message = "failed to get user info. msg=" + errorResult;
                Logger.d(message);
 
                ErrorCode result = ErrorCode.valueOf(errorResult.getErrorCode());
                if (result == ErrorCode.CLIENT_ERROR_CODE) {
                    finish();
                } else {
                    redirectLoginActivity();
                }
            }
 
            @Override
            public void onSessionClosed(ErrorResult errorResult) {
                redirectLoginActivity();
            }
            @Override
            public void onNotSignedUp() {} // 카카오톡 회원이 아닐 시 showSignup(); 호출해야함
 
            @Override
            public void onSuccess(UserProfile userProfile) {  //성공 시 userProfile 형태로 반환
                String kakaoID = String.valueOf(userProfile.getId()); // userProfile에서 ID값을 가져옴
                String kakaoNickname = userProfile.getNickname();     // Nickname 값을 가져옴
                String url = String.valueOf(userProfile.getProfileImagePath());
 
                Logger.d("UserProfile : " + userProfile);
                Log.d("kakao""==========================");
                Log.d("kakao"""+userProfile);
                Log.d("kakao", kakaoID);
                Log.d("kakao", kakaoNickname);
                Log.d("kakao""==========================");
                redirectMainActivity(url, kakaoNickname); // 로그인 성공시 MainActivity로
            }
        });
    }
    private void redirectMainActivity(String url, String nickname) {
        Intent intent = new Intent(KakaoSignupActivity.this, MainActivity.class);
        intent.putExtra("url", url);
        intent.putExtra("nickname", nickname);
        startActivity(intent);
        finish();
    }
    protected void redirectLoginActivity() {
        final Intent intent = new Intent(this, LoginActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        startActivity(intent);
        finish();
    }
 
}
 
cs


간단하게 말하면 유저의 정보를 가져오는 클래스이다.

호출 시 유저 정보를 잘 받아오는지 로그에 띄워보았다.




KakaoSDKAdapter.java


 

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package com.example.anew.kakao;
 
/**
 * Created by moonsu on 2016-02-10.
 */
import android.app.Activity;
import android.content.Context;
 
import com.kakao.auth.ApprovalType;
import com.kakao.auth.AuthType;
import com.kakao.auth.IApplicationConfig;
import com.kakao.auth.ISessionConfig;
import com.kakao.auth.KakaoAdapter;
 
/**
 * @author leoshin on 15. 9. 15.
 */
public class KakaoSDKAdapter extends KakaoAdapter {
 
    /**
     * Session Config에 대해서는 default값들이 존재한다.
     * 필요한 상황에서만 override해서 사용하면 됨.
     * @return Session의 설정값.
     */
    @Override
    public ISessionConfig getSessionConfig() {
        return new ISessionConfig() {
            @Override
            public AuthType[] getAuthTypes() {
                return new AuthType[] {AuthType.KAKAO_LOGIN_ALL};
            }
 
            @Override
            public boolean isUsingWebviewTimer() {
                return false;
            }
 
            @Override
            public ApprovalType getApprovalType() {
                return ApprovalType.INDIVIDUAL;
            }
 
            @Override
            public boolean isSaveFormData() {
                return true;
            }
        };
    }
    @Override
    public IApplicationConfig getApplicationConfig() {
        return new IApplicationConfig() {
            @Override
            public Activity getTopActivity() {
                return GlobalApplication.getCurrentActivity();
            }
 
            @Override
            public Context getApplicationContext() {
                return GlobalApplication.getGlobalApplicationContext();
            }
        };
    }
}
 
cs


SDK에 대한 어댑터 클래스이다.

세션의 설정값이라는데 주석 그대로 필요할때 찾아서 오버라이드 해주도록 하자





GlobalApplication.java


 

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.example.anew.kakao;
 
/**
 * Created by hp on 2016-01-26.
 */
 
import android.app.Activity;
import android.app.Application;
 
import com.kakao.auth.KakaoSDK;
 
/**
 * 이미지를 캐시를 앱 수준에서 관리하기 위한 애플리케이션 객체이다.
 * 로그인 기반 샘플앱에서 사용한다.
 *
 * @author MJ
 */
public class GlobalApplication extends Application {
    private static volatile GlobalApplication instance = null;
    private static volatile Activity currentActivity = null;
 
    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
 
        KakaoSDK.init(new KakaoSDKAdapter());
    }
 
    public static Activity getCurrentActivity() {
        return currentActivity;
    }
 
    public static void setCurrentActivity(Activity currentActivity) {
        GlobalApplication.currentActivity = currentActivity;
    }
 
    /**
     * singleton 애플리케이션 객체를 얻는다.
     * @return singleton 애플리케이션 객체
     */
    public static GlobalApplication getGlobalApplicationContext() {
        if(instance == null)
            throw new IllegalStateException("this application does not inherit com.kakao.GlobalApplication");
        return instance;
    }
    /**
     * 애플리케이션 종료시 singleton 어플리케이션 객체 초기화한다.
     */
    @Override
    public void onTerminate() {
        super.onTerminate();
        instance = null;
    }
}
cs


이미지와 캐시를 앱수준에서 관리하는 클래스라고 한다.

파악이 잘 안되는 부분이 있지만,

Kakao.init(new KakaoSDKAdapter());

이 부분이 중요하다.


세션을 초기화 하는 코드인데 개발자 페이지에도 initializing 에러로 문의하는 사람이 많았다.

사례가 많은 만큼 trouble shooting 카테고리에서 자세하게 게시했다.


http://blog.naver.com/aufcl4858/220783028488





연동을 위한 자바코드는 이상이다.


다음으로는 메니페스트이다.



AndroidMenifest.xml


 

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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.anew.kakao">
 
    <uses-permission android:name="android.permission.INTERNET" />
 
    <application
        android:name=".GlobalApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".LoginActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="com.kakao.sdk.AppKey"
            android:value="@string/kakao_app_key" />
        <activity android:name=".KakaoSignupActivity"/>
        <activity android:name=".MainActivity"/>
 
    </application>
 
</manifest>
 
cs


크게 달라진 것은 없다. 중요한것이라면


1. INTERNET  퍼미션 등록

2. GlobalApplication name 등록

3. 메타 데이터로 네이티브 키 값등록


이정도 인것같은데 2번은 앞서 말한것과 마찬가지로 세션의 초기화를 위하여 꼭 등록해 주도록 하자

GlobalApplication 내부의 Kakao.init(new KakaoSDKAdapter())가 동작하지 않으면

어플리케이션이 시작과 동시에 갑자기 중단된다.


로그인이 완료 되었을 때 호출되는 MainActivity는 본인이 하고 싶은 메인 액티비티를 호출하면 되겠다.

테스트용이라 나도 Hello World를 호출했다.

또한, 로그인 xml에는 1편에서 포스팅한것과 동일하게 로그인 버튼 하나만 설정 해두었다.


동작 되는것만 확인하고 급하게 올리느라 나도 코드에 내용을 정확하게 보지 못했다.

추후에 분석을 통하여 내용을 좀 더 보강 해야겠다.



저작자 표시
신고

카카오톡 로그인 - 1


프로젝트에 카카오톡으로 로그인 하는 부분이 필요해서 구현해보기로 했다.

페이스북으로는 로그인을 구현해 보았지만 카카오톡은 처음이다.

들리는 바에 의하면 제휴를 해야지 많은 기능을 사용할 수 있다고 하는데 아직까지는 모르니까,

일단 로그인 구현에 초점을 맞춰야지.







처음으로 맥 환경에서의 실습이다. 아직 인터페이스가 익숙치 않아서 고생 꽤나 하고 있다.

아니나 다를까 드라이버가 설치되지 않아서 Run되지 않는다.

시키는대로 필요한 파일을 다운받자.


다운 받고 예만 계속 누르면 설치가 완료되고 내 디바이스를 인식한다.

Empty Activity로 프로젝트를 생성후 잘 동작하는지 실행해보았다.

디바이스에서 잘 동작한다.




어플리케이션 등록




먼저, 카카오톡 개발자페이지에 접속한다.

아이디를 만들고 로그인을한다.

그리고 내 어플리에이션에 들어가 앱 만들기를 클릭, 어플리케이션을 등록한다.






등록된 어플리케이션을 클릭, 설정->일반으로 들어간다.

오른쪽 하단에 플랫폼 추가를 눌러 자신의 개발 플랫폼을 추가한다.






플랫폼을 클릭후 자신이 생성한 안드로이드 스튜디오 프로젝트의 패키지명을 입력한다.

그러면 자동으로 마켓 URL까지 입력되는 것을 확인할 수 있다.






다음으로 해시키를 입력해야한다.

해시키는 터미널에 커맨드를 입력하여 찾아낸다.





 

1
keytool -exportcert -alias androiddebugkey -keystore <debug_keystore_path> -storepass android -keypass android | openssl sha1 -binary | openssl base64
cs

커맨드는 다음과 같다.

커맨드는 내부의 <debug_keystore_path> 는 사용자 컴퓨터 마다 다르며 debug_keystore의 경로를 입력한다.


 : ~/.android/debug.keystore

 

Windows Vista Windows 7 : C:\Users\<user>\.android\debug.keystore

Windows XP  : C:\Documents and Settings\<user>\.android\debug.keystore






debug_keystore_path는 예시와 동일하게 입력하면 된다.

맥 OS의 터미널은 위와 같다.


주의할 점은, 위의 코드는 디버그용 해시키를 찾는 것이다. 

릴리즈 시, 릴리즈 해시키를 찾아 등록해야 한다.






다음으로 네이티브 키를 앱에 등록해야한다.

values에 kakao_string.xml를 생성후 키값을 등록한다.





 

1
2
3
4
<resources>
    <string name="kakao_app_key">AAAAAAAAAAAAAAAAAAAAAA</string>
</resources>
 
cs

코드는 다음과 같다.

AAA...에 네이티브 키값을 입력하면 된다.

네이티브 키값은 어플리케이션 최초 생성시 지급되며 개발자 페이지 설정->일반에서 확인할 수 있다.




 

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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.anew.kakao">
 
    <uses-permission android:name="android.permission.INTERNET" />
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".LoginActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="com.kakao.sdk.AppKey"
            android:value="@string/kakao_app_key" />
    </application>
 
</manifest>
cs



다음은 AndroidManifest.xml이다.

Internet에 대한 퍼미션을 추가해주고, 방금전에 생성한 네이티브 키 xml을 등록해 주도록 하자.

여기까지 진행했으면 1차 완료이다.





SDK 환경 구축


일단 기본 세팅부터 시작한다.

카카오톡의 경우 SDK 소스를 다운받을것이 아니라 bulid.gradle에 경로를 추가해줌으로써

불필요한 소스를 줄이고 어플리케이션을 가볍게 할 수 있다.

따라서 카카오톡 SDK를 bulid. gradle에 추가하는 것이 선행되어야한다.



프로젝트 창을 보면 다음과 같은 리스트가 나온다.

build.gradle이 2개 나오는데 카카오톡 개발자 페이지에서는 어떤 gradle에 추가해야하는지

명확하게 명시하지 않는다.





1
2
3
4
5
6
7
subprojects {
    repositories {
        mavenCentral()
        maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/' }
    }
}
 
cs

먼저 상단의 build.gradle(Project: 프로젝트명)에 다음과 같은 소스를 추가한다.





1
2
3
4
5
6
7
8
9
10
11
12
13
dependencies {
    compile group: 'com.kakao.sdk', name: 'kakaolink', version: project.KAKAO_SDK_VERSION
 
    // 카카오스토리 sdk를 사용하기 위해 필요.
    compile group: 'com.kakao.sdk', name: 'kakaostory', version: project.KAKAO_SDK_VERSION
 
    // 카카오톡 sdk를 사용하기 위해 필요.
    compile group: 'com.kakao.sdk', name: 'kakaotalk', version: project.KAKAO_SDK_VERSION
 
    // push sdk를 사용하기 위해 필요.
    compile group: 'com.kakao.sdk', name: 'push', version: project.KAKAO_SDK_VERSION
}
 
cs


다음으로 build.gradle(Module:app)에 다음과 같은 소스를 추가한다.

name에 들어가는 이름들은 자신이 사용할 모듈들이다. 개발자 페이지에 목록이 나와있다.

자신이 사용할 내용만 잘 선택해서 사용하도록 하자


다음으로 project.KAKAO_SDK_VERSION에 대한 정의를 지정해줘야한다.

project.KAKAO_SDK_VERSION 는 현재 최신 버전 SDK를 입력하면 되는데, 

일괄적으로 정의하기 위하여 gradle.property에 다음과 같은 코드를 선언한다.





1
KAKAO_SDK_VERSION=1.1.20
cs

 

 

테스트 일자 기준, 최신버전은 1.1.20이다.

상단에 나타난 노란바에 안에 Sync now 를 눌러서 적용해주면 gradle에 대한  SDK세팅이 완료된다.






XML 로그인 위젯



다음은 카카오톡 로그인  위젯이다.


 

1
2
3
4
5
6
7
8
<com.kakao.usermgmt.LoginButton
    android:id="@+id/com_kakao_login"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_marginBottom="30dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"/>
cs

 

 

페이스북 로그인과 마찬가지로 카카오톡에서 제공하는 로그인 버튼을 추가해준다.

XML은 카카오톡 개발자 페이지에 있는 소스이다.

쿠키런 등의 게임에 처음 접속 했을 때 볼 수 있는 노란 버튼이다.







테스트 화면에 로그인 버튼을 확인할 수 있다.

이를 기반으로 로그인 동작을 수행하는 Class를 만들어보도록하자



저작자 표시
신고

+ Recent posts

티스토리 툴바