자습서: Azure Notification Hubs를 사용하여 Xamarin.iOS 앱에 푸시 알림 보내기

개요

이 자습서에서는 Azure Notification Hubs를 사용하여 iOS 애플리케이션에 푸시 알림을 보내는 방법을 보여 줍니다. APNs(Apple Push Notification service)를 사용하여 푸시 알림을 받는 빈 Xamarin.iOS 앱을 만듭니다.

완료되면 알림 허브를 사용하여 앱을 실행하는 모든 디바이스에 푸시 알림을 브로드캐스트할 수 있습니다. 완성된 코드는 NotificationHubs 앱 샘플에서 사용할 수 있습니다.

이 자습서에서는 다음 작업을 수행하는 코드를 만들거나 업데이트합니다.

  • 인증서 서명 요청 파일 생성
  • 푸시 알림을 위해 앱 등록
  • 앱용 프로비저닝 프로필 만들기
  • iOS 푸시 알림에 대한 알림 허브 구성
  • 테스트 푸시 알림 보내기

필수 조건

  • Azure 구독. Azure 구독이 아직 없는 경우 시작하기 전에 Azure 체험 계정을 만듭니다.

  • 최신 버전의 Xcode

  • iOS 10 이상 버전 호환 디바이스

  • Apple 개발자 프로그램 멤버 자격

  • Mac용 Visual Studio

    참고 항목

    iOS 푸시 알림에 대한 구성 요구 사항 때문에 시뮬레이터 대신 실제 iOS 디바이스(iPhone 또는 iPad)에서 애플리케이션 예제를 배포 및 테스트해야 합니다.

이 자습서를 완료하는 것은 Xamarin.iOS 앱에 대한 다른 모든 Notification Hubs 자습서의 필수 구성 요소입니다.

인증서 서명 요청 파일 생성

APN(Apple Push Notification Service)은 인증서를 사용하여 푸시 알림을 인증합니다. 다음 지침에 따라 알림을 보내고 받는 데 필요한 푸시 인증서를 만듭니다. 이러한 개념에 대한 자세한 내용은 공식 Apple Push Notification Service 설명서를 참조하세요.

Apple에서 서명된 푸시 인증서를 생성하는 데 사용하는 CSR(인증서 서명 요청) 파일을 생성합니다.

  1. Mac에서 키 집합 액세스 도구를 실행합니다. 유틸리티 폴더 또는 실행 패드의 기타 폴더에서 열 수 있습니다.

  2. 키 집합 액세스를 선택하고, 인증서 도우미를 확장한 다음, 인증 기관에서 인증서 요청을 선택합니다.

    Use Keychain Access to request a new certificate

    참고 항목

    기본적으로 키 집합 액세스는 목록의 첫 번째 항목을 선택합니다. 인증서 범주있고 Apple Worldwide 개발자 관계 인증 기관이 목록의 첫 번째 항목이 아닌 경우 문제가 될 수 있습니다. CSR(인증서 서명 요청)을 생성하기 전에 키가 아닌 항목이 있는지 확인하거나 Apple Worldwide 개발자 관계 인증 기관 키가 선택되어 있는지 확인합니다.

  3. 사용자 전자 메일 주소를 선택하고, 일반 이름 값을 입력하고, 디스크에 저장을 지정했는지 확인한 다음, 계속을 선택합니다. CA 이메일 주소는 필요하지 않으므로 비워둡니다.

    Required certificate information

  4. 다른 이름으로 저장에 CSR 파일의 이름을 입력하고, 어디에서 위치를 선택한 다음, 저장을 선택합니다.

    Choose a file name for the certificate

    이 작업은 CSR 파일을 선택한 위치에 저장합니다. 기본 위치는 Desktop입니다. 파일에 대해 선택한 위치를 기억합니다.

다음으로 Apple에 앱을 등록하고, 푸시 알림을 사용하도록 설정하고, 내보낸 CSR을 업로드하여 푸시 인증서를 만듭니다.

푸시 알림을 위해 앱 등록

iOS 앱에 푸시 알림을 보내려면 Apple에 애플리케이션을 등록하고 푸시 알림에 등록합니다.

  1. 앱을 아직 등록하지 않은 경우 Apple Developer Center에서 iOS Provisioning Portal로 이동합니다. Apple ID를 사용하여 포털에 로그인하고 식별자를 선택합니다. 그런 다음, +를 선택하여 새 앱을 등록합니다.

    iOS Provisioning Portal App IDs page

  2. 새 식별자 등록 화면에서 앱 ID 라디오 단추를 선택합니다. 그런 다음, 계속을 선택합니다.

    iOS Provisioning Portal register new ID page

  3. 새 앱에 대해 다음 세 가지 값을 업데이트한 다음 계속을 선택합니다.

    • 설명: 앱의 설명이 포함된 이름을 입력합니다.

    • 번들 ID: 앱 배포 가이드에 멘션 대로 조직 식별자.제품 이름 양식의 번들 ID를 입력합니다. 조직 식별자제품 이름 값은 Xcode 프로젝트를 만들 때 사용하는 조직 식별자 및 제품 이름과 일치해야 합니다. 다음 스크린샷 에서 NotificationHubs 값은 조직 식별자로 사용되고 GetStarted 값은 제품 이름으로 사용됩니다. Xcode에서 올바른 게시 프로필을 사용할 수 있도록 번들 식별자 값이 Xcode 프로젝트의 값과 일치하는지 확인합니다.

      iOS Provisioning Portal register app ID page

    • 푸시 알림: 기능 섹션에서 푸시 알림 옵션을 확인합니다.

      Form to register a new App ID

      이 작업은 앱 ID를 생성하고 정보를 확인하는 요청을 생성합니다. 계속을 선택한 다음 등록을 선택하여 새 앱 ID를 확인합니다.

      Confirm new App ID

      등록을 선택하면 인증서, 식별자 및 프로필 페이지에 새 앱 ID가 줄 항목으로 표시됩니다.

  4. 인증서, 식별자 및 프로필 페이지의 식별자 아래에서 방금 만든 앱 ID 줄 항목을 찾고 해당 행을 선택하여 앱 ID 구성 편집 화면을 표시합니다.

Notification Hubs에 대한 인증서 만들기

알림 허브가 APNS에서 작동하도록 하려면 인증서가 필요합니다. 이 작업은 다음 두 가지 방법 중 하나를 통해 수행할 수 있습니다.

  1. Notification Hub에 직접 업로드할 수 있는 .p12 를 만듭니다.
  2. 토큰 기반 인증(최신 방법)에 사용할 수 있는 .p8을 만듭니다.

최신 접근 방식에는 APNS에 대한 토큰 기반(HTTP/2) 인증에 설명된 대로 인증서 사용과 비교하여 다양한 이점이 있습니다. 그러나 두 방법 모두에 대한 단계가 제공되었습니다.

옵션 1: Notification Hub에 직접 업로드할 수 있는 .p12 푸시 인증서 만들기

  1. 아래로 스크롤하여 선택한 Push Notifications(푸시 알림) 옵션으로 이동한 다음, Configure(구성)를 선택하여 인증서를 만듭니다.

    Edit App ID page

  2. Apple Push Notification service SSL Certificates(Apple 푸시 알림 서비스 SSL 인증서) 창이 표시됩니다. Development SSL Certificate(개발 SSL 인증서) 섹션 아래에서 Create Certificate(인증서 만들기) 단추를 선택합니다.

    Create certificate for App ID button

    새 인증서 만들기 화면이 표시됩니다.

    참고 항목

    이 자습서에서는 앱에서 고유한 디바이스 토큰을 생성하는 데 사용하는 개발 인증서를 사용합니다. 프로덕션 인증서를 등록할 때도 동일한 프로세스가 사용됩니다. 알림을 보낼 때 동일한 인증서 유형을 사용해야 합니다.

  3. 파일 선택을 선택하고 첫 번째 작업에서 CSR 파일을 저장한 위치로 이동한 다음 인증서 이름을 두 번 클릭하여 로드합니다. 그런 다음, 계속을 선택합니다.

  4. 포털에서 인증서가 만들어지면 Download(다운로드) 단추를 선택합니다. 인증서를 저장하고 인증서가 저장된 위치를 기억합니다.

    Generated certificate download page

    인증서가 다운로드되고 컴퓨터의 다운로드 폴더에 저장됩니다.

    Locate certificate file in the Downloads folder

    참고 항목

    기본적으로 다운로드한 개발 인증서의 이름은 aps_development.cer.

  5. 다운로드한 푸시 인증서 aps_development.cer 두 번 클릭합니다. 이 작업은 다음 이미지에 보이는 것처럼 새 인증서를 Keychain에 설치합니다.

    Keychain access certificates list showing new certificate

    참고 항목

    인증서의 이름은 다를 수 있지만 Apple 개발 iOS 푸시 서비스가 앞에 옵니다.

  6. 키 집합 액세스에서 인증서 범주에서 만든 새 푸시 인증서를 마우스 오른쪽 단추로 클릭합니다. 내보내기를 선택하고, 파일 이름을 지정하고, .p12 형식을 선택한 다음, 저장을 선택합니다.

    Export certificate as p12 format

    암호로 인증서를 보호하도록 선택할 수 있지만 선택 사항입니다. 암호 만들기를 무시하려면 [확인]을 클릭합니다. 내보낸 .p12 인증서의 파일 이름과 위치를 기록해 둡다. APN으로 인증을 사용하도록 설정하는 데 사용됩니다.

    참고 항목

    .p12 파일 이름과 위치가 이 자습서에 표시된 것과 다를 수 있습니다.

옵션 2: 토큰 기반 인증에 사용할 수 있는 .p8 인증서 만들기

  1. 다음 세부 정보를 기록해 둡다.

    • 앱 ID 접두사(팀 ID)
    • 번들 ID
  2. 인증서, 식별자 및 프로필로 돌아가서 를 클릭합니다.

    참고 항목

    APNS으로 구성된 키가 이미 있는 경우 생성 직후 다운로드한 .p8 인증서를 다시 사용할 수 있습니다. 그렇다면 3~5단계무시할 수 있습니다.

  3. 단추 + (또는 만들기 단추)를 클릭하여 새 키를 만듭니다.

  4. 적절한 키 이름 값을 입력한 다음 APN(Apple Push Notifications Service) 옵션을 검사 다음 계속을 클릭한 다음 다음 화면에서 등록을 클릭합니다.

  5. 다운로드를 클릭한 다음 .p8 파일(AuthKey_ 접두사)을 보안 로컬 디렉터리로 이동한 다음 완료를 클릭합니다.

    참고 항목

    .p8 파일을 안전한 장소에 보관하고 백업을 저장해야 합니다. 키를 다운로드한 후에는 서버 복사본이 제거되므로 다시 다운로드할 수 없습니다.

  6. 에서 방금 만든 키(또는 대신 사용하도록 선택한 경우 기존 키)를 클릭합니다.

  7. Key ID 값을 기록해 둡니다.

  8. Visual Studio Code와 같이 원하는 적절한 애플리케이션에서 .p8 인증서를 연 다음 키 값을 기록해 둡니다. 이 값은 -----BEGIN PRIVATE KEY----------END PRIVATE KEY----- 사이의 값입니다.

    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
    

    참고 항목

    이는 나중에 Notification Hub를 구성하는 데 사용할 토큰 값입니다.

이러한 단계가 끝나면 나중에 APN 정보를 사용하여 알림 허브 구성에서 사용할 수 있는 다음 정보가 있어야 합니다.

  • 팀 ID (1단계 참조)
  • 번들 ID(1단계 참조)
  • 키 ID (7단계 참조)
  • 토큰 값 (예: .p8 키 값)(8단계 참조)

앱용 프로비저닝 프로필 만들기

  1. iOS Provisioning Portal로 돌아가서 Certificates, Identifiers & Profiles(인증서, 식별자 및 프로필)를 선택하고, 왼쪽 메뉴에서 Profiles(프로필)를 선택한 다음, +를 선택하여 새 프로필을 만듭니다. 새 프로비저닝 프로필 등록 화면이 나타납니다.

  2. Development(개발) 아래에서 프로비저닝 프로필 유형으로 iOS App Development(iOS 앱 개발)를 선택한 다음, Continue(계속)를 선택합니다.

    Provisioning profile list

  3. 다음으로 앱 ID 드롭다운 목록에서 만든 앱 ID를 선택하고 계속을 선택합니다.

    Select the App ID

  4. 인증서 선택 창에서 코드 서명에 사용하는 개발 인증서를 선택하고 계속을 선택합니다. 이 인증서는 사용자가 만든 푸시 인증서가 아닙니다. 존재하지 않는 경우 만들어야 합니다. 인증서가 있으면 다음 단계로 건너뜁니다. 개발 인증서가 없으면 해당 인증서를 만들기 위해 다음을 수행합니다.

    1. No Certificates are available(사용할 수 있는 인증서가 없습니다)이 표시되면 Create Certificate(인증서 만들기)를 선택합니다.
    2. 소프트웨어 섹션에서 Apple Development를 선택합니다. 그런 다음, 계속을 선택합니다.
    3. 새 인증서 만들기 화면에서 파일 선택을 선택합니다.
    4. 이전에 만든 인증서 서명 요청 인증서로 이동하여 선택한 다음 열기를 선택합니다.
    5. 계속을 선택합니다.
    6. 개발 인증서를 다운로드하고 저장한 위치를 기억합니다.
  5. 인증서, 식별자 및 프로필 페이지로 돌아가서 왼쪽 메뉴에서 프로필을 선택한 다음 새 프로필을 만들도록 선택합니다+. 새 프로비저닝 프로필 등록 화면이 나타납니다.

  6. 인증서 선택 창에서 방금 만든 개발 인증서를 선택합니다. 그런 다음, 계속을 선택합니다.

  7. 다음으로 테스트에 사용할 디바이스를 선택하고 계속을 선택합니다.

  8. 마지막으로, Provisioning Profile Name(프로비저닝 프로필 이름)에서 프로필 이름을 선택하고, Generate(생성)를 선택합니다.

    Choose a provisioning profile name

  9. 새 프로비저닝 프로필이 만들어지면 다운로드를 선택합니다. 저장되는 위치를 기억합니다.

  10. 프로비전 프로필의 위치를 찾은 다음 두 번 클릭하여 Xcode 개발 컴퓨터에 설치합니다.

알림 허브 만들기

이 섹션에서는 .p12 푸시 인증서 또는 토큰 기반 인증을 사용하여 알림 허브를 만들고 APN으로 인증을 구성합니다. 이미 만든 알림 허브를 사용하려면 5단계로 건너뛸 수 있습니다.

  1. Azure Portal에 로그인합니다.

  2. 왼쪽 메뉴에서 모든 서비스를 선택합니다. A screenshot showing select All Services for an existing namespace.

  3. 필터 서비스 텍스트 상자에 Notification Hubs 를 입력합니다. 서비스 이름 옆의 별표 아이콘을 선택하여 서비스를 왼쪽 메뉴의 즐겨찾기 섹션에 추가합니다. Notification Hubs를 선택합니다.

    A screenshot showing how to filter for notification hubs.

  4. Notification Hubs 페이지의 도구 모음에서 만들기를 선택합니다.

    A screenshot showing how to create a new notification hub.

  5. 알림 허브 페이지의 기본 사항 탭에서 다음 단계를 수행합니다.

    1. 구독에서 사용하려는 Azure 구독 이름을 선택한 다음, 기존 리소스 그룹을 선택하거나 새 리소스 그룹을 만듭니다.

    2. 네임스페이스 세부 정보에 새 네임스페이스의 고유한 이름을 입력합니다.

    3. 네임스페이스에 알림 허브가 하나 이상 포함되어 있으므로 Notification Hub 세부 정보에 허브 이름을 입력합니다.

    4. 위치 드롭다운 목록 상자에서 값을 선택합니다. 이 값은 허브를 만들려는 위치를 지정합니다.

      Screenshot showing notification hub details.

    5. 가용성 영역 옵션을 검토합니다. 가용성 영역이 있는 지역을 선택한 경우 기본적으로 검사 상자가 선택됩니다. 가용성 영역 유료 기능이므로 계층에 추가 요금이 추가됩니다.

    6. 재해 복구 옵션( 없음, 쌍을 이루는 복구 지역 또는 유연한 복구 지역)을 선택합니다. 쌍을 이루는 복구 지역을 선택하면 장애 조치(failover) 지역이 표시됩니다. 유연한 복구 지역을 선택한 경우 드롭다운을 사용하여 복구 지역 목록에서 선택합니다.

      Screenshot showing availability zone details.

    7. 만들기를 실행합니다.

  6. 배포가 완료되면 리소스로 이동을 선택합니다.

APNs 정보로 알림 허브 구성

Notification Services에서 Apple(APNS)을 선택한 다음, 이전에 Notification Hubs에 대한 인증서 만들기 섹션에서 선택한 접근 방식에 따라 적절한 단계를 수행합니다.

참고 항목

App Store 또는 임시 배포 프로필을 사용하여 앱을 빌드하는 경우 애플리케이션 모드프로덕션사용합니다. 이렇게 하면 디바이스가 스토어에서 앱을 구매한 사용자에게 푸시 알림을 보낼 수 있습니다.

옵션 1: .p12 푸시 인증서 사용

  1. 인증서를 선택합니다.

  2. 파일 아이콘을 선택합니다.

  3. 이전에 내보낸 .p12 파일을 선택한 다음 열기를 선택합니다.

  4. 필요한 경우 올바른 암호를 지정합니다.

  5. 샌드박스 모드를 선택합니다.

    Configure APNs certification in Azure portal

  6. 저장을 선택합니다.

옵션 2: 토큰 기반 인증 사용

  1. 토큰을 선택합니다.

  2. 이전에 획득한 다음 값을 입력합니다.

    • 키 ID
    • 번들 ID
    • 팀 ID
    • 토큰
  3. 샌드박스 선택

  4. 저장을 선택합니다.

이제 APN을 사용하여 알림 허브를 구성했습니다. 또한 앱을 등록하고 푸시 알림을 보내는 연결 문자열 있습니다.

알림 허브에 앱 연결

새 프로젝트 만들기

  1. Visual Studio에서 새 iOS 프로젝트를 만들고 단일 보기 앱 템플릿을 선택하고 다음을 클릭합니다.

    Visual Studio - Select Application Type

  2. 앱 이름 및 조직 식별자를 입력한 후, 다음을 클릭한 다음, 만들기를 클릭합니다.

  3. 솔루션 보기에서 Info.plist를 두 번 클릭하고 ID 아래에서 번들 식별자가 프로비전 프로필을 만들 때 사용한 식별자와 일치하는지 확인합니다. 서명 아래에서 에 대해 개발자 계정이 선택되고, "자동으로 서명 관리"가 선택되고, 서명 인증서 및 프로비전 프로필이 자동으로 선택되어 있는지 확인합니다.

    Visual Studio- iOS App Config

  4. 솔루션 보기에서 푸시 Entitlements.plist 알림 사용이 검사 확인합니다.

    Visual Studio- iOS Entitlements Config

  5. Azure Messaging 패키지를 추가합니다. 솔루션 보기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 추가>를 선택합니다. Xamarin.Azure.NotificationHubs.iOS를 검색하고 프로젝트에 패키지를 추가합니다.

  6. 클래스에 새 파일을 추가하고, 이름을 Constants.cs로 지정하고, 다음 변수를 추가하고, 문자열 리터럴 자리 표시자를 hubname 및 앞에서 언급한 DefaultListenSharedAccessSignature로 바꿉니다.

    // Azure app-specific connection string and hub path
    public const string ListenConnectionString = "<Azure DefaultListenSharedAccess Connection String>";
    public const string NotificationHubName = "<Azure Notification Hub Name>";
    
  7. 에서 AppDelegate.cs다음 using 문을 추가합니다.

    using WindowsAzure.Messaging.NotificationHubs;
    using UserNotifications
    
  8. 다음에서 구현을 MSNotificationHubDelegate 만듭니다 AppDelegate.cs.

    public class AzureNotificationHubListener : MSNotificationHubDelegate
    {
        public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
        {
    
        }
    }
    
  9. AppDelegate.cs에서 다음 코드와 일치하도록 FinishedLaunching()을 업데이트합니다.

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        // Set the Message listener
        MSNotificationHub.SetDelegate(new AzureNotificationHubListener());
    
        // Start the SDK
        MSNotificationHub.Start(ListenConnectionString, NotificationHubName);
    
        return true;
    }
    
  10. 에서 AppDelegate.cs클래스에 DidReceivePushNotification 대한 메서드를 구현합니다 AzureNotificationHubListener .

    public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
    {
        // This sample assumes { aps: { alert: { title: "Hello", body: "World" } } }
        var alertTitle = message.Title ?? "Notification";
        var alertBody = message.Body;
    
        var myAlert = UIAlertController.Create(alertTitle, alertBody, UIAlertControllerStyle.Alert);
        myAlert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
        UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(myAlert, true, null);
    }
    
  11. 디바이스에서 앱을 실행합니다.

테스트 푸시 알림 보내기

Azure Portal에서 테스트 보내기 옵션을 사용하여 앱에서 알림 수신을 테스트할 수 있습니다. 디바이스에 테스트 푸시 알림을 보냅니다.

Azure portal - Test Send

푸시 알림은 일반적으로 Mobile Apps 또는 호환되는 라이브러리를 사용하는 ASP.NET 같은 백 엔드 서비스에서 전송됩니다. 백 엔드에 라이브러리를 사용할 수 없는 경우 REST API를 직접 사용하여 알림 메시지를 보낼 수도 있습니다.

다음 단계

이 자습서에서는 백 엔드에 등록된 모든 iOS 디바이스에 브로드캐스트 알림을 보냈습니다. 특정 iOS 디바이스에 알림을 푸시하는 방법을 알아보려면 다음 자습서로 진행하세요.