IBM Cloud Docs
Event Notifications 사용하여 iOS 모바일에 푸시 알림 만들기 및 보내기

Event Notifications 사용하여 iOS 모바일에 푸시 알림 만들기 및 보내기

Event Notifications 서비스를 작성하고 APNs(Apple Push Notification service)에 대한 푸시 대상을 추가한 후 iOS 디바이스로 메시지를 전송합니다.

Event Notifications의 개념

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

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

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

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

목표

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

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

시작하기 전에

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

  • IBM Cloud 계정 계정이 없는 경우 IBM Cloud 계정을 작성하십시오.
  • Event Notifications 인스턴스입니다.
  • SDK가 계정에 액세스할 수 있도록 허용하는 IAM API 키. 여기서 하나를 작성하십시오.
  • Xcode 9.3+
  • Swift 4.2+
  • iOS 10.0+

Event Notifications 서비스 인스턴스 작성

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

APNs 신임 정보 가져오기

iOS 디바이스 및 애플리케이션의 경우에는 애플리케이션 개발자가 Event Notifications의 IBM Cloud 서비스 인스턴스(제공자)에서 iOS 디바이스 및 애플리케이션으로 원격 알림을 전송하는 데 APNs(Apple Push Notification service)가 사용됩니다. 디바이스의 대상 애플리케이션으로 메시지가 전송됩니다.

APNs 인증 정보를 획득해서 구성해야 합니다. Event Notifications 서비스에서 APNs 인증서를 안전하게 관리하며 제공자로 APNs 서버에 연결하는 데 이 인증서를 사용합니다.

App ID 등록

App ID(번들 ID)는 특정 애플리케이션을 식별하는 고유 ID입니다. 각 애플리케이션에 App ID가 필요합니다. 푸시 알림 서비스와 같은 서비스가 App ID에 대해 구성됩니다.

  • Apple 개발자 포털로 이동하여 인증서, 식별자 및 프로필을 선택합니다.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • Identifiers > Add identifier button(으)로 이동하십시오.

    caption-side=bottom"
    식별자

  • 새 ' Identifier ' 추가 버튼을 클릭합니다.

    caption-side=bottom"
    새 식별자 추가

  • App ID 옵션을 선택하십시오.

    앱 ID
    ID

  • 유형을 선택하고 Continue을(를) 클릭하십시오.

    App ID type
    App ID type

  • 앱 ID 접두부에 대한 문자열을 제공하십시오. ' Description ' 필드에 앱 이름을 입력합니다. 예를 들어, Event Notifications iOS 애플리케이션입니다.

  • ' Bundle ID'의 경우 명시적 을 선택하고 번들 ID 값을 입력합니다. 역 도메인 이름 스타일 문자열을 제공하도록 권장합니다. 예: com.ibm.cloud.en.app.

    Create new App ID details
    Create new App ID details

  • 기능에서 Push Notifications 선택란을 선택하고 Continue을(를) 클릭하십시오.

    푸시 알림{: caption="사용푸시 알림 사용푸시 알림 " caption-side="bottom"}

  • 설정을 확인하고 Register > Done을(를) 클릭하십시오.

사용자의 앱 ID가 이제 등록되었습니다.

App ID
Newly created App ID

개발 및 배포 APNs SSL 인증서 작성

APNs 인증서를 획득하려면 먼저 인증서 서명 요청(CSR)을 작성하여 이를 Apple 인증 기관(CA)에 제출해야 합니다. CSR에는 사용자의 회사, Apple 푸시 알림을 신청할 때 사용하는 공용 키와 개인 키를 식별하는 정보가 포함됩니다. 그런 다음 iOS 개발자 포털에서 SSL 인증서를 생성하십시오. 인증서와 이의 공개 및 개인 키는 Keychain Access에 저장됩니다.

다음 두 모드에서 APNs를 사용할 수 있습니다.

  • 개발 및 테스트를 위한 샌드박스 모드에서
  • 앱 저장소(또는 다른 엔터프라이즈 배포 메커니즘)를 통해 애플리케이션을 배포할 때 프로덕션 모드에서

개발 및 배포 환경을 위한 별도의 인증서를 획득해야 합니다. 인증서는 원격 알림의 수신인인 앱의 App ID와 연관되어 있습니다. 프로덕션의 경우 최대 두 개의 인증서를 작성할 수 있습니다. IBM Cloud 은 인증서를 사용하여 APNs와의 SSL 연결을 설정합니다.

APN p12 인증서 작성

  • Apple Developer 포털로 이동하여 인증서, ID 및 프로파일을 선택하십시오.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • Identifiers area에서 App ID를 선택하십시오.

    caption-side=bottom"
    식별자

  • Push Notifications 선택란을 선택하거나 Edit 옵션을 선택하십시오.

    푸시 알림
    알림

    • 개발 SSL 인증서 분할창에서 인증서 작성을 클릭하십시오.
    • 프로덕션 SSL 인증서 분할창에서 인증서 작성을 클릭하십시오.

    caption-side=bottom"
    인증서

  • Mac에서 키 체인 액세스 애플리케이션을 사용하여 인증서 서명 요청(CSR)을 작성하십시오.

  • 메뉴에서 ' Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority…'을 선택합니다.

    ![새 인증서 요청하기*새 인증서](images/en-apns-p12-request-new-certificate.png "인증서 " caption-side="bottom"}"){: caption="

  • 인증서 정보에 앱 개발자 계정과 연관된 이메일 주소 및 공통 이름을 입력하십시오. 개발(샌드박스) 또는 배포(프로덕션)에 대한 인증서인지 식별하는 데 도움이 되는 의미 있는 이름을 지정하십시오(예: sandbox-apns-certificate 또는 production-apns-certificate).

  • Saved to disk을(를) 선택하여 .certSigningRequest 파일을 Mac에 다운로드한 후 Continue을(를) 클릭하십시오.

    인증서 상세
    상세

  • Save As 메뉴 옵션에서 .certSigningRequest 파일의 이름을 지정하고 파일을 저장해야 하는 위치를 선택한 후 Save 를 클릭하십시오.

    Save CSR file
    Save CSR file

  • Done을(를) 클릭하십시오. 이제 CSR이 작성되었습니다.

    caption-side=bottom"
    CSR 생성됨

  • Apple 개발자 포털로 돌아가서 CSR 파일 업로드 옵션에서 파일 선택을 클릭하고 ' CertificateSigningRequest.certSigningRequest 파일을 선택합니다. Continue을(를) 클릭하십시오.

    ![CSR 파일 업로드](images/en-apns-p12-upload-csr.png "CSR 파일 업로드 * CSR " caption-side="bottom"}"){: caption="

  • Download을(를) 클릭하십시오. aps_development.cer 파일이 다운로드됩니다.

    Download certificate
    Download certificate

  • 새로 설치된 인증서를 찾으십시오. 인증서를 두 번 클릭하여 키 체인 액세스에 인증서를 설치하십시오.

  • Mac의 경우 Keychain Access > My Certificates(으)로 이동하십시오.

  • 인증서 및 개인 키를 선택한 후 Export을(를) 선택하여 인증서를 개인 정보 교환 형식(.p12 형식)으로 변환하십시오.

    caption-side=bottom"
    인증서

  • Save As 필드에서 인증서에 의미있는 이름을 지정하십시오. 예를 들어, sandbox-apns.p12 또는 production-apns.p12를 지정한 후 Save을(를) 클릭하십시오.

    Save certificate
    Save certificate

  • 내보낸 항목을 보호할 비밀번호를 Enter a password 필드에 입력한 후 OK을(를) 클릭하십시오. 이 비밀번호를 사용하여 Event Notifications 서비스 콘솔에서 APNs 설정을 구성할 수 있습니다.

    Protect certificate
    Protect certificate

  • 키 액세스 앱은 키 체인 화면에서 키를 내보내도록 프롬프트를 표시합니다. 시스템에서 이러한 항목을 내보낼 수 있도록 Mac의 관리 비밀번호를 입력한 후 항상 허용 옵션을 선택하십시오. .p12 인증서가 선택한 위치에 생성됩니다.

APN p8 토큰 작성

  • Apple 개발자 포털로 이동하여 ' Certificates, Identifiers & Profiles'을 선택합니다.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • ' Keys 탭으로 이동합니다.

    caption-side=bottom"
    키

  • Key Name 를 입력하고 APNs를 사용으로 설정한 후 continue 를 클릭하십시오.

    P8 token details
    P8 token details

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

    * 등록 * 토큰 * 등록 p8
    * 등록

  • 등록 후 리디렉션되는 새 페이지에서 키를 다운로드하는 것은 일회성 활동이므로 반드시 다운로드하세요.

KeyID '은 파일의 일부로 UI에 표시되며, 이 ' KeyID '는 APNS 인증서를 등록하는 데 사용됩니다. TeamID '은 개발자 계정을 위해 Apple에서 제공하며 팀 이름 옆에서 볼 수 있습니다. TeamID '는 APNS 인증서 등록에 사용됩니다. BundleID P12 인증서와 동일하게 등록할 수 있습니다.

일반 API 소스 추가

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

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

Event Notifications 대상을 작성하십시오.

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

  • Name: 대상의 이름을 추가합니다.
  • Description: 대상에 대한 선택적 설명을 추가합니다.
  • Type: 드롭다운 목록에서 ' iOS Push Notifications 유형을 선택합니다.
  • 대상 계획 (사전 프로덕션 대상 또는 프로덕션 대상) 을 선택하십시오.
    • Pre-production destination-개발 및 테스트 환경에 대해 이 대상을 저비용 푸시 대상으로 선택하십시오.
    • Production destination-이 대상의 전체 기능을 사용합니다. 무제한 디바이스 및 아웃바운드 메시지가 허용됩니다.
  • ' Authentication Type '에 기반한 세부 정보로 iOS 푸시 자격 증명을 업데이트하고 ' Environment'를 선택합니다.
    • 인증서 유형이 p8 인 경우 .p8 파일을 업로드하고 KeyID, TeamIDBundleID 를 제공하십시오.
    • 인증서 유형이 ' p12'인 경우, p12 인증서를 업로드하고 인증서 ' password'를 제공합니다.
  • Add을(를) 클릭하십시오.

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 아래에서 유형을 선택하고 Add을(를) 클릭하십시오.

Event Notifications iOS SDK 설정

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

설치

이 SDK의 현재 버전: 0.0.1

Event Notifications iOS 대상 SDK를 사용하려면 다음과 같이 서비스에 대한 아티팩트 좌표(그룹 ID, 아티팩트 ID 및 버전)가 포함된 종속성을 정의합니다:

CocoaPods

use_frameworks!

target 'MyApp' do
   pod 'ENPushDestination', '~> 0.0.1'
end

Carthage

Carthage를 사용하여 ENPushDestination을(를) 설치하려면 Cartfile에 다음을 추가하십시오.

github "IBM/event-notifications-destination-ios-sdk" ~> 0.0.1

그런 다음 다음 명령을 실행하여 종속성과 프레임워크를 빌드합니다:

carthage update --platform iOS

Swift Package Manager

Package.swift 파일에 다음을 추가하여 ENPushDestination을 종속성으로 식별하십시오. 패키지 관리자는 스위프트 빌드로 프로젝트를 빌드할 때 ENPushDestination 복제합니다.

dependencies: [
   .package(url: "https://github.com/IBM/event-notifications-destination-ios-sdk", from: "0.0.1")
]

설치 - SDK 초기화

iOS 애플리케이션에서 알림을 받을 수 있도록 하려면 다음 단계를 완료하십시오.

  1. .swift 파일에 import문을 추가하십시오.

    import ENPushDestination
    
  2. ENPushDestination SDK 초기화

    let instanceGUID = "<instance_guid>>";
    let destinationID = "<instance_destination_id>";
    let apiKey = "<instance_apikey>";
    
    let enPush = ENPush.sharedInstance
    enPush.setCloudRegion(region: .usSouth)
    enPush.initialize(instanceGUID, destinationID, apiKey)
    
    • region: Event Notifications 인스턴스의 지역입니다. 예를 들어, Region.usSouth입니다.

알림 등록

' ENPush.registerDevice() ' API를 사용하여 Event Notifications 서비스의 iOS 대상에 디바이스를 등록합니다.

지원되는 옵션은 다음과 같습니다.

  • 사용자 ID 없이 등록:

    /**Register iOS devices*/
    enPush.registerWithDeviceToken(deviceToken: "<apns-device-token>") { response, statusCode, error in
       print(response?.id ?? "")
    }
    
  • 사용자 ID로 등록하십시오. ' userId ' 기반 알림의 경우, 등록 메서드는 ' userId' 매개변수를 하나 더 허용합니다.

    /**Register iOS devices*/
    enPush.registerWithDeviceToken(deviceToken: "<apns-device-token>", withUserId: "userId") { response, statusCode, error in
    
       print(response?.id ?? "")
    
    }
    

    ' userId '은 Event Notifications 등록하기 위한 고유한 ' userId ' 값을 전달하는 데 사용됩니다.

Notifications에서 등록 취소

다음 코드 스니펫을 사용하여 Event Notifications 등록을 취소할 수 있습니다.

enPush.unregisterDevice { response, statusCode, error in
   /**.....*/
}

UserId 기반 등록에서 등록 취소하려면 등록 메소드를 호출해야 합니다. 알림 등록 에서 Register without userId option 의 내용을 참조하십시오.

Event Notifications 대상 태그 구독

태그 구독

' subscribe ' API는 지정된 태그에 대해 디바이스를 구독합니다. 디바이스가 특정 태그를 구독하고 나면, 디바이스는 해당 태그에 대해 전송되는 알림을 수신할 수 있습니다.

태그 목록을 구독하려면 다음 코드 스니펫을 iOS 모바일 애플리케이션에 추가하십시오.

// Subscribe to the given tag
enPush.subscribeToTags(tagName: "<tag_name>") { response, statusCode, error in
   /**.....*/
});

등록된 태그 검색

' retrieveSubscriptionsWithCompletionHandler ' API는 디바이스가 구독 중인 태그 목록을 반환합니다. 모바일 애플리케이션에서 다음 코드 스니펫을 사용하여 구독 목록을 가져오십시오.

// Get a list of tags that to which the device is subscribed.
enPush.retrieveSubscriptionsWithCompletionHandler { response, statusCode, error in
   /**.....*/
}

태그 구독 취소

unsubscribeFromTags API는 목록 태그에서 디바이스 등록을 제거합니다. 다음 코드 스니펫을 사용하여 디바이스가 태그에서 구독을 취소할 수 있습니다.

// unsubscibe from the given tag ,that to which the device is subscribed.
enPush.unsubscribeFromTags(tagName: "<tag_name>") { response, statusCode, error in
   /**.....*/
}

iOS 디바이스에서 푸시 알림 수신

iOS 디바이스에서 푸시 알림을 받으려면 애플리케이션의 ' appDelegate.swift '에 다음 Swift 메서드를 추가하세요:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

   //UserInfo dictionary will contain data sent from the server
}

알림 옵션

다음 알림 옵션이 지원됩니다.

대화식 알림

  1. 대화식 푸시 알림을 사용으로 설정하려면, 알림 조치 매개변수를 알림 오브젝트의 일부로 전달해야 합니다. 다음은 대화식 알림을 사용으로 설정하는 샘플 코드입니다.
let actionOne = ENPushNotificationAction(identifierName: "FIRST", buttonTitle: "Accept", isAuthenticationRequired: false, defineActivationMode: .foreground)

let actionTwo = ENPushNotificationAction(identifierName: "SECOND", buttonTitle: "Reject", isAuthenticationRequired: false, defineActivationMode: .destructive)

let category = ENPushNotificationActionCategory(identifierName: "category", buttonActions: [actionOne, actionTwo])

let notificationOptions = ENPushClientOptions()
notificationOptions.setInteractiveNotificationCategories(categoryName: [category])
enPush.initialize(instanceGUID, destinationID, apiKey, notificationOptions)
  1. AppDelegate.swift에서 콜백 메소드 구현:

    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
       switch response.actionIdentifier {
          case "Accept":
          print("Clicked Accept")
          case "Reject":
          print("Clicked Reject")
          default:
       }
       completionHandler()
    }
    

이 콜백 메소드는 사용자가 조치 단추를 클릭할 때 호출됩니다. 이 메서드의 구현은 지정된 식별자와 연관된 작업을 수행하고 completionHandler 매개변수에서 블록을 실행해야 합니다.

등록을 위한 사용자 정의 DeviceId 추가

DeviceId을(를) 전송하려면 ENPushClientOptions 클래스의 setDeviceId 메소드를 사용하십시오.

let options = ENPushClientOptions();
options.setDeviceId(deviceId: "YOUR_DEVICE_ID");

각 디바이스에 대해 사용자 지정 DeviceId ' unique '을 유지하는 것을 잊지 마세요.

리치 미디어 알림 사용

리치 미디어 알림은 iOS 10 이상에서 지원됩니다. 리치 미디어 알림을 수신하려면, UNNotificationServiceExtension을 구현하십시오. 확장은 리치 미디어 알림을 인터셉트하여 처리합니다.

서비스 확장의 didReceive() 메소드에서 다음 코드를 추가하여 리치 푸시 알림 컨텐츠를 검색하십시오.

override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
   self.contentHandler = contentHandler
   bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
   ENPushRichPushNotificationOptions.didReceive(request, withContentHandler: contentHandler)
}

iOS 디바이스로 알림 보내기

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

Send notifications
Send notifications

caption-side=bottom"
알림
받기