파이어 베이스는 아주 간단하게 주요 인증 (sns, email, 문자발송)등을 쉽게 구현합니다. 로그인을 적용하는 방법은 2가지가 있는데, 첫 번째는 삽입형으로, 웹소스에 FirebaseUI 인증에 접근할 수 있는 UI까지 완전 삽입하는 방법, 두번째는 사용할 로그인 타입의 UI를 직접 만들 수 있는 Firebase SDK 인증 방식이 있습니다.
먼저 파이어 베이스 프로젝트를 추가하겠습니다. 파이어 베이스 콘솔페이지에서, 새 프로젝트를 선택합니다.
프로젝트 추가 창이 뜨면, 프로젝트 이름을 적고 프로젝트 만들기 버튼을 눌러 주도록 합니다.
콘솔화면에 들어와 웹추가 버튼을 눌러 줍니다.
그러면, 파이어 베이스 설정 코드를 붙여 넣어 파이어베이스 SDK를 초기화 할 수 있도록 해 줍니다. 사용할 웹페이지의 Head 태그 사이에 붙여 넣도록 합니다.
2. 파이어 베이스 인증 라이브러리 추가.
지금 부터 시작하는 내용은 공식문서의 [ 기본 UI로 로그인] 페이지의 내용을 보고 진행하였습니다. 함께 보며 따라하신다면 좋으실 것 같습니다.
위에서 html소스를 붙여 넣은 것은, 파이어 베이스 기본 라이브러리와 생성한 프로젝트의 설정 입니다. 인증을 사용하기 위해서는 인증 라이브러리를 추가해야 합니다. 공식문서에는 3가지 방법을 설명하고 있는 데, 저는 그중 CDN을 통해 추가하도록 하겠습니다. 아래 태그를 <head> 태그 속에 붙여 넣으면 됩니다.
서버에서 안드로이드로 메시지를 보내는 방법을 포스팅합니다. 파이어 베이스에서는 쉽다고 홍보하고 있지만, 프로그래머 대부분은 여기서 머리를 싸매게 됩니다. 일단 파이어 베이스 문서(공식)가 별로 자세하지 않고, 설명 띄엄 띄엄하고, 솔루션도 제공하지 않습니다. 따라서 가장 최신판 책을 한 권 구매하시기 바라며, 이 내용은 그저 트러블 해결 용도로 이용하시기 바랍니다.
참고 사항.
참고 사항 1. 메시지를 보낼 때, 앱이 켜져 있으면, 내부 앱에 메시지가 뿌려지고, 앱이 꺼져 있으면, 상단 알림으로, 메시지가 보내저 소리등이 나게 됩니다. (기본적으로.).
참고 사항 2. 설정에서 알림 받지 않기를 해도 앱이 켜져 있을 때는 알림을 받습니다. 꺼져 있을 때만, 받지 않습니다. 그러므로, 이 것을 이용해 챗팅을 구현해도 상관이 없습니다.
참고 사항 3. 알림을 받기로 허용하면, 앱을 한 번 실행한 뒤 부터 알림이 도착하기 시작합니다. (참고해 주세요).
1. FCM 에서 프로젝트 만들기.
1) 계정 만들기. (생략).
아마 별로 어려울 것이 없을 것이라 생각이 됩니다.
2) 프로젝트 생성.
이름을 잘 정해서 하나 만들어 주시기 바랍니다.
2. Android 앱 추가.
1) Android 앱 등록.
패키지 명을 잘 등록해 줍니다.
2) 구성파일 다운로드.
설명에도 나와 있지만, 프로젝트 보기로 전환하고, (중요), 다운로드 파일을 google-services.json 파일을 App 폴더 하위에 추가하도록 합니다.
3) Firebase SDK 추가.
이 부분은 설명은 참 쉽게 되어 있는 데 (추가하는 것 자체는 쉽습니다.). 입력값 그대로 넣으면 빨간 줄이 쭉쭉 그여질 수 있습니다. 구글 SDK가 업데이트 되면, Firebase SDK 업데이트도 다시 되어야 하는데, 파이어 베이스는 이런일에 둔감합니다. 그래서, 버전이 잘 안맞습니다. 그래서 트러블이 생길 수 있는 데, 이것들은 검색을 통해 확인해야 합니다.
실제 메시지를 받는 서비스의 클래스 입니다. 위 이름이 예제 파일과 같은 이름인데, 바꾸지 않는 것이 좋습니다. 파이어 베이스를 몇 번해 보았지만, 바꾸지 않는 것을 권해 드립니다. 서비스를 만들 때, FirebaseMessagingService클래스를 상속해서 만들도록 합니다.
생성자 외 메소드는 모두 지웁니다. 그리고, Ctrl+o를 눌러, onNewToken, onMessageReceived 가상 메소드들을 재정의 하도록 합니다. (선택하면 자동완성됨).
onNewToken은 메시지에 사용될 토큰을 새로 발급받았을 때, 호출되는 메소드로 이 토큰은 각각의 기기를 식별해 사용하는 메소드 입니다. onMessageReceived 는 메시지를 받았을 때 호출되는 메소드 입니다. 아래는 해당 서비스의 소스 코드 입니다.
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "FCM";
public MyFirebaseMessagingService() {
}
// 새로운 토큰을 확인했을 때 호출되는 메소드.
@Override
public void onNewToken(String token) {
super.onNewToken(token);
// 토큰 정보를 출력합니다.
Log.e(TAG, "onNewToken 호출됨: " + token);
}
// 새로운 메시지를 받았을 때 호출되는 메소드.
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
// 받은 메시지를 출력합니다.
Log.e( TAG, "onMessageReceived 호출됨" + remoteMessage );
}
}
3) 서비스 xml등록.
우리가 위에서 서비스로 앱을 등록해 주었기에, 서비스를 xml에 등록할 필요가 없을 것 같지만, 그렇게 해두면 푸쉬 메시지를 받지 못합니다. 아래 코드를 확인해 푸쉬 메시지를 등록할 수 있게 해 줍니다.