다음을 통해 공유


컬렉션으로 알림 메시지 그룹화

컬렉션을 사용하여 알림 센터에서 앱의 알림을 구성할 수 있습니다. 컬렉션은 사용자가 알림 센터에서 정보를 더 쉽게 찾고 개발자가 알림을 관리하는 데 도움이 됩니다. 아래 API를 사용하여 알림 컬렉션을 만들고, 제거하고 업데이트할 수 있습니다.

Important

Creators Update 필요: 알림 컬렉션을 사용하려면 SDK 15063을 대상으로 하고 빌드 15063 이상을 실행해야 합니다. 관련 API는 Windows.UI.Notifications.ToastCollectionWindows.UI.Notifications.ToastCollectionManager 등이 있습니다.

아래의 예제에서 채팅 그룹에 따라 알림을 구분하는 메시지 앱을 확인할 수 있습니다. 각 제목(Comp Sci 160A Project Chat, Direct Messages, Lacrosse Team Chat)은 별도 컬렉션입니다. 알림은 모두 동일한 앱의 알림임에도 불구하고 별도의 앱에서 온 것처럼 명확하게 그룹화됩니다. 알림을 구성하는 보다 섬세한 방법을 찾고자 하는 경우 알림 헤더를 참조하세요.
두 개의 서로 다른 알림 그룹이 있는 컬렉션 예제

컬렉션 만들기

위 이미지에서와 같이 각 컬렉션을 만들 때 컬렉션 제목의 일부로 알림 센터 내에 표시되는 표시 이름 및 아이콘을 제공해야 합니다. 컬렉션에는 또한 사용자가 컬렉션의 제목을 클릭할 때 앱 내에서 앱이 오른쪽 위치로 이동하기 위해 실행 인수가 필요합니다.

컬렉션 만들기

// Create a toast collection
public async void CreateToastCollection()
{
	string displayName = "Work Email"; 
	string launchArg = "NavigateToWorkEmailInbox"; 
	Uri icon = new Windows.Foundation.Uri("ms-appx:///Assets/workEmail.png");

	// Constructor
	ToastCollection workEmailToastCollection = new ToastCollection(
		"MyToastCollection", 
		displayName,
 		launchArg, 
		icon);

	// Calls the platform to create the collection
	await ToastNotificationManager.GetDefault().GetToastCollectionManager().SaveToastCollectionAsync(workEmailToastCollection);  								
}

컬렉션에 알림 보내기

로컬, 예약 및 푸시의 세 가지 다른 알림 파이프라인에서 알림 보내기를 다룹니다. 각 이러한 예에서 바로 아래에 있는 코드와 함께 보낼 샘플 알림을 만든 다음, 각 파이프라인을 통해 컬렉션에 알림을 추가하는 방법에 대해 중점적으로 다루겠습니다.

알림 콘텐츠를 생성합니다.

// Construct the content
var content = new ToastContentBuilder()
	.AddText("Adam sent a message to the group")
	.GetToastContent();

컬렉션에 알림 보내기

// Create the toast
ToastNotification toast = new ToastNotification(content.GetXml());

// Get the collection notifier
var notifier = await ToastNotificationManager.GetDefault().GetToastNotifierForToastCollectionIdAsync("MyToastCollection");

// And show the toast
notifier.Show(toast);

컬렉션에 예정된 알림 추가

// Create scheduled toast from XML above
ScheduledToastNotification scheduledToast = new ScheduledToastNotification(content.GetXml(), DateTimeOffset.Now.AddSeconds(10));

// Get notifier
var notifier = await ToastNotificationManager.GetDefault().GetToastNotifierForToastCollectionIdAsync("MyToastCollection");
    
// Add to schedule
notifier.AddToSchedule(scheduledToast);

컬렉션에 푸시 알림 보내기

푸시 알림의 경우 POST 메시지에 X-WNS-CollectionId 헤더를 추가해야 합니다.

// Add header to HTTP request
request.Headers.Add("X-WNS-CollectionId", collectionId); 

컬렉션 관리

알림 컬렉션 관리자 만들기

이 '컬렉션 관리' 섹션의 나머지 코드 조각에 대해 아래의 collectionManager를 사용합니다.

ToastCollectionManger collectionManager = ToastNotificationManager.GetDefault().GetToastCollectionManager();

모든 컬렉션 가져오기

IReadOnlyList<ToastCollection> collections = await collectionManager.FindAllToastCollectionsAsync();

만든 컬렉션의 수 가져오기

int toastCollectionCount = (await collectionManager.FindAllToastCollectionsAsync()).Count;

컬렉션 제거

await collectionManager.RemoveToastCollectionAsync("MyToastCollection");

컬렉션 업데이트

동일한 ID를 사용하여 새 컬렉션을 만들고 새 컬렉션 인스턴스를 저장하여 컬렉션을 업데이트할 수 있습니다.

string displayName = "Updated Display Name"; 
string launchArg = "UpdatedLaunchArgs"; 
Uri icon = new Windows.Foundation.Uri("ms-appx:///Assets/updatedPicture.png");

// Construct a new toast collection with the same collection id
ToastCollection updatedToastCollection = new ToastCollection(
	"MyToastCollection", 
	displayName,
	launchArg, 
	icon);

// Calls the platform to update the collection by saving the new instance
await collectionManager.SaveToastCollectionAsync(updatedToastCollection);  								

컬렉션에서 알림 관리

그룹 및 태그 속성

그룹 및 태그 속성은 함께 고유하게 컬렉션 내에서 알림을 식별합니다. Group(및 Tag)은 알림을 식별하기 위해 복합 기본 키(2개 이상의 식별자) 역할을 합니다. 예를 들어 알림을 제거하거나 교체하려는 경우 제거/교체할 알림이 어떤 알림인지 지정해야 합니다. 이는 Tag 및 Group을 지정하여 수행합니다. 예를 들어 메시지 앱입니다. 개발자는 대화 ID를 Group으로, 메시지 ID를 Tag로 사용할 수 있습니다.

컬렉션에서 알림 제거

태그 또는 그룹 ID를 사용하여 개별 알림을 제거하거나 컬렉션에 있는 모든 알림을 지울 수 있습니다.

// Get the history
var collectionHistory = await ToastNotificationManager.GetDefault().GetHistoryForToastCollectionAsync("MyToastCollection");

// Remove toast
collectionHistory.Remove(tag, group); 

컬렉션 내 모든 알림 지우기

// Get the history
var collectionHistory = await ToastNotificationManager.GetDefault().GetHistoryForToastCollectionAsync("MyToastCollection");

// Remove toast
collectionHistory.Clear();

알림 비주얼라이저의 컬렉션

알림 비주얼라이저 도구를 사용하여 컬렉션을 디자인할 수 있습니다. 다음 단계를 수행합니다.

  • 오른쪽 하단 모서리에서 기어 아이콘을 클릭합니다.
  • '알림 컬렉션'을 선택합니다.
  • 알림 미리 보기 위에 '알림 컬렉션' 드롭다운 메뉴가 있습니다. 컬렉션 관리를 선택합니다.
  • '컬렉션 추가'를 클릭하고 컬렉션에 대한 세부 정보를 작성한 다음, 저장합니다.
  • 컬렉션을 더 추가하거나 컬렉션 관리 상자를 꺼 기본 화면으로 돌아갑니다.
  • '알림 컬렉션' 드롭다운 메뉴에서 알림을 추가하려는 컬렉션을 선택합니다.
  • 알림을 발생시키면 알림 센터에서 적절한 컬렉션에 추가됩니다.

기타 세부 정보

사용자가 만든 알림 컬렉션은 사용자의 알림 설정에도 반영됩니다. 사용자는 이러한 각 개별 컬렉션에 대한 설정을 토글하여 이러한 하위 그룹을 켜거나 끌 수 있습니다. 알림이 앱의 최상위 수준에서 꺼진 경우 모든 컬렉션 알림 또한 꺼집니다. 그리고 각 컬렉션은 기본적으로 알림 센터에서 3개의 알림을 표시하며 사용자는 최대 20개의 알림을 표시하도록 확장할 수 있습니다.