시작하기 전에 연락처를 Windows에 추가하세요.
연락처 활동을 기록하여 애플리케이션 내에서 사용자와 연락처 간의 의미 있는 상호 작용을 나타낼 수 있습니다. 연락처 활동은 계획된 단계에서 People Widgets, Share Sheet 및 Windows 검색 상자와 같은 사람 관련 환경 전반에서 사용자가 연락처와 어떻게 상호 작용하는지 Windows가 이해하는 데 도움이 되는 가벼운 상호 작용 신호 역할을 합니다.
Note
ContactAnnotationOperations 참조는 현재 Activity 값에 대한 Windows 또는 SDK 버전을 나열하지 않으며, 이 문서에서는 현재 연락처 활동을 사용하는 환경을 명시하지 않습니다. 참조 문서에는 버전 기록에서 Share(Windows 10 버전 1703, SDK 15063)이 가장 최근에 문서화된 값으로 나열되어 있습니다. 이전 SDK 버전을 대상으로 하는 앱에서 Activity에 의존하기 전에 업데이트된 API 참조를 확인하세요.
각 활동은 다음과 같은 세 가지 주요 정보를 기록합니다.
- Who — 상호 작용과 관련된 담당자
- 상호 작용 유형 — 발생한 상호 작용의 유형
- 발생 시간 — 상호 작용이 발생한 시간
연락처 활동을 기록하려면 애플리케이션이 연락처와 연결된 ContactAnnotation을 만들고 SupportedOperations을 ContactAnnotationOperations.Activity로 설정해야 합니다. Windows 이 작업 형식의 주석을 연락처와 연결된 상호 작용 신호로 해석합니다.
각 활동은 단일 상호 작용 이벤트를 나타내며 별도로 기록해야 합니다. 여러 연락처 활동을 제출할 때 상호 작용 레코드를 반복하고 각 이벤트마다 TrySaveAnnotationAsync를 호출합니다. 루프는 일괄 처리 API를 제공하거나 동기화 오버헤드를 줄이지 않습니다.
연락처 활동 페이로드
연락처 활동을 기록하려면 ProviderProperties["ActivityPayload"]에서 을 상호 작용을 설명하는 JSON 문자열로 설정합니다.
페이로드에는 다음 속성이 포함되어야 합니다.
| Property | Description |
|---|---|
ActivityType |
상호 작용 유형을 식별합니다. |
ActivityTimestampUnix |
상호 작용이 발생한 시간(UTC Unix 시간(초)으로 표현됩니다.) |
키 ActivityPayload와 페이로드 속성 이름 ActivityType 및 ActivityTimestampUnix를 표시된 대로 정확하게 사용합니다. 이러한 이름은 활동을 설명하기 위한 문자열 기반 계약을 형성합니다.
지원되는 연락처 활동 유형
ActivityType 필드는 사용자와 연락처 간에 발생한 상호 작용을 식별합니다. Windows는 현재 다음과 같은 활동 유형을 지원합니다.
| 활동 유형 | Description |
|---|---|
message |
연락처와 메시지 보내기 또는 받기 |
call |
오디오 또는 영상 통화를 시작하거나 응답합니다. |
email |
전자 메일 보내기 또는 받기 |
meeting |
연락처와 관련된 모임에 참가하거나 일정을 잡습니다. |
share |
연락처에 콘텐츠를 공유하는 중입니다. |
social |
소셜 경험을 통해 대화 상대와 상호 작용 |
profileInteraction |
연락처의 프로필 열기 또는 상호작용 |
애플리케이션은 애플리케이션 내에서 발생한 사용자 상호 작용을 가장 잘 나타내는 활동 유형을 선택해야 합니다.
연락처 활동 기록 예제
다음 예제에서는 메시징 상호 작용을 연락처 활동으로 기록하는 방법을 보여 있습니다.
long nowUnix = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
var payload = new
{
ActivityType = "message",
ActivityTimestampUnix = nowUnix
};
var annotation = new ContactAnnotation
{
ContactId = contact.Id,
RemoteId = contact.RemoteId,
SupportedOperations = ContactAnnotationOperations.Activity
};
annotation.ProviderProperties["ActivityPayload"] =
JsonSerializer.Serialize(payload);
bool saved = await this.contactAnnotationList.TrySaveAnnotationAsync(annotation);
if (!saved)
{
// The annotation wasn't saved, so Windows didn't receive this activity.
// Log the failure or retry later. Don't treat the interaction as recorded.
System.Diagnostics.Debug.WriteLine(
$"Failed to save contact activity for contact {contact.RemoteId}.");
}
TrySaveAnnotationAsync는 주석을 저장할 수 없을 때 false를 반환하므로 활동이 기록되었다고 가정하기 전에 결과를 확인하세요.
true 결과는 주석이 저장되었음을 의미합니다. Windows가 나중에 해당 활동을 어떻게 처리하는지는 나타내지 않습니다.
담당자 활동 액세스 모델
연락처 작업은 앱의 관점에서 쓰기 전용입니다. 앱은 활동 레코드를 제출할 수 있지만 Windows는 현재 이전에 제출한 활동 레코드를 검색하거나 명시적으로 삭제하는 것을 지원하지 않습니다. Windows에서 관리되는 수명 주기 정리는 다음 섹션에 설명된 대로 별개입니다.
앱이 상호 작용 기록을 유지하거나 관리해야 하는 경우 자체 스토리지 또는 백엔드 서비스에 보관합니다.
연락처 활동 라이프사이클
연락처 활동은 애플리케이션에서 제공하는 RemoteId를 사용해 연락처와 연결됩니다.
연락처가 제거되거나 연결된 RemoteId가 삭제되면 해당 연락처에 연결된 연락처 활동이 자동으로 제거됩니다. 마찬가지로 애플리케이션이 제거되거나 연결된 UserDataAccount가 제거되면 Windows는 해당 애플리케이션에서 기록한 연락처 및 연락처 활동을 자동으로 제거합니다.
연락 활동의 처리 및 보존
접촉 활동은 Windows에서 상호 작용 신호로 처리됩니다.
보존 기간, TTL(만료), 집계 및 연락처 활동 평가는 Windows 내부적으로 관리됩니다. 애플리케이션은 작업이 저장되는 기간 또는 제출 후 처리 방법을 제어하지 않습니다.
연락처 활동은 실제 사용자 상호 작용을 나타내야 하며 연락처 순위 또는 가시성에 영향을 주려고 생성해서는 안 됩니다. Windows는 이러한 신호가 내부 플랫폼 논리를 사용하여 사람 관련 환경에 어떻게 기여하는지 결정합니다.
관련 콘텐츠
Windows developer