목차
- 안드로이드 스튜디오 앱 프로젝트 생성 예제 이전 포스팅 참고 학습
- 파이썬 및 안드로이드 푸시 연동을 위한 Firebase 프로젝트 생성 예제 이전 포스팅 참고 학습
- 안드로이드 푸시 수신 위한 google-service.json 등록 예제 이전 포스팅 참고 학습
- 안드로이드 푸시 수신 서비스 Manifest 등록 예제
- 안드로이드 푸시 수신 리시버 생성 및 onNewToken, onMessageReceived 콜백 등록 예제
- 안드로이드 발급된 푸시 토큰 화면 출력 예제
안드로이드 스튜디오 앱 프로젝트 생성 예제 이전 포스팅 참고 학습
오늘 포스팅 주제는 이전 FCM 프로젝트 생성 및 google-service.json 파일 등록에 이어 푸시 토큰을 발급받고 푸시를 수신하는 예제를 알아보겠습니다. 이를 위해 첫 단계는 안드로이드 스튜디오에서 프로젝트를 생성하는 것입니다.
프로젝트 생성은 앱의 기반을 마련하고 초기 설정을 수행하는 중요한 과정입니다. 이전 포스팅에서는 안드로이드 스튜디오를 설치하는 방법부터 실제 앱 프로젝트를 생성하는 단계까지 자세한 예제를 알아보았습니다.
따라서 해당 내용을 참고하여 아래 예제를 수행해주세요.
2023.08.22 - [Android] - [안드로이드] 프로젝트 생성 예제(로그출력, TextView)
파이썬 및 안드로이드 푸시 연동을 위한 Firebase 프로젝트 생성 예제 이전 포스팅 참고 학습
파이어베이스(Firebase)는 안드로이드 앱에서 푸시 알림을 사용하기위한 플랫폼입니다. 이전 포스팅에서는 파이어베이스 프로젝트를 생성하고 안드로이드 앱과 연동하는 과정에 대한 예제를 알아보았습니다.
파이어베이스 콘솔에서 프로젝트 생성, 앱 등록 및 설정, 인증 및 데이터베이스 설정 등을 수행하여 예제 안드로이드 앱과 파이썬 푸시 서버간 통신을 수행할 수 있습니다.
만약 아직 프로젝트를 생성하지 않았다면 아래의 링크를 참고하여 학습해주세요.
2023.08.19 - [Android] - [Python/안드로이드] 푸시 연동을 위한 구글 FCM 프로젝트 생성 예제
안드로이드 푸시 수신 위한 google-service.json 등록 예제 이전 포스팅 참고 학습
안드로이드 앱이 파이어베이스와 통신하고 푸시 알림을 수신하기 위해선 google-service.json 파일을 프로젝트에 등록해야 합니다. 이전 포스팅에서는 어떻게 google-service.json 파일을 생성하고 앱 프로젝트에 추가해야 하는지 상세한 예제를 알아보았습니다.
만약 아직 google-service.json 파일을 클라이언트 앱에 등록하는 방법을 잘 모르신다면 아래 링크를 참고하여 학습해주세요.
2023.08.23 - [Android] - [안드로이드/Python] 구글 FCM 수신을 위한 google-service.json 등록 예제(build.gradle 수정)
안드로이드 푸시 수신 서비스 Manifest 등록 예제
푸시 알림을 수신하려면 앱의 Manifest 파일에 푸시 알림 관련 서비스를 생성하고 AndroidManifest.xml에 서비스를 등록해야합니다. 아래와 같이 진행해주세요.
아래는 왼쪽 프로젝트 트리뷰 메뉴에서 패키지명 폴더에서 마우스 우클릭하여 New -> Service -> Service 를 선택하고 FireBaseMessagingService.java 를 생성한 예제입니다. FirebaseMessagingService를 상속받고 아래와 같이 메소드를 정의해주세요.
package com.example.blog_test_app;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class FireBaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String token) {
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
}
}
다음으로 아래와 같이 AndroidManifest.xml에 FireBaseMessaingService를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Blog_Test_App"
tools:targetApi="31">
<service
android:name=".FireBaseMessagingService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
</application>
</manifest>
안드로이드 푸시 수신 리시버 생성 및 onNewToken, onMessageReceived 콜백 등록 예제
푸시 알림 수신을 위해선 푸시 메시지를 처리하는 서비스를 생성하고, 이 중 onNewToken 및 onMessageReceived 콜백을 등록해야 합니다. onNewToken은 새로운 FCM 토큰이 생성될 때 호출되며 오늘 예제에서는 버튼을 클릭하면 토큰이 출력되도록 Shared Preference에 토큰을 저장하고 TextView에 출력하겠습니다. 또한 onMessageReceived는 실제 푸시 메시지를 수신했을 때 호출됩니다.
package com.example.blog_test_app;
import android.app.AlertDialog;
import android.content.Context;
import android.content.SharedPreferences;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class FireBaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String token) {
// SharedPreference 객체 생성
SharedPreferences sharedPref = getSharedPreferences("fcm_test", Context.MODE_PRIVATE);
// 값을 저장하기 위한 Editor 객체 생성
SharedPreferences.Editor editor = sharedPref.edit();
// 값을 저장
editor.putString("fcm_token", token);
// 변경사항 저장
editor.apply();
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if(remoteMessage.getNotification() != null) {
Log.d("test-log", remoteMessage.getNotification().getBody());
}
}
}
안드로이드 발급된 푸시 토큰 화면 출력 및 푸시 수신 예제
마지막으로 아래와 같이 Firebase 테스트 페이지에서 방금 위에서 확인한 푸시 토큰을 활용하여 테스트 푸시를 보낼 수 있습니다.
아래는 MainActivity 레이아웃 XML입니다.
<!-- activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
tools:context=".MainActivity">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/test_tv"
android:text="token"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/test_btn"
android:text="push token check"/>
</LinearLayout>
아래는 MainActivity.java 구현부입니다. 버튼 클릭시 TextView에 토큰을 출력합니다.
package com.example.blog_test_app;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = findViewById(R.id.test_tv);
Button btn = findViewById(R.id.test_btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences sharedPref = getSharedPreferences("fcm_test", Context.MODE_PRIVATE);
String token = sharedPref.getString("fcm_token", "not set");
tv.setText(token);
Log.d("token", token);
}
});
}
}
이후 푸시 전송 테스트를 위해 아래 푸시 메시징 사이트에 접속하여 새 캠페인을 생성한다.
https://console.firebase.google.com/u/0/project/test/messaging/onboarding?hl=ko
푸시 테스트 메시지를 입력하고 테스트 메시지 전송 버튼을 클릭한다.
아래 화면에서 FCM 등록 토큰 추가에 아까 앱에서 확인한 토큰을 입력한다.
이후 테스트 버튼을 누르면 푸시가 전송된다.