Azure Notification Hubs 및 Node.js를 사용하여 푸시 알림 보내기

개요

Important

이 자습서를 완료하려면 활성 Azure 계정이 있어야 합니다. 계정이 없는 경우 Azure 평가판을 통해 몇 분 이내에 평가판 계정을 만들 수 있습니다.

이 가이드에서는 Node.js 애플리케이션에서 직접 Azure Notification Hubs를 통해 푸시 알림을 보내는 방법을 보여 줍니다.

시나리오는 다음 플랫폼에서 애플리케이션에 푸시 알림을 보내기를 포함합니다.

  • Android
  • iOS
  • 유니버설 Windows 플랫폼
  • Windows Phone

Notification Hubs

Azure Notification Hubs는 모바일 디바이스에 푸시 알림을 보내는 사용하기 쉽고 확장성 있는 다중 플랫폼 인프라를 제공합니다. 서비스 인프라에 대한 세부 정보는 Azure Notification Hubs 페이지를 참조하세요.

Node.js 애플리케이션 만들기

이 자습서의 첫 번째 단계는 새로운 빈 Node.js 애플리케이션을 만드는 것입니다. Node.js 애플리케이션을 만드는 방법에 대한 지침은 Node.js 애플리케이션을 만들어 Azure 웹 사이트에 배포, Windows PowerShell을 사용한 Node.js 클라우드 서비스 또는 WebMatrix를 사용하는 웹 사이트를 참조하세요.

Notification Hubs를 사용하도록 애플리케이션 구성

Azure Notification Hubs를 사용하려면 푸시 알림 REST 라이브러리와 통신하는 일련의 기본 제공 도우미 라이브러리가 포함되어 있는 Node.js Azure 패키지를 다운로드하여 사용해야 합니다.

NPM(Node Package Manager)을 사용하여 패키지 가져오기

  1. PowerShell(Windows), Terminal(Mac), Bash(Linux) 등과 같은 명령줄 인터페이스를 사용하여 빈 애플리케이션을 만든 폴더로 이동합니다.
  2. 명령 창에서 npm install azure-sb를 실행합니다.
  3. ls 또는 dir 명령을 수동으로 실행하여 node_modules 폴더가 만들어졌는지 확인할 수 있습니다.
  4. 이 폴더에서 알림 허브에 액세스하는 데 필요한 라이브러리가 들어 있는 Azure 패키지를 찾습니다.

참고 항목

자세한 내용은 공식 NPM 블로그에서 NPM 설치에 대해 자세히 알아볼 수 있습니다.

모듈 가져오기

텍스트 편집기를 사용하여 다음을 애플리케이션의 server.js 파일 맨 위에 추가합니다.

var azure = require('azure-sb');

Azure 알림 허브 연결 설정

NotificationHubService 개체를 사용하면 알림 허브에서 작업할 수 있습니다. 다음 코드는 hubname이라는 알림 허브에 대한 NotificationHubService 개체를 만듭니다. 이 코드를 server.js 파일의 위쪽에 있는 Azure 모듈을 가져오는 명령문 뒤에 추가합니다.

var notificationHubService = azure.createNotificationHubService('hubname','connectionstring');

다음 단계를 수행하여 Azure Portal에서 connectionstring 연결 값을 가져옵니다.

  1. 왼쪽 탐색 창에서 찾아보기를 클릭합니다.
  2. Notification Hubs를 선택한 다음 샘플로 사용하려는 허브를 찾습니다. 새 알림 허브를 만드는 데 도움이 필요한 경우 Windows 스토어 시작 자습서를 참조할 수 있습니다.
  3. 설정을 선택합니다.
  4. 액세스 정책을 클릭합니다. 공유 및 전체 액세스 연결 문자열이 모두 표시됩니다.

Azure portal - Notification Hubs

참고 항목

Azure PowerShellGet-AzureSbNamespace cmdlet 또는 Azure 클래식 CLIazure sb namespace show 명령을 통해 연결 문자열을 검색할 수도 있습니다.

일반 아키텍처

NotificationHubService 개체는 특정 디바이스와 애플리케이션에 푸시 알림을 보내는 다음 개체 인스턴스를 공개합니다.

  • Android - notificationHubService.gcm에서 사용할 수 있는 GcmService 개체를 사용합니다.
  • iOS - notificationHubService.apns에서 액세스할 수 있는 ApnsService 개체를 사용합니다.
  • Windows Phone - notificationHubService.mpns에서 사용할 수 있는 MpnsService 개체를 사용합니다.
  • 유니버설 Windows 플랫폼 - notificationHubService.wns에서 사용할 수 있는 WnsService 개체를 사용합니다.

참고 항목

MPNS(Microsoft 푸시 알림 서비스)는 사용되지 않으며 더 이상 지원되지 않습니다.

방법: Android 애플리케이션에 푸시 알림 보내기

GcmService 개체는 Android 애플리케이션에 푸시 알림을 보내는 데 사용할 수 있는 send 메서드를 제공합니다. send 메서드에서 허용하는 매개 변수는 다음과 같습니다.

  • Tags - 태그 식별자. 태그를 제공하지 않은 경우 모든 클라이언트에게 알림이 전송됩니다.
  • Payload - 메시지의 JSON 또는 원시 문자열 페이로드
  • Callback - 콜백 함수.

페이로드 형식에 대한 자세한 내용은 페이로드 설명서를 참조하세요.

다음 코드는 NotificationHubService에서 공개하는 GcmService 인스턴스를 사용하여 등록된 모든 클라이언트에 푸시 알림을 보냅니다.

var payload = {
  data: {
    message: 'Hello!'
  }
};
notificationHubService.gcm.send(null, payload, function(error){
  if(!error){
    //notification sent
  }
});

방법: iOS 애플리케이션에 푸시 알림 보내기

위에서 설명한 Android 애플리케이션과 마찬가지로 ApnsService 개체는 iOS 애플리케이션에 알림을 보내는 데 사용할 수 있는 send 메서드를 제공합니다. send 메서드에서 허용하는 매개 변수는 다음과 같습니다.

  • Tags - 태그 식별자. 태그를 제공하지 않은 경우 모든 클라이언트에게 알림이 전송됩니다.
  • Payload - 메시지의 JSON 또는 문자열 페이로드
  • Callback - 콜백 함수.

페이로드 형식에 대한 자세한 내용은 usernotifications 가이드알림 콘텐츠 섹션을 참조하세요.

다음 코드는 NotificationHubService에서 공개하는 ApnsService 인스턴스를 사용하여 모든 클라이언트에 경고 메시지를 보냅니다.

var payload={
    alert: 'Hello!'
  };
notificationHubService.apns.send(null, payload, function(error){
  if(!error){
      // notification sent
  }
});

방법: Windows Phone 애플리케이션에 푸시 알림 보내기

MpnsService 개체는 Windows Phone 애플리케이션에 푸시 알림을 보내는 데 사용할 수 있는 send 메서드를 제공합니다. send 메서드에서 허용하는 매개 변수는 다음과 같습니다.

  • Tags - 태그 식별자. 태그를 제공하지 않은 경우 모든 클라이언트에게 알림이 전송됩니다.
  • Payload - 메시지의 XML 페이로드
  • TargetName - toast - 알림 메시지인 경우. token - 타일 알림 메시지인 경우.
  • NotificationClass - 알림 우선 순위. 유효한 값은 서버에서 푸시 알림 문서의 HTTP 헤더 요소 섹션을 참조하세요.
  • Options - 선택적 요청 헤더
  • Callback - 콜백 함수.

유효한 TargetName, NotificationClass 및 헤더 옵션에 대한 목록은 서버의 푸시 알림 페이지를 확인하세요.

다음 샘플 코드는 NotificationHubService에서 공개하는 MpnsService 인스턴스를 사용하여 알림 푸시 알림을 보냅니다.

var payload = '<?xml version="1.0" encoding="utf-8"?><wp:Notification xmlns:wp="WPNotification"><wp:Toast><wp:Text1>string</wp:Text1><wp:Text2>string</wp:Text2></wp:Toast></wp:Notification>';
notificationHubService.mpns.send(null, payload, 'toast', 22, function(error){
  if(!error){
    //notification sent
  }
});

방법: UWP(범용 Windows 플랫폼) 애플리케이션에 푸시 알림 보내기

WnsService 개체는 유니버설 Windows 플랫폼 애플리케이션에 푸시 알림을 보내는 데 사용할 수 있는 send 메서드를 제공합니다. send 메서드에서 허용하는 매개 변수는 다음과 같습니다.

  • Tags - 태그 식별자. 태그를 제공하지 않은 경우 모든 클라이언트에게 알림이 전송됩니다.
  • Payload - XML 메시지 페이로드
  • Type - 알림 유형
  • Options - 선택적 요청 헤더
  • Callback - 콜백 함수.

유효한 유형 및 요청 헤더 목록은 푸시 알림 서비스 요청 및 응답 헤더를 참조하세요.

다음 코드는 NotificationHubService에서 공개하는 WnsService 인스턴스를 사용하여 UWP 앱에 알림 푸시 알림을 보냅니다.

var payload = '<toast><visual><binding template="ToastText01"><text id="1">Hello!</text></binding></visual></toast>';
notificationHubService.wns.send(null, payload , 'wns/toast', function(error){
  if(!error){
      // notification sent
  }
});

다음 단계

위의 샘플 코드 조각을 사용하면 다양한 디바이스에 푸시 알림을 전달하는 서비스 인프라를 쉽게 작성할 수 있습니다. 이제 Node.js가 있는 Notification Hubs를 사용하는 기본 사항을 배웠으므로 다음 링크를 따라서 이러한 기능을 더욱 확장할 수 있는 방법에 대해 자세히 알아봅니다.