이 자습서에서는 Azure Notification Hubs 및 업데이트된 버전의 FCM(Firebase Cloud Messaging) SDK(버전 1.0.0-preview1)를 사용하여 Android 애플리케이션에 푸시 알림을 보내는 방법을 보여 줍니다. 이 자습서에서는 FCM(Firebase Cloud Messaging)을 사용하여 푸시 알림을 받는 빈 Android 앱을 만듭니다.
중요합니다
2024년 6월 현재 FCM 레거시 API는 더 이상 지원되지 않으며 퇴출됩니다. 푸시 알림 서비스가 중단되지 않도록 하려면 가능한 한 빨리 FCM v1 프로토콜로 마이그레이션해야 합니다.
GitHub에서 이 자습서의 완료된 코드를 다운로드할 수 있습니다.
이 자습서에서 다루는 단계는 다음과 같습니다.
- Android Studio 프로젝트를 만듭니다.
- Firebase Cloud Messaging을 지원하는 Firebase 프로젝트를 만듭니다.
- 알림 허브를 만듭니다.
- 허브에 앱을 연결합니다.
- 앱을 테스트합니다.
필수 조건
이 자습서를 완료하려면 활성 Azure 계정이 있어야 합니다. 계정이 없는 경우 몇 분 만에 평가판 계정을 만들 수 있습니다. 자세한 내용은 Azure 평가판을 참조하세요.
비고
Google/Firebase API는 Azure 중국 지역에서 지원되지 않습니다.
또한 다음 항목이 필요합니다.
- 최신 버전의 Android Studio를 사용하는 것이 좋습니다.
- 최소 지원은 API 수준 19입니다.
Android Studio 프로젝트 만들기
첫 번째 단계는 Android Studio에서 프로젝트를 만드는 것입니다.
Android Studio를 시작합니다.
파일을 선택한 다음 새로 만들기를 선택한 다음 새 프로젝트를 선택합니다.
Choose your project 페이지에서 Empty Activity를 선택한 후 Next를 선택합니다.
프로젝트 구성 페이지에서 다음을 수행합니다.
- 애플리케이션의 이름을 입력합니다.
- 프로젝트 파일을 저장할 위치를 지정합니다.
- 완료를 선택합니다.
FCM을 지원하는 Firebase 프로젝트 만들기
Firebase 콘솔에 로그인합니다. 아직 없는 경우 새 Firebase 프로젝트를 만듭니다.
프로젝트를 만든 후 Android 앱에 Firebase 추가를 선택합니다.
Android 앱에 Firebase 추가 페이지에서 다음을 수행합니다.
Android 패키지 이름의 경우 애플리케이션의 build.gradle 파일에서 applicationId의 값을 복사합니다. 이 예에서는
com.fabrikam.fcmtutorial1app입니다.
앱 등록을 선택합니다.
google-services.json다운로드를 선택하고 파일을 프로젝트의 앱 폴더에 저장한 다음, 다음을 선택합니다.
Firebase 콘솔에서 프로젝트의 톱니바퀴를 선택합니다. 그런 후 프로젝트 설정을 선택합니다.
Android Studio 프로젝트의 앱 폴더에 google-services.json 파일을 다운로드하지 않은 경우 이 페이지에서 다운로드할 수 있습니다.
클라우드 메시징 탭으로 전환합니다.
나중에 사용하기 위해 서버 키를 복사하고 저장합니다. 이 값을 사용하여 허브를 구성합니다.
Firebase Cloud Messaging 탭에 서버 키가 표시되지 않는 경우 다음 단계를 수행합니다.
- Cloud Messaging API(레거시) 사용 안 함 제목의 점 세 개 메뉴를 선택합니다.
- 링크를 따라 Google 클라우드 콘솔에서 API를 관리합니다.
- Google 클라우드 콘솔에서 단추를 선택하여 Google Cloud Messaging API를 사용하도록 설정합니다.
- 잠시 기다립니다.
- Firebase 콘솔 프로젝트 Cloud Messaging 탭으로 돌아가서 페이지를 새로 고칩니다.
- 클라우드 메시징 API 헤더가 Cloud Messaging API (Legacy) 사용 가능으로 변경되었고, 이제 서버 키가 표시되는지 확인합니다.
알림 허브 구성
Azure Portal에 로그인합니다.
왼쪽 메뉴에서 모든 서비스를 선택하고, 모바일 섹션에서 Notification Hubs를 선택합니다. 서비스 이름 옆의 별표 아이콘을 선택하여 서비스를 왼쪽 메뉴의 즐겨찾기 섹션에 추가합니다. 먼저 Notification Hubs를 즐겨찾기에 추가한 후, 왼쪽 메뉴에서 선택합니다.
Notification Hubs 페이지의 도구 모음에서 추가를 선택합니다.
Notification Hubs 페이지에서 다음을 수행합니다.
알림 허브에 이름을 입력합니다.
새 네임스페이스 만들기에 이름을 입력합니다. 네임스페이스에는 하나 이상의 허브가 포함되어 있습니다.
위치 드롭다운에서 값을 선택합니다. 이 값은 허브를 만들려는 위치를 지정합니다.
리소스 그룹에서 기존 리소스 그룹을 선택하거나 새 리소스 그룹을 만듭니다.
선택하고생성합니다.
알림(벨 아이콘)을 선택하고, 리소스로 이동을 선택합니다. Notification Hubs 페이지의 목록을 새로 고치고 허브를 선택할 수도 있습니다.
목록에서 액세스 정책을 선택합니다. 두 개의 연결 문자열을 사용할 수 있습니다. 나중에 푸시 알림을 처리하는 데 필요합니다.
중요합니다
애플리케이션에서 DefaultFullSharedAccessSignature 정책을 사용하지 마세요. 이 정책은 앱 백 엔드에서만 사용됩니다.
허브에 대한 Firebase Cloud Messaging 설정 구성
설정 아래의 왼쪽 창에서 Google(GCM/FCM)을 선택합니다.
앞에서 저장한 FCM 프로젝트의 서버 키를 입력합니다.
도구 모음에서 저장을 선택합니다.
Azure Portal은 허브가 성공적으로 업데이트되었다는 메시지를 표시합니다. Save 단추가 비활성화됩니다.
이제 알림 허브가 Firebase Cloud Messaging과 작동하도록 구성되었습니다. 디바이스에 알림을 보내고, 앱을 등록하여 알림을 수신하는 데 필요한 연결 문자열도 있습니다.
알림 허브에 앱 연결
프로젝트에 Google Play Services 추가
Android Studio의 메뉴에서 도구를 선택하고, SDK Manager를 선택합니다.
프로젝트에서 사용되는 Android SDK의 대상 버전을 선택합니다. 그런 다음 패키지 세부 정보 표시를 선택합니다.
Google API를 선택합니다(아직 설치되지 않은 경우).
SDK 도구 탭으로 전환합니다. Google Play 서비스를 아직 설치하지 않은 경우 다음 이미지에서처럼 Google Play 서비스를 선택합니다. 그런 다음 적용을 선택하여 설치합니다. 이후 단계에서 사용할 수 있도록 SDK 경로를 기록해 둡니다.
변경 확인 대화 상자가 나타나면 확인을 선택합니다. 구성 요소 설치 관리자는 요청된 구성 요소를 설치합니다. 구성 요소가 설치되면 완료를 선택합니다.
확인을 선택하여 새 프로젝트 설정 대화 상자를 닫습니다.
Azure Notification Hubs 라이브러리 추가
앱의 build.gradle 파일에서 종속성 섹션에 다음 줄을 추가합니다.
implementation 'com.microsoft.azure:notification-hubs-android-sdk-fcm:1.1.4' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.android.volley:volley:1.2.1'종속성 섹션 다음에 다음 리포지토리를 추가합니다.
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url 'https://example.io' } } }
Google Firebase 지원 추가
파일 끝에 다음 플러그 인이 아직 없는 경우 추가합니다.
apply plugin: 'com.google.gms.google-services'도구 모음에서 지금 동기화를 선택합니다.
코드 추가
Azure Notification Hubs에서 메시지 가로채기를 처리하는 NotificationHubListener 개체를 만듭니다.
public class CustomNotificationListener implements NotificationListener { @override public void onNotificationReceived(Context context, RemoteMessage message) { /* The following notification properties are available. */ Notification notification = message.getNotification(); String title = notification.getTitle(); String body = notification.getBody(); Map<String, String> data = message.getData(); if (message != null) { Log.d(TAG, "Message Notification Title: " + title); Log.d(TAG, "Message Notification Body: " + message); } if (data != null) { for (Map.Entry<String, String> entry : data.entrySet()) { Log.d(TAG, "key, " + entry.getKey() + " value " + entry.getValue()); } } } }클래스의
OnCreateMainActivity메서드에서 다음 코드를 추가하여 활동을 만들 때 Notification Hubs 초기화 프로세스를 시작합니다.@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); NotificationHub.setListener(new CustomNotificationListener()); NotificationHub.start(this.getApplication(), "Hub Name", "Connection-String"); }Android Studio의 메뉴 모음에서 빌드를 선택한 다음 프로젝트 다시 작성 을 선택하여 코드에 오류가 없는지 확인합니다. ic_launcher 아이콘에 대한 오류가 표시되면 AndroidManifest.xml 파일에서 다음 문을 제거합니다.
android:icon="@mipmap/ic_launcher"앱을 실행하기 위한 가상 디바이스가 있는지 확인합니다. 없으면 다음과 같이 추가합니다.
선택한 디바이스에서 앱을 실행하고 허브에 성공적으로 등록되었는지 확인합니다.
비고
인스턴스 ID 서비스의 메서드가 호출될 때까지
onTokenRefresh()초기 시작 중에 등록이 실패할 수 있습니다. 새로 고침은 알림 허브에 대한 성공적인 등록을 시작해야 합니다.
테스트 알림 보내기
다음과 같이 Azure Portal에서 알림 허브로 푸시 알림을 보낼 수 있습니다.
Azure Portal의 허브에 대한 알림 허브 페이지에서 문제 해결 섹션에서 테스트 보내기를 선택합니다.
플랫폼에서 Android를 선택합니다.
보내기를 선택합니다. Android 디바이스에서 알림이 아직 보이지 않으면 모바일 앱을 실행하지 않았기 때문입니다. 모바일 앱을 실행한 후 보내기 단추를 다시 선택하여 알림 메시지를 표시합니다.
포털 페이지의 맨 아래에 있는 목록에서 작업 결과를 확인합니다.
디바이스에 알림 메시지가 표시됩니다.
푸시 알림은 일반적으로 Mobile Apps와 같은 백 엔드 서비스 또는 호환되는 라이브러리를 사용하여 ASP.NET 전송됩니다. 백 엔드에서 라이브러리를 사용할 수 없는 경우 REST API를 직접 사용하여 알림 메시지를 보낼 수도 있습니다.
에뮬레이터에서 모바일 앱 실행
에뮬레이터 내부에서 푸시 알림을 테스트하기 전에 에뮬레이터 이미지가 앱에 대해 선택한 Google API 수준을 지원하는지 확인합니다. 이미지가 네이티브 Google API를 지원하지 않는 경우 SERVICE_NOT_AVAILABLE 예외가 발생할 수 있습니다.
또한 설정>계정에서 실행 중인 에뮬레이터에 Google 계정을 추가했는지 확인합니다. 그렇지 않으면 FCM에 등록하려고 하면 AUTHENTICATION_FAILED 예외가 발생할 수 있습니다.
다음 단계
이 자습서에서는 Firebase Cloud Messaging을 사용하여 서비스에 등록된 모든 Android 디바이스로 알림을 브로드캐스트했습니다. 특정 디바이스로 알림을 푸시하는 방법을 알아보려면 다음 자습서를 계속 진행합니다.
다음은 알림을 보내기 위한 몇 가지 다른 자습서 목록입니다.
Azure Mobile Apps: Notification Hubs와 통합된 Mobile Apps 백 엔드에서 알림을 보내는 방법의 예는 iOS 앱에 푸시 알림 추가를 참조하세요.
Azure Notification Hubs Java SDK: Java에서 알림을 보내는 방법은 Java에서 Notification Hubs를 사용하는 방법 을 참조하세요. 이는 Eclipse for Android Development에서 테스트되었습니다.
PHP: PHP에서 Notification Hubs를 사용하는 방법을 참조하세요.