Azure Notification Hubs를 사용하여 플랫폼 간 알림 보내기

이 자습서는 이전 자습서 Azure Notification Hubs를 사용하여 특정 사용자에게 알림 보내기를 기반으로 합니다. 이전 자습서에서는 인증된 특정 사용자에게 등록된 모든 디바이스에 알림을 푸시하는 방법을 설명합니다. 해당 접근 방식에는 지원되는 각 클라이언트 플랫폼에 알림을 보내기 위해 여러 요청이 필요했습니다. Azure Notification Hubs는 템플릿을 지원하며, 특정 디바이스에서 알림을 받는 방법을 지정할 수 있습니다. 이 메서드는 플랫폼 간 알림 전송을 간소화합니다.

이 문서에서는 템플릿을 활용하여 모든 플랫폼을 대상으로 하는 알림을 보내는 방법을 보여 줍니다. 이 문서에서는 단일 요청을 사용하여 플랫폼 중립 알림을 보냅니다. 템플릿에 대한 자세한 내용은 Notification Hubs 개요를 참조하세요.

Important

Windows 전화 프로젝트 8.1 이하는 Visual Studio 2019에서 지원되지 않습니다. 자세한 내용은 Visual Studio 2019 플랫폼 대상 지정 및 호환성을 참조 하세요.

참고 항목

Notification Hubs를 사용하면 디바이스가 동일한 태그를 사용하여 여러 템플릿을 등록할 수 있습니다. 이 경우 태그를 대상으로 하는 들어오는 메시지는 각 템플릿에 대해 하나씩 여러 알림이 디바이스에 전달됩니다. 이 프로세스를 통해 Windows 스토어 앱에서 배지 및 알림 메시지와 같은 여러 시각적 알림에 동일한 메시지를 표시할 수 있습니다.

템플릿을 사용하여 플랫폼 간 알림 보내기

참고 항목

MPNS(Microsoft Push Notification Service)는 더 이상 사용되지 않으며 더 이상 지원되지 않습니다.

이 섹션에서는 Azure Notification Hubs 자습서를 사용하여 특정 사용자에게 알림 보내기에서 빌드한 샘플 코드를 사용합니다. 전체 샘플은 GitHub에서 다운로드할 수 있습니다.

템플릿을 사용하여 플랫폼 간 알림을 보내려면 다음을 수행합니다.

  1. 솔루션 탐색기 Visual Studio에서 Controllers 폴더를 확장한 다음 RegisterController.cs 파일을 엽니다.

  2. 새 등록을 만드는 메서드에서 Put 코드 블록을 찾은 다음 콘텐츠를 다음 코드로 바꿉 switch 다.

    switch (deviceUpdate.Platform)
    {
        case "mpns":
            var toastTemplate = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<wp:Notification xmlns:wp=\"WPNotification\">" +
                    "<wp:Toast>" +
                        "<wp:Text1>$(message)</wp:Text1>" +
                    "</wp:Toast> " +
                "</wp:Notification>";
            registration = new MpnsTemplateRegistrationDescription(deviceUpdate.Handle, toastTemplate);
            break;
        case "wns":
            toastTemplate = @"<toast><visual><binding template=""ToastText01""><text id=""1"">$(message)</text></binding></visual></toast>";
            registration = new WindowsTemplateRegistrationDescription(deviceUpdate.Handle, toastTemplate);
            break;
        case "apns":
            var alertTemplate = "{\"aps\":{\"alert\":\"$(message)\"}}";
            registration = new AppleTemplateRegistrationDescription(deviceUpdate.Handle, alertTemplate);
            break;
        case "fcm":
            var messageTemplate = "{\"data\":{\"message\":\"$(message)\"}}";
            registration = new FcmTemplateRegistrationDescription(deviceUpdate.Handle, messageTemplate);
            break;
        default:
            throw new HttpResponseException(HttpStatusCode.BadRequest);
    }
    

    이 코드는 플랫폼별 메서드를 호출하여 네이티브 등록 대신 템플릿 등록을 만듭니다. 템플릿 등록은 기본 등록에서 파생되므로 기존 등록을 수정할 필요는 없습니다.

  3. 솔루션 탐색기 Controllers 폴더에서 NotificationsController.cs 파일을 엽니다. Post 메서드를 다음 코드로 바꿉니다.

    public async Task<HttpResponseMessage> Post()
    {
        var user = HttpContext.Current.User.Identity.Name;
        var userTag = "username:" + user;
    
        var notification = new Dictionary<string, string> { { "message", "Hello, " + user } };
        await Notifications.Instance.Hub.SendTemplateNotificationAsync(notification, userTag);
    
        return Request.CreateResponse(HttpStatusCode.OK);
    }
    

    이 코드는 동시에 모든 플랫폼에 알림을 보냅니다. 네이티브 페이로드를 지정하지 않습니다. Notification Hubs는 등록된 템플릿에 지정된 대로 제공된 태그 값을 사용하여 모든 디바이스에 올바른 페이로드를 빌드하고 제공합니다.

  4. Web API 프로젝트를 다시 게시합니다.

  5. 클라이언트 앱을 다시 실행하여 등록이 성공했는지 확인합니다.

  6. 필요에 따라 클라이언트 앱을 두 번째 디바이스에 배포한 다음, 앱을 실행합니다. 알림이 각 디바이스에 표시됩니다.

다음 단계

이제 이 자습서를 완료했으므로 다음 문서에서 Notification Hubs 및 템플릿에 대해 자세히 알아보세요.