IBM Cloud Docs
Event Notifications 사용하여 Android 모바일에 푸시 알림 생성 및 보내기

Event Notifications 사용하여 Android 모바일에 푸시 알림 생성 및 보내기

Event Notifications 서비스를 작성하고, FCM(Firebase Cloud Messaging)에 대한 푸시 대상을 추가하고, Android 디바이스에 메시지를 전송하십시오.

Event Notifications의 개념

{{{site.data.keyword.en_short}} IBM Cloud 계정에서 발생하는 중요한 이벤트를 알리거나 웹훅을 사용하여 자동화된 작업을 트리거하는 이벤트 알림 라우팅 서비스입니다. IBM Cloud 서비스에서 Availability Monitoring 같은 이벤트 알림을 이메일, SMS, 푸시 알림 및 웹훅으로 필터링하고 라우팅할 수 있습니다.

클라이언트가 Android 푸시 알림을 사용하는 방법

다음 다이어그램은 클라이언트가 Android 푸시 알림을 어떻게 사용하는지 그 방법을 보여줍니다.

고객이 푸시 알림을 사용하는{: caption="사용하는 방법고객이 푸시 알림을 사용하는 방법고객이 푸시 알림을 사용하는 " caption-side="bottom"}

목표

이 학습서는 다음과 같이 푸시 알림을 보내는 방법에 대해 설명합니다.

  • Event Notifications를 사용하여 모바일 앱을 작성하십시오.
  • FCM 신임 정보를 가져오십시오.
  • 코드를 다운로드하고 알림 설정을 완료하십시오.
  • Android 푸시 알림을 구성하고 모바일 디바이스로 전송하십시오.

시작하기 전에

다음과 같은 전제조건이 준비되어 있어야 합니다.

  • 코드를 가져오고 향상시킬 수 있도록 Android Studio를 다운로드하여 설치하십시오.
  • project_id, private_keyclient_email 를 가져오기 위해 Firebase 콘솔에 로그인하는 Google 계정입니다.
  • IBM Cloud 계정 계정이 없는 경우 IBM Cloud 계정을 작성하십시오.

이 문서에서 사용된 지침은 FCM의 HTTP v1 API를 사용합니다. HTTP v1 API는 보안 액세스 토큰, 효율적인 사용자 지정, 미래 보장, 확장 가능한 클라이언트 플랫폼 버전과 같은 장점이 있습니다. FCM 레거시 HTTP API에서 HTTP v1 API로 마이그레이션하는 방법에 대한 자세한 내용은 FCM 레거시 HTTP API에서 HTTP v1 API로 마이 그레이션하기를 참조하세요.

Event Notifications 서비스 인스턴스 작성

  • IBM Cloud 계정에 로그인합니다.
  • IBM Cloud 카탈로그 에서 Event Notifications > Event Notifications 를 검색하고 선택하십시오.
  • 지원되는 지역 목록에서 Region을(를) 선택하고 pricing plan을(를) 선택하십시오.
  • Service name을(를) 제공하십시오.
  • resource group을(를) 선택하십시오.
  • 선택란을 클릭하여 라이센스 계약 및 조항에 동의하십시오.
  • Create을(를) 클릭하십시오.

FCM 신임 정보 가져오기

FCM(Firebase Cloud Messaging)은 Android 디바이스에 푸시 알림을 전달하는 게이트웨이입니다. 콘솔에서 Android 푸시 대상을 설정하려면 FCM 자격 증명 ' project_id, ' private_key' , ' client_email' 을 받아야 합니다.

  • Firebase 콘솔로 이동하십시오. Google 사용자 계정이 필요합니다.

  • Create a project을(를) 클릭하십시오. 프로젝트가 이미 있는 경우 Add Project을(를) 클릭하십시오.

  • Create a project window에 프로젝트 이름을 입력하고, 이용 약관에 동의한 후 토글 스위치를 선택하여 Google 애널리틱스(선택사항)를 사용 또는 사용 안함으로 설정하고 Continue을(를) 클릭하십시오.

  • Google 애널리틱스를 사용하는 경우에는 Configure Google Analytics 창에서 Analytics location을(를) 선택하고 이용 약관에 동의하십시오.

  • Create Project을(를) 클릭하십시오.

  • 새 프로젝트가 준비되면 Continue을(를) 클릭하십시오.

  • 탐색 패널에서 Project Overview 옆에 있는 settings 아이콘을 선택하고 Settings > Project settings을(를) 선택하십시오.

  • ' Service Accounts ' 탭을 클릭합니다.

    FCM 자격증명
    자격증명

  • 새 개인 키 생성 을 클릭하여 프로젝트 신임 정보를 생성하십시오. 다운로드된 파일에는 project_id, private_keyclient_email 가 포함됩니다.

생성 google-services.json

google-services.json 파일도 생성해야 합니다. 다음 단계를 완료하십시오.

  • Firebase 콘솔의 프로젝트 개요 섹션에서 Get started by adding Firebase to your app 섹션 아래 Android 아이콘을 클릭하십시오.

    caption-side=bottom"
    Firebase

  • Add Firebase to your Android app 창에서 com.ibm.cloud.eventnotifications.destination.android을(를) 패키지 이름으로 추가하십시오. App nickname 필드는 선택사항입니다.

  • 앱 등록을 클릭하십시오.

    안드로이드 앱에 Firebase{: caption="Firebase 추가하기안드로이드 앱에 Firebase 추가하기안드로이드 앱에 Firebase " caption-side="bottom"}

  • 애플리케이션의 패키지 이름을 포함하십시오. Add Firebase to your Android app 창에 패키지 이름을 입력하십시오. App nickname 필드는 선택사항입니다.

  • 앱 등록을 클릭하십시오. 다음 예를 참조하십시오.

    안드로이드 앱
    등록* 안드로이드 앱 등록* 안드로이드 앱

  • google-services.json 파일이 생성됩니다.

  • 앱 아래 최신 구성 파일 google-services.json을(를) 다운로드하십시오.

일반 API 소스 추가

다음 단계를 수행하십시오.

  • Event Notifications 대시보드의 Sources 섹션으로 이동하십시오.
  • Add을(를) 클릭하고 API 소스를 선택하십시오.
  • 이름 및 선택적 설명을 입력하고 Add을(를) 클릭하십시오.

Event Notifications 대상 작성

Event Notifications 콘솔에서 Destinations을(를) 클릭하고 다음 대상 세부사항을 추가하십시오.

  • Name: 대상의 이름을 추가합니다.
  • Description: 대상에 대한 선택적 설명을 추가합니다.
  • Type: 드롭다운 목록에서 ' Android Push Notifications (FCM) 유형을 선택합니다.
  • 대상 계획 (사전 프로덕션 대상 또는 프로덕션 대상) 을 선택하십시오.
    • Pre-production destination-개발 및 테스트 환경에 대해 이 대상을 저비용 푸시 대상으로 선택하십시오.
    • Production destination-이 대상의 전체 기능을 사용합니다. 무제한 디바이스 및 아웃바운드 메시지가 허용됩니다.
  • 이전에 다운로드한 파일에서 project_id, private_keyclient_email 로 FCM푸시 신임 정보를 업데이트하십시오.
  • 추가 를 클릭하십시오.

Event Notifications 주제 작성

Event Notifications 콘솔에서 Topics을(를) 선택하고 Create을(를) 클릭하십시오. 다음 주제 세부사항을 입력하십시오.

  • Name: 주제의 이름을 입력하십시오.
  • Description: 주제에 대한 선택적 설명을 추가하십시오.
  • Source: 드롭 다운 목록에서 소스를 선택하십시오.
  • Event type: 드롭 다운 목록에서 이벤트 유형을 선택하십시오.
  • Event sub type: 이벤트 하위 유형 드롭 다운 목록에서 이벤트 하위 유형을 선택하십시오.
  • Severity: 심각도 드롭 다운 목록에서 심각도를 선택하십시오.
  • Advanced conditions: 사용자 정의 조건을 작성합니다. jsonpath 스펙을 준수해야 합니다.

Event Notifications 구독 작성

Event Notifications 콘솔에서 Subscriptions을(를) 클릭하십시오. 다음 구독 세부사항 입력:

  • Click을 클릭하여 구독 마법사를 표시하십시오.
  • 다음 구독 세부사항 완료:
    • Subscription name: 구독의 이름입니다.
    • Subscription description: 선택적 설명을 추가합니다.
  • Subscribe to a topic 섹션 아래의 드롭 다운 목록에서 주제를 선택하고, 대상 드롭 다운 목록에서 대상을 선택하십시오.
  • Destination type: Destination 아래에서 유형을 선택하고 추가를 클릭하십시오.

Event Notifications Android SDK 설정

Android SDK를 사용하면 Android 앱에서 푸시 알림을 받을 수 있습니다. 다음 단계를 완료하여 Event Notifications Android SDK를 설치하고, SDK를 초기화한 후 Android 앱의 알림을 등록하십시오.

  • Gradle를 사용하여 Event Notifications를 설치하십시오.

    compile 'com.ibm.cloud:eventnotifications-destination-android:0.0.1'
    
  • event-notifications-destination-android-sdk에 따라 SDK를 설치하십시오.

  • Gradle이 설치된 경우, SDK를 가져오기 및 초기화하십시오.

    import com.ibm.cloud.eventnotifications.destination.android.ENPush;
    
    String instanceGUID = "<instance_guid>>";
    String destinationID = "<instance_destination_id>";
    String apiKey = "<instance_apikey>";
    
    ENPush enPush = ENPush.getInstance();
    enPush.setCloudRegion(ENPush.REGION_US_SOUTH); // Set your region
    
    enPush.initialize(getApplicationContext(),instanceGUID,destinationID, apiKey);
    
  • SDK가 초기화되면 푸시 알림을 등록하십시오.

    // Register the device to Event Notifications
    enPush.registerDeviceWithUserId("userId",new ENPushResponseListener<String>() {
    
       @Override
       public void onSuccess(String deviceId) {
          //handle successful device registration here
       }
    
       @Override
       public void onFailure(ENPushException ex) {
          //handle failure in device registration here
       }
    });
    
  • 선택적으로 푸시 태그 구독을 생성할 수 있는 경우 푸시 디바이스에 대해 subscribeToPushTag 생성할 수도 있습니다. 구독 API는 특정 태그에 대해 디바이스를 구독합니다. 디바이스가 특정 태그를 구독하고 나면, 디바이스는 해당 태그에 대해 전송되는 알림을 수신할 수 있습니다. Android 모바일 애플리케이션에 다음 코드 스니펫을 추가하여 태그 목록을 구독할 수 있습니다.

    // Subscribe to the given tag, if tagname is not available it will first get create then push device will get subscribe to it.
    enPush.subscribe(tagName, new ENPushResponseListener<String>() {
    
       @Override
       public void onSuccess(String arg) {
          System.out.println("Succesfully Subscribed to: "+ arg);
       }
    
       @Override
       public void onFailure(ENPushException ex) {
          System.out.println("Error subscribing to Tag1.." + ex.getMessage());
       }
    });
    
  • 애플리케이션에서 알림을 수신하기 위한 알림 리스너를 추가하십시오.

    //Handles the notification when it arrives
    ENPushNotificationListener notificationListener = new ENPushNotificationListener() {
    
       @Override
       public void onReceive (final ENSimplePushNotification message){
          // Handle Push Notification
       }
    };
    
    if(enPush != null) {
       enPush.listen(notificationListener);
    }
    
  • 설치가 완료되면 애플리케이션을 실행하고 푸시 알림을 등록하십시오.

Android 디바이스에 알림 전송

알림 전송 API를 사용하여 Android 디바이스에 대한 푸시 알림을 전송하십시오. API를 직접 호출하는 대신 Node 또는 Go 관리 SDK를 사용할 수 있습니다.

Send notifications
Send notifications

caption-side=bottom"
알림
받기

FCM 레거시 HTTP API를 HTTP v1 API로 마이그레이션하기

FCM 레거시 HTTP API를 사용하는 앱은 이 섹션의 지침에 따라 HTTP v1 API로 마이그레이션하는 것을 고려해야 합니다. HTTP v1 API는 보안 액세스 토큰, 효율적인 사용자 지정, 미래 보장, 확장 가능한 클라이언트 플랫폼 버전과 같은 장점이 있습니다.

Event Notifications에서 FCM 표준에 따라 Android 대상을 작성할 수 있습니다. 레거시 HTTP API의 경우 두 가지 필수 server_key sender_id 통해 지원을 제공해 왔습니다. For the v1 HTTP API, FCM introduced three new parameters: project_id, client_email, and private_key. 여기서 주의해야 할 중요한 점은 레거시 및 v1 HTTP API는 상호 배타적이며 Event Notifications 이를 처리했다는 점입니다.

다음은 이전 구성에서 새 구성으로 마이그레이션하는 방법입니다.

  1. 기존 FCM Android 대상 구성 아래에서 server_keysender_id 가 제공됩니다. 이제 project_id, client_emailprivate_key PATCH /destinations/{id} API 호출을 사용하여 기존 대상을 업데이트해야 합니다.

    기존 Android 대상 구성:

    {
       "name": "Existing android destination",
       "description": "Android destination with legacy parameters",
       "type": "push_android",
       "config": {
          "params": {
             "sender_id": "xxxxxx",
             "server_key": "xxxxxx"
          }
       }
    }
    

    새 Android 대상 구성:

    {
       "name": "New android destination",
       "description": "Android destination with V1 HTTP parameters",
       "type": "push_android",
       "config": {
          "params": {
             "project_id": "xxxxx",
             "private_key": "xxxxx",
             "client_email": "abc@xyz.pqr"
          }
       }
    }
    

FCM 페이로드 변경사항의 예

  • FCM 레거시 HTTP API

    {
       "notification": {
       "title": "Incidunt qui porro sequi iste assumenda esse animi.",
       "body": "Minus reprehenderit ut nisi. Aut earum qui est iure eos fuga."
       },
       "data": {
          "name": "Willie Greenholt",
          "description": "Voluptas voluptatem sed quia expedita error a at sit rerum. Numquam unde debitis incidunt qui impedit et necessitatibus. Cupiditate exercitationem enim ut laborum itaque et."
       }
    }
    
  • FCM HTTP v1 API

    {
       "message": {
          "android": {
             "notification": {
                "title": "Incidunt qui porro sequi iste assumenda esse animi.",
                "body": "Minus reprehenderit ut nisi. Aut earum qui est iure eos fuga."
             },
             "data": {
                "name": "Willie Greenholt",
                "description": "Voluptas voluptatem sed quia expedita error a at sit rerum. Numquam unde debitis incidunt qui impedit et necessitatibus. Cupiditate exercitationem enim ut laborum itaque et."
             }
          }
       }
    }