알림 전송

improve this page | report issue

개요

푸시 또는 SMS 알림을 iOS, Android 또는 Windows 디바이스에 전송하려면 먼저 FCM 세부사항(Android의 경우), APNS 인증서(iOS의 경우) 또는 WNS 인증 정보(Windows 8.1 Universal/Windows 10 UWP의 경우)를 사용하여 MobileFirst Server를 구성해야 합니다. 그런 다음 알림은 모든 디바이스(브로드캐스트), 특정 태그에 등록된 디바이스, 단일 디바이스 ID 또는 사용자 ID에 전송되거나 iOS 디바이스, Android 디바이스 또는 Windows 디바이스에만 전송되거나, 인증된 사용자를 기반으로 전송될 수 있습니다.

전제조건: 알림 개요 학습서를 읽으십시오.

다음으로 이동

알림 설정

알림 지원을 사용으로 설정하는 데는 MobileFirst Server와 클라이언트 애플리케이션 모두에서의 몇몇 구성 단계가 포함됩니다.
서버 측 설정을 위해 계속 읽거나 클라이언트 측 설정으로 이동하십시오.

서버 측에서 필요한 설정에는 필요한 벤더(APNS, FCM 또는 WNS) 구성 및 “push.mobileclient” 범위 맵핑이 포함됩니다.

Firebase 클라우드 메시징

참고: Google은 GCM을 더 이상 지원하지 않으며 클라우드 메시징을 Firebase에 통합했습니다. GCM 프로젝트를 사용하는 경우, Android의 GCM 클라이언트 앱을 FCM으로 마이그레이션해야 합니다.

Android 디바이스는 푸시 알림을 위해 FCM(Firebase Cloud Messaging) 서비스를 사용합니다.
FCM을 설정하려면 다음을 수행하십시오.

  1. Firebase 콘솔을 방문하십시오.
  2. 새 프로젝트를 작성하고 프로젝트 이름을 제공하십시오.
  3. 설정 “톱니바퀴” 아이콘을 클릭한 후 프로젝트 설정을 선택하십시오.
  4. 클라우드 메시징 탭을 클릭하여 서버 API 키발신인 ID를 생성한 후 저장을 클릭하십시오.

MobileFirst 푸시 서비스용 REST API 또는 MobileFirst 관리 서비스용 REST API를 사용하여 FCM을 설정할 수도 있습니다.

참고

조직에서 인터넷을 통한 트래픽을 제한하는 방화벽을 사용하는 경우에는 다음과 같은 단계를 수행해야 합니다.

  • FCM 클라이언트 앱이 메시지를 수신하기 위해 FCM과의 연결을 허용하도록 방화벽을 구성하십시오.
  • 5228, 5229 및 5230 포트를 열어야 합니다. FCM은 일반적으로 5228을 사용하지만 5229 및 5230을 사용하는 경우도 있습니다.
  • FCM은 특정 IP를 제공하지 않으므로 방화벽이 Google ASN 15169에 나열된 IP 블록에 포함된 모든 IP 주소에 대한 발신 연결을 승인하도록 허용해야 합니다.
  • 포트 443에서 방화벽이 MobileFirst Server에서 fcm.googleapis.com으로의 발신 연결을 허용하는지 확인하십시오.

GCM 인증 정보를 추가하는 이미지

Apple Push Notifications Service

iOS 디바이스는 푸시 알림을 위해 APNS(Apple Push Notification Service)를 사용합니다.
APNS를 설정하려면 다음을 수행하십시오.

  1. 개발 또는 프로덕션용 푸시 알림 인증서를 생성하십시오. 세부 단계를 보려면 iOS 섹션인 여기를 참조하십시오.
  2. MobileFirst Operations Console → [사용자의 애플리케이션] → 푸시 → 푸시 설정에서 인증서 유형을 선택한 후 인증서의 파일 및 비밀번호를 제공하십시오. 그런 다음 저장을 클릭하십시오.

참고

  • 푸시 알림을 전송하려면 MobileFirst Server 인스턴스에서 다음과 같은 서버에 액세스할 수 있어야 합니다.
    • 샌드박스 서버:
      • gateway.sandbox.push.apple.com:2195
      • feedback.sandbox.push.apple.com:2196
    • 프로덕션 서버:
      • gateway.push.apple.com:2195
      • Feedback.push.apple.com:2196
      • 1-courier.push.apple.com 5223
  • 개발 단계(Phase) 수행 중에는 apns-certificate-sandbox.p12 샌드박스 인증 파일을 사용하십시오.
  • 프로덕션 단계(Phase) 수행 중에는 apns-certificate-production.p12 프로덕션 인증 파일을 사용하십시오.
    • APNS 프로덕션 인증서는 이 인증서를 활용하는 애플리케이션이 Apple App Store에 제출된 경우에만 테스트할 수 있습니다.

참고: MobileFirst는 Universal 인증서를 지원하지 않습니다.

MobileFirst 푸시 서비스용 REST API 또는 MobileFirst 관리 서비스용 REST API를 사용하여 APNS를 설정할 수도 있습니다.

APNS 인증 정보를 추가하는 이미지

Windows Push Notifications Service

Windows 디바이스는 푸시 알림을 위해 WNS(Windows Push Notifications Service)를 사용합니다.
WNS를 설정하려면 다음을 수행하십시오.

  1. Microsoft에서 제공한 지시사항을 따라 패키지 보안 ID(SID)클라이언트 본인확인정보 값을 생성하십시오.
  2. MobileFirst Operations Console → [사용자의 애플리케이션] → 푸시 → 푸시 설정에서 이 값을 추가한 후 저장을 클릭하십시오.

MobileFirst 푸시 서비스용 REST API 또는 MobileFirst 관리 서비스용 REST API를 사용하여 WNS를 설정할 수도 있습니다.

WNS 인증 정보를 추가하는 이미지

SMS 알림 서비스

SMS 알림을 전송하는 데 필요한 SMS 게이트웨이를 설정하기 위해 다음 JSON이 사용됩니다. smsConf REST API를 사용하여 SMS 게이트웨이 구성으로 MobileFirst Server를 업데이트하십시오.

{
	"host": "2by0.com",
	"name": "dummy",
	"port": "80",
	"programName": "gateway/add.php",
	"parameters": [{
		"name": "xmlHttp",
		"value": "false",
		"encode": "true"
	}, {
		"name": "httpsEnabled",
		"value": "false",
		"encode": "true"
	}]

}

푸시 서비스 API 참조에서 추가 SMS 관련 REST API를 찾으십시오.

범위 맵핑

push.mobileclient 범위 요소를 애플리케이션에 맵핑하십시오.

  1. MobileFirst Operations Console을 로드하고 [사용자의 애플리케이션] → 보안 → 범위-요소 맵핑으로 이동한 후 새로 작성을 클릭하십시오.
  2. 범위 요소 필드에 “push.mobileclient”라고 쓰십시오. 그런 다음 추가를 클릭하십시오.

    범위 설명
    apps.read 애플리케이션 자원을 읽을 수 있는 권한입니다.
    apps.write 애플리케이션 자원을 작성, 업데이트 및 삭제할 수 있는 권한입니다.
    gcmConf.read GCM 구성 설정(API 키 및 발신인 ID)을 읽을 수 있는 권한입니다.
    gcmConf.write GCM 구성 설정을 업데이트 및 삭제할 수 있는 권한입니다.
    apnsConf.read APN 구성 설정을 읽을 수 있는 권한입니다.
    apnsConf.write APN 구성 설정을 업데이트 및 삭제할 수 있는 권한입니다.
    devices.read 디바이스를 읽을 수 있는 권한입니다.
    devices.write 디바이스를 작성, 업데이트 및 삭제할 수 있는 권한입니다.
    subscriptions.read 등록을 읽을 수 있는 권한입니다.
    subscriptions.write 등록을 작성, 업데이트 및 삭제할 수 있는 권한입니다.
    messages.write 푸시 알림을 전송할 수 있는 권한입니다.
    webhooks.read 이벤트 알림을 읽을 수 있는 권한입니다.
    webhooks.write 이벤트 알림을 전송할 수 있는 권한입니다.
    smsConf.read SMS 구성 설정을 읽을 수 있는 권한입니다.
    smsConf.write SMS 구성 설정을 업데이트 및 삭제할 수 있는 권한입니다.
    wnsConf.read WNS 구성 설정을 읽을 수 있는 권한입니다.
    wnsConf.write WNS 구성 설정을 업데이트 및 삭제할 수 있는 권한입니다.

    범위 맵핑

인증된 알림

인증된 알림은 하나 이상의 사용자 ID에 전송되는 알림입니다.

push.mobileclient 범위 요소를 애플리케이션에 사용되는 보안 검사에 맵핑하십시오.

  1. MobileFirst Operations Console을 로드하고 [사용자의 애플리케이션] → 보안 → 범위-요소 맵핑으로 이동한 후 새로 작성을 클릭하거나 기존 범위 맵핑 항목을 편집하십시오.
  2. 보안 검사를 선택하십시오. 그런 다음 추가를 클릭하십시오.

    인증된 알림

태그 정의

MobileFirst Operations Console → [사용자의 애플리케이션] → 푸시 → 태그에서 새로 작성을 클릭하십시오.
적절한 태그 이름설명을 제공한 후 저장을 클릭하십시오.

태그 추가

등록은 디바이스 등록과 태그를 함께 결합합니다. 디바이스가 태그에서 등록 취소되면 연관된 모든 등록이 디바이스 자체에서 자동으로 등록 취소됩니다. 한 디바이스의 사용자가 여럿 있는 시나리오에서는 사용자 로그인 기준을 기반으로 모바일 애플리케이션에서 등록을 구현해야 합니다. 예를 들어, 사용자가 애플리케이션에 성공적으로 로그인하고 나면 등록 호출이 수행되고 등록 취소 호출은 로그아웃 조치 처리의 일부로 명시적으로 수행됩니다.

알림 전송

푸시 알림은 MobileFirst Operations Console에서 또는 REST API를 통해 전송될 수 있습니다.

  • MobileFirst Operations Console을 사용하는 경우 두 가지 유형의 알림(태그 및 브로드캐스트)을 전송할 수 있습니다.
  • REST API를 사용하는 경우 모든 양식의 알림(태그, 브로드캐스트 및 인증됨)을 전송할 수 있습니다.

MobileFirst Operations Console

알림은 단일 디바이스 ID나 단일 또는 여러 사용자 ID에 전송되거나 iOS 디바이스 또는 Android 디바이스에만 전송되거나 태그에 등록된 디바이스에 전송될 수 있습니다.

태그 알림

태그 알림은 특정 태그에 등록된 모든 디바이스를 대상으로 하는 알림 메시지입니다. 태그는 사용자의 관심 주제를 나타내며 선택된 관심사에 따라 알림을 수신할 수 있는 기능을 제공합니다.

MobileFirst Operations Console → [사용자의 애플리케이션] → 푸시 → 알림 전송 탭받는 사람 탭에서 태그별 디바이스를 선택한 후 알림 텍스트를 제공하십시오. 그런 다음 전송을 클릭하십시오.

태그별 전송

브로드캐스트 알림

브로드캐스트 알림은 등록된 모든 디바이스를 대상으로 하는 태그 푸시 알림의 한 양식입니다. 브로드캐스트 알림은 예약된 Push.all 태그(모든 디바이스에 대해 자동 작성됨)에 등록하여 푸시 사용 MobileFirst 애플리케이션에 대해 기본적으로 사용으로 설정됩니다. Push.all 태그는 프로그래밍 방식으로 등록 취소할 수 있습니다.

MobileFirst Operations Console → [사용자의 애플리케이션] → 푸시 → 알림 전송 탭받는 사람 탭에서 모두를 선택한 후 알림 텍스트를 제공하십시오. 그런 다음 전송을 클릭하십시오.

모두에게 전송

REST API

REST API를 사용하여 알림을 전송하는 경우 모든 양식의 알림(태그 & 브로드캐스트 알림 및 인증된 알림)을 전송할 수 있습니다.

알림을 전송하기 위해 REST 엔드포인트에 대한 POST를 사용하여 요청이 작성됩니다. imfpush/v1/apps/<application-identifier>/messages.
예제 URL:

https://myserver.com:443/imfpush/v1/apps/com.sample.PinCodeSwift/messages

모든 푸시 알림 REST API를 검토하려면 사용자 문서에서 REST API 런타임 서비스 주제를 참조하십시오.

알림 페이로드

요청은 다음과 같은 페이로드 특성을 포함할 수 있습니다.

페이로드 특성 정의
message 전송할 경보 메시지입니다.
settings 설정은 알림의 다양한 속성입니다.
target 대상 세트는 이용자 ID, 디바이스, 플랫폼 또는 태그일 수 있습니다. 대상 중 하나만 설정할 수 있습니다.
deviceIds 디바이스 ID로 표시되는 디바이스의 배열입니다. 이러한 ID를 가진 디바이스가 알림을 수신합니다. 이는 유니캐스트 알림입니다.
notificationType 메시지를 전송하는 데 사용되는 채널(푸시/SMS)을 표시하는 정수 값입니다. 허용되는 값은 1(푸시만), 2(SMS만) 및 3(푸시 및 SMS)입니다 .
platforms 디바이스 플랫폼의 배열입니다. 이러한 플랫폼에서 실행 중인 디바이스가 알림을 수신합니다. 지원되는 값은 A(Apple/iOS), G(Google/Android) 및 M(Microsoft/Windows)입니다.
tagNames tagNames로 지정되는 태그의 배열입니다. 이러한 태그에 등록된 디바이스가 알림을 수신합니다. 태그 기반 알림의 경우 이 유형의 대상을 사용하십시오.
userIds 알림을 전송할 사용자 ID로 표시되는 사용자의 배열입니다. 이는 유니캐스트 알림입니다.
phoneNumber 디바이스 등록 및 알림 수신에 사용되는 전화번호입니다. 이는 유니캐스트 알림입니다.

푸시 알림 페이로드 JSON의 예

{
    "message" : {
    "alert" : "Test message",
  },
  "settings" : {
    "apns" : {
      "badge" : 1,
      "iosActionKey" : "Ok",
      "payload" : "",
      "sound" : "song.mp3",
      "type" : "SILENT",
    },
    "gcm" : {
      "delayWhileIdle" : ,
      "payload" : "",
      "sound" : "song.mp3",
      "timeToLive" : ,
    },
  },
  "target" : {
    // The list below is for demonstration purposes only - per the documentation only 1 target is allowed to be used at a time.
    "deviceIds" : [ "MyDeviceId1", ... ],
    "platforms" : [ "A,G", ... ],
    "tagNames" : [ "Gold", ... ],
    "userIds" : [ "MyUserId", ... ],
  },
}

SMS 알림 페이로드 JSON의 예

{
  "message": {
    "alert": "Hello World from an SMS message"
  },
  "notificationType":3,
   "target" : {
     "deviceIds" : ["38cc1c62-03bb-36d8-be8e-af165e671cf4"]
   }
}

알림 전송

다양한 도구를 사용하여 알림을 전송할 수 있습니다.
테스트용으로 Postman이 아래에 설명된 대로 사용됩니다.

  1. 기밀 클라이언트를 구성하십시오.
    REST API를 통한 푸시 알림 전송에서는 공백으로 구분된 범위 요소 messages.writepush.application.<applicationId>를 사용합니다.

    기밀 클라이언트 구성

  2. 액세스 토큰을 작성하십시오.

  3. http://localhost:9080/imfpush/v1/apps/com.sample.PushNotificationsAndroid/messages에 대한 POST 요청을 작성하십시오.
    • 원격 MobileFirst를 사용하는 경우 hostnameport 값을 사용자 고유의 값으로 대체하십시오.
    • 애플리케이션 ID 값을 사용자 고유의 값으로 업데이트하십시오.
  4. 헤더를 설정하십시오.
    • 권한 부여: Bearer eyJhbGciOiJSUzI1NiIsImp ...
    • “Bearer” 뒤의 값을 위의 (1)단계의 액세스 토큰 값으로 대체하십시오.

    권한 부여 헤더

  5. 본문을 설정하십시오.
    • 위의 알림 페이로드에 설명된 대로 해당 특성을 업데이트하십시오.
    • 예를 들어, userIds 속성을 가진 target 특성을 추가하여 특정 등록된 사용자에게 알림을 전송할 수 있습니다.
    {
         "message" : {
             "alert" : "Hello World!"
         }
    }
    

    권한 부여 헤더

전송 단추를 클릭하면 다음과 같이 디바이스에 알림이 수신됩니다.

샘플 애플리케이션의 이미지

알림 사용자 정의

알림 메시지를 전송하기 전에 다음과 같은 알림 속성을 사용자 정의할 수도 있습니다.

MobileFirst Operations Console → [사용자의 애플리케이션] → 푸시 → 태그 → 알림 전송 탭에서 iOS/Android 사용자 정의 설정 섹션을 펼쳐 알림 속성을 변경하십시오.

Android

  • 알림 사운드, FCM 스토리지에 알림을 저장할 수 있는 기간, 사용자 정의 페이로드 등
  • 알림 제목을 변경하려면 Android 프로젝트의 strings.xml 파일에 push_notification_tile을 추가하십시오.

iOS

  • 알림 사운드, 사용자 정의 페이로드, 조치 키 제목, 알림 유형 및 배지 번호

푸시 알림 사용자 정의

APN 푸시 알림에 대한 HTTP/2 지원

Apple Push Notification(APN) 서비스는 HTTP/2 네트워크 프로토콜 기반의 새로운 API를 지원합니다. HTTP/2에 대한 지원은 아래 나열된 내용을 포함하여 많은 혜택을 제공합니다.

  • 메시지 길이가 2KB에서 4KB로 증가하여 알림에 더 많은 컨텐츠를 추가할 수 있습니다.
  • 클라이언트와 서버 사이의 다중 연결이 필요 없으므로 처리량이 향상됩니다.
  • 유니버셜 푸시 알림 클라이언트 SSL 인증서를 지원합니다.

MobileFirst의 푸시 알림이 이제 기존의 TCP 소켓 기반 알림과 함께 HTTP/2 기반 APN 푸시 알림을 지원합니다.

HTTP/2 사용

JNDI 특성을 통해 HTTP/2 기반 알림을 사용할 수 있습니다.

<jndiEntry jndiName="imfpush/mfp.push.apns.http2.enabled" value= "true"/>

참고: 위의 JNDI 특성이 추가되면 기존의 TCP 소켓 기반 알림이 사용되지 않고 HTTP/2 기반 알림만 사용됩니다.

HTTP/2에 대한 프록시 지원

HTTP/2 기반 알림은 HTTP 프록시를 통해서 전송될 수 있습니다. 프록시를 통한 알림 경로 지정을 사용하려면 여기를 참조하십시오.

프록시 지원

프록시 설정을 사용하여 알림을 Android 및 iOS 디바이스에 전송하는 데 사용할 선택적 프록시를 설정할 수 있습니다. push.apns.proxy.push.gcm.proxy. 구성 특성을 사용하여 프록시를 설정할 수 있습니다. 자세한 정보는 MobileFirst Server 푸시 서비스의 JNDI 특성 목록을 참조하십시오.

다음 학습서

이제 서버 측이 설정되었으니 클라이언트 측을 설정하고 수신된 알림을 처리하십시오.

Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on June 29, 2020