대상 앱과 공유

Windows 8 앱 개발자 블로그

Windows 8 엔지니어링 팀에서 제공하는 Windows 8용 Metro 스타일 앱 개발의 이해

대상 앱과 공유

  • Comments 0

앱을 통한 공유에서는 Food with Friends 앱을 예로 들어 이 앱에서 여러 대상 앱으로 콘텐츠를 공유하여 풍부한 전체 시나리오를 수행할 수 있는 아이디어를 소개했습니다. Windows 8의 앱은 여러분의 고객이 친구나 다른 앱과 공유하고 싶어할 만한 흥미로운 콘텐츠를 제공합니다. 흥미롭고 잘 디자인된 공유 대상을 활용하면 여러분의 앱은 고객들이 많이 연결된 소셜 네트워킹의 중심이 될 수 있습니다.

이 글에서는 Food with Friends와 같은 앱에 대상 공유 계약을 사용하는 방법에 대해 알아봅니다. 이 계약을 통해 앱에서 다른 앱의 '콘텐츠를 받고' 이 콘텐츠를 사용하여 품질을 높일 수 있습니다. 여러분의 앱이 해당 범주에서 최고의 앱이 될 수 있게 도와드리겠습니다.

대상 앱은 대상 공유 계약을 사용하여 만들 수 있고, 쉽고 빠른 공유 환경을 제공합니다. Windows의 모든 앱이 공유 대상이 될 수 있는 것은 아니지만 자신의 앱에서 다른 앱을 통해 받은 콘텐츠를 게시, 변환, 저장하거나 약간의 가치를 더할 수 있다면 앱을 공유 대상으로 만드는 데 다음과 같은 이점이 있습니다.

  • 자신의 앱이 항상 대상 앱 목록에 표시됩니다. 따라서 다른 앱과 즉시 관련을 맺고 연결되어 원하는 데이터를 공유할 수 있습니다.
  • 공유 계약으로 본인의 앱과 다른 원본 앱이 연결되므로 양쪽 앱을 일 대 일로 통합할 필요가 없습니다.
  • OS에 항상 공유 참 메뉴가 표시되어 사용 가능하므로 대상 앱을 OS에서 확인할 수 있어 앱의 기능 범위가 확대됩니다. 이는 더 많은 고객을 자신의 앱으로 끌어올 수 있는 잠재적인 요소가 됩니다.

공유 콘텐츠 수신

공유 대상 앱을 통해 흥미로운 경험을 제공할 수 있는 몇 가지 예를 살펴보겠습니다.

Windows 8의 메일 앱과 피플 앱은 이미 익숙할 것입니다. 메일 앱은 콘텐츠를 받아서 여러 친구들과 공유할 수 있는 쉽고도 개인적인 공유 대상 경험을 제공합니다. 피플 앱을 통해서는 소셜 네트워크상의 많은 사용자들과 콘텐츠를 공유할 수 있으며, 소셜 공유 외에도 앱 간 공유를 통해 보다 앞서 나갈 수 있습니다. SkyDrive와 같은 생산성 앱은 Windows상의 어떤 파일이든 받아 클라우드에 저장할 수 있습니다. 메모 앱은 텍스트, 링크 및 다양한 형식의 데이터를 받아 나중에 참조하도록 보관할 수 있으며 창의력도 마음껏 발휘할 수 있습니다.

사진 앱에서 사진을 시각 퍼즐로 바꾸는 게임 앱인 PuzzleTouch로 사진을 공유할 때 공유 흐름이 어떻게 진행되는지 아래 두 그림을 살펴보십시오.

왼쪽에는 원본 앱이 있고 오른쪽의 공유 창에는 사진을 받을 수 있는 필터링된 대상 앱의 목록이 있습니다.

그림 1: 왼쪽에는 원본 앱이 있고 오른쪽의 공유 창에는 사진을 받을 수 있는 필터링된 대상 앱의 목록이 있습니다.
PuzzleTouch는 사진 앱에서 사진을 받을 수 있는 공유 대상 중 하나입니다.

오른쪽에 있는 앱 다운로드 알림을 통해 어떤 유형의 퍼즐을 만들지 선택할 수 있습니다.

그림 2: 오른쪽에 있는 앱 다운로드 알림을 통해 어떤 유형의 퍼즐을 만들지 선택할 수
있습니다. 사용자가 앱으로 전환하면 퍼즐이 표시됩니다.

공유 대상 앱이란?

Windows의 전체 공유 환경은 두 가지 요소로 구성됩니다. Windows에서 콘텐츠를 다양한 형식으로 사용할 수 있는 원본 앱이 있고, 또한 특정 형식을 인식하도록 등록되어 있으면서 공유되는 콘텐츠의 대상 역할을 하는 공유 대상 앱이 있습니다. 원본 앱과 공유 대상 앱은 공유 계약을 통해 서로 통신합니다.

앱의 공유 환경을 위해서는 공유 대상 앱이 호스팅된 공유 창에서 렌더링된다는 것을 고려해야 합니다. 사용자가 이러한 보기에서 콘텐츠를 간단히 미리 보고 공유를 확인할 수 있도록 공유 환경을 구축하십시오. 다음 예는 사용자가 브라우저의 링크를 메일 연락처에 있는 사람과 간단히 공유할 수 있는 메일 공유 대상 앱 보기입니다.

공유 대상 이미지

그림 3: 메일 대상 앱을 사용하여 사진 앱의 링크 공유

Food with Friends를 위한 시나리오

이제 Food with Friends에서 어떻게 흥미로운 공유 대상 앱 경험을 만들어 내는지 알아보겠습니다. 이 앱에 익숙한 개발자라면 Food with Friends에서 사용자가 주로 수행하는 작업은 '계획 만들기'와 'My Wishlist에 음식점 추가'라는 것을 알 것입니다. 물론 후기 쓰기, 의견 올리기, 친구의 Wishlist 보기 등과 같은 다른 작업도 있지만 이러한 작업은 메인 앱의 컨텍스트 내에서 수행하는 것이 적절합니다. Food with Friends 대상 앱을 통해 핵심 시나리오 두 가지를 효과적으로 완료할 수 있는지 확인하기 위해 간단한 무결성 검사를 해보도록 하겠습니다.

오늘 저녁 계획 만들기

이것은 메인 앱의 핵심 시나리오이지만 공유 대상 경험을 위한 최상의 시나리오는 아닙니다. 왜냐하면 공유 대상 경험은 쉽고 빨라야 하기 때문입니다. 계획을 만들 때는 친구들이 가고 싶어하는 음식점을 알아보고, 친구들의 Wishlist에서 몇몇 음식점을 비교하고, 평가를 검토하는 등 거쳐야 할 작업이 많습니다. 계획을 세우려면 메인 앱 보기에 자세히 나와 있는 세부 정보를 참조해야 하므로 이러한 기능을 공유 대상 앱에 요약하는 것은 그리 좋은 생각이 아닙니다.

 

Wishlist에 추가

이 시나리오는 공유 대상에서 짧고 통제된 작업으로 원활하게 작동합니다. 이 앱 경험의 주요 내용은 다음과 같습니다.

  • 사람들이 후기, 음식 블로그 등이 있는 여행 계획 앱이나 국내 도시 앱 같은 다른 앱을 통해 음식점을 발견합니다. Food with Friends는 ‘My Wishlist’ 섹션에 음식점을 정리하기 때문에 매우 유용한 대상입니다.
  • 앱의 대상 앱 보기는 다른 앱의 컨텍스트에 있으면서도 빠르게 작업을 수행할 수 있어야 합니다. 따라서 Wishlist에 음식점을 추가하는 옵션은 공유 대상에 표시하기에 매우 좋습니다.
  • 물론 사용자가 앱을 전환하고 다시 검색해서 음식점을 찾은 후 Wishlist에 음식점을 추가할 수는 있지만 공유를 간단히 탭하는 것이 훨씬 더 편리합니다.

Food with Friends Wishlist는 적절한 공유 대상 앱 경험으로 보이므로 여기에서는 이 공유 대상 앱 경험을 디자인하고 빌드하려고 합니다. 우리가 염두에 둔 전체 시나리오는 이렇습니다.

가까운 푸드 트럭을 찾아 주는 앱을 탐색하다가 흥미로운 푸드 트럭 후기를 찾습니다. 나중에 계획을 세울 때 참조할 수 있게 이 앱에서 Food with Friends의 My Wishlist로 푸드 트럭을 추가하려고 합니다.

가까운 푸드 트럭을 찾아 주고 명소를 추천하는 앱 탐색그림 4: 가까운 푸드 트럭을 찾아 주고 명소를 추천하는 앱 탐색

이 이미지는 우리가 사용하려는 공유 대상 앱 보기입니다.

공유 대상 앱 보기

그림 5: 공유 대상 앱 보기

사용자는 대상 앱 보기에서 공유 작업을 완료하여 현재의 몰입형 앱 경험에서 컨텍스트를 전환하지 않고 Food with Friends에 음식점을 정리할 수 있습니다.

공유 대상 구현

공유 대상을 구현해야 하는 경우에 대한 몇 가지 예를 살펴보았으므로 이제 공유 대상을 구현하는 방법을 알아보겠습니다. 먼저 앱에서 받을 수 있는 데이터 형식이 무엇일지 정합니다.

어떤 데이터 형식을 지원해야 할까요?

공유를 사용하면 텍스트, URI, HTML, 비트맵, 파일 같은 표준 데이터 형식이나 http://schema.org에 나와 있는 사용자 지정 데이터 형식을 지원할 수 있습니다. Windows는 지원되는 데이터 형식으로 대상 앱을 필터링하여 공유 창에 필터링된 대상 앱 목록을 표시합니다. 앱은 앱 경험에 중요한 데이터 형식을 지원해야 합니다. 예를 들어, 사진을 보는 데 사용되는 앱은 텍스트 형식을 지원할 필요가 없습니다. 여러 데이터 형식을 지원한다고 선언한 경우 데이터 패키지에서 우선적으로 선택할 수 있도록 공유 데이터를 가장 잘 나타내는 형식을 결정해야 합니다.

Food with Friends는 사용자가 앱에 음식점을 공유하도록 지원하는 공유 대상 경험을 구현하고 있으므로 http://schema.org에 나와 있는 Restaurant 데이터 형식을 사용할 것입니다. Food with Friends는 대상 공유 계약에 등록하여 이러한 데이터 형식을 받을 수 있습니다. 그런 다음 받은 패키지의 데이터를 사용하여 대상 앱 보기에 사용자가 Wishlist에 음식점을 추가할 수 있는 멋진 경험을 구현할 수 있습니다.

원본 앱은 Restaurant 데이터 형식을 정확히 공유하는 경우도 있고, schema.org에 나와 있는 Place, LocalBusinessFoodEstablishment와 같은 다른 데이터 형식을 사용하여 유사한 정보를 표현하는 경우도 있습니다. 따라서 Food with Friends는 공유 계약에 여러 형식을 수신하여 보다 광범위한 원본 앱에 제공할 수 있도록 지원합니다.

Food with Friends는 앱 매니페스트의 공유 대상 선언에 다음과 같은 형식을 지원합니다.

 

이 글에서는 편의상 Restaurant 데이터 형식을 주로 다루고 있지만 다른 데이터 형식도 개념은 비슷합니다.

어떤 데이터 형식과 시나리오를 자세히 살펴보아야 할까요?

Food with Friends는 앱이 이미 알고 있는 음식점과 일치하는 음식점 정보가 수신될 경우에만 사용자의 Wishlist에 음식점을 추가하도록 지원합니다. 앱에 중복된 음식점 정보가 생기지 않게 하기 위해서입니다.

표준 데이터 형식은 지원되지 않습니다. 원본 앱에서 공유되는 대부분의 텍스트, 파일, 사진, URI 또는 HTML은 음식점이나 지역 사업소에 매핑되지 않기 때문입니다. 예를 들어 Food with Friends가 텍스트 수신을 지원할 경우 메모 원본 앱의 대상 앱 목록에 나타납니다. 이 경우 Food With Friends는 사용자에게 해당 원본 앱과 이 앱이 연동되지 않는 이유를 설명하는 오류 메시지를 제공해야 합니다. 요점은 데이터 형식을 통해 대상 앱에 무언가를 제공하는 원본 앱이 연결된다는 것입니다. 데이터 형식이 다르면 공유할 만한 가치가 없습니다.

관심 있는 사항을 알아볼 때 도움이 되는 데이터 형식과 공유 경험을 방해할 만한 데이터 형식을 모두 자세히 살펴보십시오.

대상 공유 계약 지원

데이터 형식을 지원하려면 Visual Studio 매니페스트 디자이너에서 앱에 해당 데이터 형식을 선언하십시오. 사용자가 여러분의 앱을 공유 작업의 대상으로 선택할 경우 다음과 같은 작업이 수행됩니다.

  1. 원본 앱을 통해 대상 공유 창에 앱의 새 인스턴스가 열립니다.
  2. share target activation 이벤트가 실행되고 앱이 ShareOperation 개체를 결과로 받습니다.
  3. 이 개체를 통해 사용자가 공유한 데이터를 검색할 수 있습니다.
  4. 이 데이터를 사용하여 대상 앱 보기를 렌더링하고 사용자의 공유를 완료할 수 있습니다.

이 경험을 만드는 방법에 대한 자세한 내용은 공유 콘텐츠 받기 빠른 시작 가이드를 참조하십시오.

또한 Visual Studio는 공유 대상을 위한 템플릿을 지원합니다. 해당 프로젝트를 마우스 오른쪽 단추로 클릭하고 항목 추가, 새 항목 추가를 선택한 후 목록에서 대상 공유 계약을 클릭한 다음 계약을 지원하기 위해 추가된 코드를 확인합니다. 공유 대상 코드 샘플에 공유 콘텐츠를 받는 방법이 나와 있습니다.

맞춤 대상 앱 보기 디자인

사용자가 공유 창의 앱 목록에서 대상 앱을 선택하면 Windows의 앱의 공유 대상 보기에서 앱이 열립니다. 대상 앱 보기는 공유 창에서 호스팅되는 특별한 보기이며 앱의 기본 보기와는 다릅니다. 앱에서 Windows 8 계약 활성화하기에 호스트 보기와 이러한 보기의 활성화를 처리하는 방법에 대해 자세히 설명되어 있습니다. 대상 앱 보기는 사용자가 시작한 공유 작업이 완료될 수 있도록 지원하기 위해 만들어졌습니다. 이 보기에서 사용자는 콘텐츠를 한눈에 미리 보고, 간단한 작업을 수행하고, 공유 여부를 확인할 수 있어야 합니다.

Food with Friends의 대상 앱 디자인을 살펴보기 전에 여러분이 이미 알고 있을 듯한 대상 앱에 대해 알아보겠습니다. 아래 이미지는 Windows 8의 앱 전체 보기와 메일 앱의 대상 앱 보기입니다.

오른쪽에 있는 메일 대상 앱으로 사진 공유

그림 6: 오른쪽에 있는 메일 대상 앱으로 사진 공유

메일의 메인 앱 보기에서 새 메일 작성

그림 7: 메일의 메인 앱 보기에서 새 메일 작성

메일의 공유 대상 앱 보기는 전체 앱 보기보다 간단합니다. 사용자가 공유하려고 하는 콘텐츠에 대해 깔끔하게 최소화된 미리 보기를 축소판 형식으로 제공하고 관련 텍스트와 HTML도 제공합니다. 또한 받는 사람을 추가할 수 있는 받는 사람 입력란, 간단한 메시지를 작성할 수 있는 입력 영역, 그리고 보내기 단추를 통해 메일 보내기를 확인하는 간단한 방법을 제공합니다.

이처럼 앱의 대상 앱 보기는 더 간단하면서도 메일 앱의 아바타로 명확히 식별할 수 있으므로 공유 콘텐츠의 대상에 대한 사용자의 신뢰를 높여줍니다.

Food with Friends를 공유 대상 앱으로 사용

대상 앱 보기의 디자인에 대한 일반적인 내용을 살펴보았으니 이제 Food with Friends를 사용하여 사용자가 ‘My Wishlist’에 음식점을 쉽게 추가하도록 도와주는 대상 앱을 만드는 방법에 대해 알아보겠습니다.

Food with Friends가 원본 앱에서 Restaurant이 포함된 데이터 패키지를 받으면 Restaurant 데이터 형식의 세부 정보를 사용하여 기존 데이터베이스에서 수신된 데이터 패키지와 일치하는 음식점을 식별합니다. 그러면 대상 앱 보기에 해당 음식점의 미리 보기를 표시할 수 있습니다. 이는 공유 콘텐츠의 무결성에 대한 신뢰를 높여줍니다.

이 이미지에서는 Food with Friends의 대상 앱 보기를 보여줍니다.

Food with Friends의 대상 앱 보기그림 8: Food with Friends의 대상 앱 보기

보시다시피 Food with Friends의 대상 앱 보기는 간단하고 공유 대상 앱에 맞춰져 있습니다. 사용자가 공유하려는 음식점의 미리 보기와 메인 앱의 공유 콘텐츠 대상을 알려 주는 Add to Wishlist라는 간단한 실행 단추를 표시합니다. 사용자가 이 단추를 탭 또는 클릭하면 공유 작업이 확인됩니다. 여기에서 탭 또는 클릭을 요구한다면 의도하지 않은 공유가 방지될 뿐만 아니라 전체 공유 경험에 대한 신뢰를 높이는 데도 도움이 됩니다.

앱이 데이터 패키지 콘텐츠의 정보와 일치하는 음식점을 여러 개 찾으면 Food with Friends에서 공유 대상 앱 보기를 사용하여 옵션을 표시하고 사용자에게 공유할 항목을 선택하도록 합니다.

대상 앱 보기는 사용자가 공유할 항목을 선택할 수 있도록 옵션을 표시합니다.

그림 9: 대상 앱 보기는 사용자가 공유할 항목을 선택할 수 있도록 옵션을 표시합니다.

 

앱이 수신된 데이터 패키지를 기준으로 음식점 또는 유효한 옵션 집합을 정확히 식별할 수 없을 경우를 대비해서 대상 앱 보기를 사용하여 해당 메시지를 전달하십시오.

QuickLink 만들기

QuickLink는 사용자가 대상 앱 내에서 신속하게 익숙한 대상으로 콘텐츠를 공유할 수 있는 공유 API의 프로비전입니다. QuickLink는 특정 작업을 제공하는 대상 보기에 대한 사용자 지정 링크로 사용됩니다. Windows에서 사용자가 사용할 수 있는 대상 앱 목록을 필터링하면 공유 창 맨 위에 사용 가능한 대상 목록으로 QuickLink 목록이 제공됩니다. 이러한 익숙한 대상 또는 사용자 작업에는 대상 앱을 통해 자주 공유되는 장소나 사람이 포함될 수 있습니다. 예를 들어 메일 앱은 이전에 메일을 보낸 연락처의 QuickLink를 반환합니다. 마찬가지로 대상 앱에 자주 공유하는 폴더, 그룹, 메모 및 재생 목록에 대한 QuickLink도 추가할 수 있습니다.

메일 대상 앱에서 제공하는 연락처에 대한 QuickLink가 공유 창에 표시됨

그림 10: 메일 대상 앱에서 제공하는 이전에 대상 앱을 사용하여 메일을 보낸 연락처에 대한
QuickLink가 공유 창에 표시됨

대상 앱은 ShareOperation개체의reportCompleted메서드를 호출하여 QuickLink를 제공할 수 있습니다. QuickLink에는 제목, 아이콘, ID가 있어야 합니다. 사용자가 공유 참 메뉴를 탭하면 제목(예: "엄마에게 전자 메일 보내기")과 아이콘이 나타납니다. ID는 앱에서 전자 메일 주소, 폴더 위치 등과 같은 사용자 지정 정보에 액세스하는 데 사용됩니다. 이 도구에 대한 자세한 내용은 QuickLink를 만드는 방법을 참조하십시오. 

참고: QuickLink는 앱에서 대상 앱의 여러 작업을 지원하는 경우에 유용합니다. Food with Friends는 공유 대상에서 단일 작업, 즉 Add to Wishlist만 지원하므로 QuickLink를 구현하지 않습니다.

확장 공유 및 오류 보고

원본 앱이 사진, 비디오 또는 파일과 같은 대형 데이터 청크를 공유하면서 데이터 전송 시간이 길어지는 경우가 있습니다. 이러한 공유 작업 유형을 '확장 공유'라고 하며, 대상 앱이 데이터를 받고 처리하는 데 시간이 좀 더 필요할 수 있습니다.

공유는 빠르고 유동적이어야 하고, 대상 앱 보기는 메인 앱을 통해 호스팅되는 가벼운 보기이기 때문에 사용자는 대상 앱 보기에서 탭하여 메인 앱으로 돌아갈 수 있습니다. 따라서 대상 앱은 공유가 시작된 후 대상 앱 보기에 의존하지 않으며 사용자 조작을 예상하지 못합니다. 대상 앱은 ShareOperation 개체와 메서드를 사용하여 Windows에 앱이 데이터를 처리하고 있다고 알려줄 수 있습니다.

  • reportStarted – 원본 앱에서 DataPackage 개체의 데이터 검색을 시작했다고 Windows에 알려 주려면 이 메서드를 호출합니다.
  • reportDataRetrieved– 패키지에서 데이터 검색을 마쳤다고 Windows에 알려 주려면 이 메서드를 호출합니다.
  • reportCompleted공유 작업을 완료했다고 Windows에 알려 주려면 이 메서드를 호출합니다.

앱이 확장 공유의 데이터를 처리 중일 때는 대상 앱 보기에 진행률 UI를 표시합니다. 이렇게 하면 사용자에게 요청이 진행 중임을 알려줄 수 있고, 사용자가 앱으로 돌아가서 공유 작업의 진행률을 확인했을 때 신뢰도가 높아집니다. Windows 8의 진행률 컨트롤에 대한 자세한 내용은 빠른 시작: 진행률 컨트롤 추가를 참조하십시오.

진행률 표시줄

그림 11: 대용량 첨부 파일 전송과 같은 확장 공유를 완료하면 메일 대상 앱 보기에 진행률 링이 표시됩니다.

데이터 전송 중에 문제가 발생하거나 대상 앱이 공유 작업을 종료해야 하는 경우에는 reportError를 호출하여 Windows에 오류 메시지를 보낼 수 있습니다. 사용자가 공유 창에서 공유 상태를 확인할 때 메시지를 볼 수 있습니다. 오류가 보고된 후 앱은 종료되고 공유도 종료됩니다. 사용자는 앱에 콘텐츠를 공유하는 작업을 다시 시작해야 합니다.

Food with Friends 공유 대상 예의 경우 앱이 데이터베이스에서 Restaurant 데이터 형식을 통해 원본 앱에서 공유한 음식점과 일치하는 음식점을 식별할 수 없는 경우 오류를 보고해야 합니다.

내용 정리

앱 간 공유는 대상 앱을 공유할 수 있는 엄청난 기회를 제공합니다. 앱에서 공유 콘텐츠를 받을 수 있다면 사용자가 다른 작업을 하고 있을 때도 앱을 활용할 수 있습니다. 이제 훌륭한 공유 대상 위치를 만드는 데 사용할 수 있는 데이터 형식, 클래스, 속성과 디자인 원칙에 대해 잘 이해되셨기 바랍니다. 우리는 여러분이 앱에서 공유 콘텐츠를 변환하고 더 다양하고 풍부한 최종 사용자 경험을 실현할 수 있는 방법을 알려드리게 되어 기쁩니다.

공유에 대해 자세히 알아보려면 데이터 공유 및 교환공유 콘텐츠 대상 앱 샘플을 읽고 시작해 보시기 바랍니다.

프로그램 관리자

Ishita Kapur

Windows 사용자 경험

  • Loading...
Leave a Comment
  • Please add 7 and 1 and type the answer here:
  • Post