앱에 대상 푸시 알림 구성
파트너 센터의 푸시 알림 페이지에서 UWP(유니버설 Windows 플랫폼) 앱이 설치된 디바이스에 대상 푸시 알림을 보내 고객 참여를 직접 유도할 수 있습니다. 예를 들어 대상 푸시 알림을 사용하여 고객이 앱을 평가하거나 새 기능을 시도하는 등의 작업을 수행하도록 장려할 수 있습니다. 알림 메시지, 타일 알림 및 원시 XML 알림을 포함하여 여러 가지 유형의 푸시 알림을 보낼 수 있습니다. 푸시 알림으로 인한 앱 시작 속도를 추적할 수도 있습니다. 이 기능에 대한 자세한 내용은 앱 고객에게 푸시 알림 보내기를 참조하세요 .
파트너 센터에서 고객에게 대상 푸시 알림을 보내려면 먼저 Microsoft Store Services SDK에서 StoreServicesEngagementManager 클래스의 메서드를 사용하여 알림을 받도록 앱을 등록해야 합니다. 이 클래스에서 별도의 메서드를 사용하여 대상 푸시 알림에 대한 응답으로 앱이 시작되었음을 파트너 센터에 알리고(알림으로 발생한 앱 실행 속도를 추적하려는 경우) 알림 수신을 중지할 수 있습니다.
프로젝트 구성
코드를 작성하기 전에 다음 단계에 따라 프로젝트에서 Microsoft Store Services SDK에 대한 참조를 추가합니다.
- 아직 설치하지 않은 경우 개발 컴퓨터에 Microsoft Store Services SDK를 설치합니다.
- Visual Studio에서 새 프로젝트를 엽니다.
- 솔루션 탐색기에서 프로젝트 참조 노드를 마우스 우클릭하고 참조 추가를 클릭합니다.
- 참조 관리자에서 유니버설 Windows를 확장하고 확장을 클릭합니다.
- SDK 목록에서 Microsoft Engagement Framework 옆에 있는 검사 상자를 클릭하고 확인을 클릭합니다.
푸시 알림 등록
앱에서 파트너 센터의 대상 푸시 알림을 수신하도록 등록하려면
프로젝트에서, 시작 시 실행되는 코드에서 알림을 받도록 앱을 등록할 수 있는 섹션을 찾습니다.
다음 문을 코드 파일의 맨 위에 추가합니다.
using Microsoft.Services.Store.Engagement;
StoreServicesEngagementManager 개체를 가져오고 앞에서 식별한 시작 코드에서 RegisterNotificationChannelAsync 오버로드 중 하나를 호출합니다. 이 메서드는 앱이 시작될 때마다 호출되어야 합니다.
파트너 센터에서 알림에 대한 고유한 채널 URI를 만들게 하려면 RegisterNotificationChannelAsync() 오버로드를 호출합니다.
StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); await engagementManager.RegisterNotificationChannelAsync();
중요
앱에서 CreatePushNotificationChannelForApplicationAsync를 호출하여 WNS에 대한 알림 채널도 만드는 경우 코드에서 CreatePushNotificationChannelForApplicationAsync 및 RegisterNotificationChannelAsync() 오버로드를 동시에 호출하지 않도록 합니다. 이러한 두 메서드를 모두 호출해야 하는 경우 순차적으로 호출하고 다른 메서드를 호출하기 전에 한 메서드의 반환을 기다리고 있는지 확인합니다.
파트너 센터의 대상 푸시 알림에 사용할 채널 URI를 지정하려면 RegisterNotificationChannelAsync(StoreServicesNotificationChannelParameters) 오버로드를 호출합니다. 예를 들어 앱에서 이미 WNS(Windows 푸시 알림 서비스)를 사용하고 동일한 채널 URI를 사용하려는 경우 이 작업을 수행할 수 있습니다. 먼저 StoreServicesNotificationChannelParameters 개체를 만들고 CustomNotificationChannelUri 속성을 채널 URI에 할당해야 합니다.
StoreServicesNotificationChannelParameters parameters = new StoreServicesNotificationChannelParameters(); parameters.CustomNotificationChannelUri = "Assign your channel URI here"; StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); await engagementManager.RegisterNotificationChannelAsync(parameters);
참고 항목
RegisterNotificationChannelAsync 메서드를 호출하면 앱의 로컬 앱 데이터 저장소(ApplicationData.LocalFolder 속성이 반환하는 폴더)에 MicrosoftStoreEngagementSDKId.txt라는 파일이 생성됩니다. 이 파일에는 대상 푸시 알림 인프라에서 사용하는 ID가 포함되어 있습니다. 앱에서 이 파일을 수정하거나 삭제하지 않도록 합니다. 그러지 않으면 사용자가 여러 개의 알림을 받거나, 알림이 다른 면에서 제대로 동작하지 않을 수 있습니다.
대상 푸시 알림이 고객에게 라우팅되는 방법
앱에서 RegisterNotificationChannelAsync를 호출하면 이 메서드가 현재 디바이스에 로그인되어 있는 고객의 Microsoft 계정을 수집합니다. 나중에 이 고객이 포함된 세그먼트로 대상 푸시 알림을 보내면 파트너 센터에서 이 고객의 Microsoft 계정과 연결된 디바이스로 알림을 보냅니다.
앱을 시작한 고객이 Microsoft 계정으로 여전히 디바이스에 로그인된 상태에서 다른 사람에게 디바이스를 사용하라고 줄 경우 다른 사람이 원래 고객을 대상으로 하는 알림을 볼 수 있다는 점에 유의하세요. 이로 인해 의도치 않은 결과가 초래될 수 있으며, 고객이 로그인 후 사용하는 서비스를 제공하는 앱의 경우 특히 유의해야 합니다. 이 시나리오에서 다른 사용자가 대상 알림을 보지 못하도록 방지하려면 고객이 앱에서 로그아웃할 때 UnregisterNotificationChannelAsync 메서드를 호출합니다. 자세한 내용은 이 문서의 뒷부분에 나오는 푸시 알림 등록 취소를 참조하세요.
사용자가 앱을 시작할 때 앱의 응답 방식
앱에서 알림을 수신하도록 등록한 뒤, 파트너 센터에서 앱 고객에게 푸시 알림을 전송하고 나면 사용자가 푸시 알림에 대한 응답으로 앱을 시작할 때 앱에서 다음 진입점 중 하나가 호출됩니다. 사용자가 앱을 실행할 때 실행하려는 코드가 있는 경우 앱에서 이러한 진입점 중 하나에 코드를 추가할 수 있습니다.
푸시 알림에 포그라운드 활성화 유형이 있는 경우 프로젝트에서 App 클래스의 OnActivated 메서드를 재정의하고 이 메서드에 코드를 추가합니다.
예를 들어 앱에서 유료 추가 기능을 구매한 앱 사용자에게 무료 추가 기능을 부여하여 보상할 수 있습니다. 이 경우 이러한 사용자를 대상으로 하는 고객 세그먼트에 푸시 알림을 보낼 수 있습니다. 그런 다음 위에 나열된 진입점 중 하나에서 무료 앱 내 구매를 부여하는 코드를 추가할 수 있습니다.
앱 시작 파트너 센터 알림
파트너 센터의 대상 푸시 알림에 대해 앱 시작 속도 추적 옵션을 선택한 경우 앱의 적절한 진입점에서 ParseArgumentsAndTrackAppLaunch 메서드를 호출하여 푸시 알림에 대한 응답으로 앱이 시작되었음을 파트너 센터에 알립니다.
이 메서드는 앱의 원래 시작 인수도 반환합니다. 푸시 알림에 대해 앱 시작 속도를 추적하도록 선택하고 나면 불특정 추적 ID가 시작 인수에 추가되어 파트너 센터에서 앱 시작 추적이 지원됩니다. 앱에 대한 실행 인수는 ParseArgumentsAndTrackAppLaunch 메서드에 전달해야 합니다. 그러면 이 메서드는 파트너 센터에 추적 ID를 보내고, 시작 인수에서 추적 ID를 제거하고, 코드에 원래 실행 인수를 반환합니다.
이 메서드를 호출하는 방법은 푸시 알림의 활성화 유형에 따라 다릅니다.
푸시 알림에 포그라운드 활성화 유형이 있는 경우 앱의 OnActivated 메서드 재정의에서 이 메서드를 호출하고 이 메서드에 전달되는 ToastNotificationActivatedEventArgs 개체에서 사용할 수 있는 인수를 전달합니다. 다음 코드 예제에서는 코드 파일에 Microsoft.Services.Store.Engagement 및 Windows.ApplicationModel.Activation 네임스페이스에 대한 using 문이 있다고 가정합니다.
protected override void OnActivated(IActivatedEventArgs args) { base.OnActivated(args); if (args is ToastNotificationActivatedEventArgs) { var toastActivationArgs = args as ToastNotificationActivatedEventArgs; StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); string originalArgs = engagementManager.ParseArgumentsAndTrackAppLaunch( toastActivationArgs.Argument); // Use the originalArgs variable to access the original arguments // that were passed to the app. } }
푸시 알림에 백그라운드 활성화 유형이 있는 경우 백그라운드 작업에 대한 Run 메서드에서 이 메서드를 호출하고 이 메서드에 전달되는 ToastNotificationActionTriggerDetail 개체에서 사용할 수 있는 인수를 전달합니다. 다음 코드 예제의 코드 파일에 Microsoft.Services.Store.Engagement, Windows.ApplicationModel.Background 및 Windows.UI.Notifications 네임스페이스에 대한 using 문이 있다고 가정합니다.
public void Run(IBackgroundTaskInstance taskInstance) { var details = taskInstance.TriggerDetails as ToastNotificationActionTriggerDetail; if (details != null) { StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); string originalArgs = engagementManager.ParseArgumentsAndTrackAppLaunch(details.Argument); // Use the originalArgs variable to access the original arguments // that were passed to the app. } }
푸시 알림 등록 취소
앱에서 파트너 센터의 대상 푸시 알림 수신을 중지하려면 UnregisterNotificationChannelAsync 메서드를 호출합니다.
StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault();
await engagementManager.UnregisterNotificationChannelAsync();
이 메서드는 앱이 모든 서비스에서 더 이상 푸시 알림을 받지 않도록 알림에 사용되는 채널을 무효화합니다. 알림이 종료되면 파트너 센터의 대상 푸시 알림 및 WNS를 사용하는 다른 알림을 포함한 어떤 서비스에도 채널을 다시 사용할 수 없습니다. 이 앱에 푸시 알림 보내기를 다시 시작하려면 앱에서 새 채널을 요청해야 합니다.