KR102382775B1 - 기존 메시징 서비스의 메시지에 대한 앱에 의해 강화된 확장성 제공 기법 - Google Patents
기존 메시징 서비스의 메시지에 대한 앱에 의해 강화된 확장성 제공 기법 Download PDFInfo
- Publication number
- KR102382775B1 KR102382775B1 KR1020177005895A KR20177005895A KR102382775B1 KR 102382775 B1 KR102382775 B1 KR 102382775B1 KR 1020177005895 A KR1020177005895 A KR 1020177005895A KR 20177005895 A KR20177005895 A KR 20177005895A KR 102382775 B1 KR102382775 B1 KR 102382775B1
- Authority
- KR
- South Korea
- Prior art keywords
- composer
- content
- user
- application
- remote
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/02—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
-
- H04L51/16—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/216—Handling conversation history, e.g. grouping of messages in sessions or threads
-
- H04L51/22—
-
- H04L51/36—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/42—Mailbox-related aspects, e.g. synchronisation of mailboxes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/56—Unified messaging, e.g. interactions between e-mail, instant messaging or converged IP messaging [CPM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/07—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
- H04L51/08—Annexed information, e.g. attachments
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
인스턴트 메시징(IM) 서비스는 개별 컴포저 애플리케이션("앱")이 로컬 및 원격 디바이스 각각의 사용자에 대한 다양한 메시징 사용자 경험을 지원하도록 상호작용할 수 있는 확장가능한 플랫폼을 구현하도록 컴퓨팅 디바이스에서 동작하는 IM 클라이언트와 상호동작한다. 각 IM 클라이언트는 IM 서비스가 원격 디바이스로 투명하게 전송하는 컨텐츠를 패키징하기 위해 로컬 컴포저 애플리케이션에서 사용될 수 있는 응용 프로그래밍 인터페이스를 표시한다. 원격 디바이스의 IM 클라이언트는, 컨텐츠를 언패킹하여 원격 사용자를 위한 앱에 맞춰진 메시징 경험을 지원하는데 사용할 수 있는 식별된 관련 원격 컴포저 앱에 패키지를 제공한다. 컴포저 앱은 또한 패키징된 컨텐츠가 지원하는 경험의 미리보기를 제공하며, 이 미리보기는 각 로컬 및 원격 디바이스의 클라이언트가 메시징 이력에 사용하고/사용하거나 컴포저 앱의 사용자 경험에 대한 론칭 포인트로 이용할 수 있다.
Description
하나의 독특한 기능이나 차별화 요소를 제공하는 새로운 메시징 애플리케이션이 시장에 빈번히 소개된다. 이들 중 일부는 장기간에 걸쳐 성공을 거두는 반면, 대부분은 금새 다른 것에 밀려 한때 유행에 지나지 않게 된다. 사용자가 새로운 메시징 애플리케이션을 택하는데 있어 주요한 문제점 중 일부는 새로운 메시징 네트워크에 가입한 후, 친구들 및 연락처도 역시 그 메시징 애플리케이션을 택하도록 해야 한다는 것이다.
본 배경기술은 하기의 요약서 및 상세한 설명을 간략하게 설명하기 위하여 제공된다. 본 배경기술은 청구된 주제의 범위를 결정하는데 도움이 되거나, 청구된 주제를 상기 설명한 단점 또는 문제점의 일부 또는 전부를 해결하는 구현예에 한정하는 관점으로서 의도되지 않는다.
인스턴트 메시징(IM) 서비스는 개별 컴포저 애플리케이션("앱")(composer application)이 로컬 및 원격 디바이스 각각의 사용자에 대한 다양한 메시징 사용자 경험을 지원하도록 상호작용할 수 있는 확장가능한 플랫폼(extensible platform)을 구현하도록 컴퓨팅 디바이스에서 동작하는 IM 클라이언트와 상호동작한다. 각 IM 클라이언트는 IM 서비스가 원격 디바이스로 투명하게 전송하는 컨텐츠를 패키징하기 위해 로컬 컴포저 앱(composer app)에서 사용될 수 있는 응용 프로그래밍 인터페이스(application programming interface: API)를 표시한다. 원격 디바이스의 IM 클라이언트는, 컨텐츠를 언패킹하여 원격 사용자를 위한 앱에 맞춰진 메시징 경험을 지원하는데 사용할 수 있는 식별된 관련 원격 컴포저 앱에 패키지를 제공한다. 컴포저 앱은 또한 패키징된 컨텐츠가 지원하는 경험의 미리보기를 제공하며, 이 미리보기는 각 로컬 및 원격 디바이스의 클라이언트가, 예를 들어, 메시징 이력에 사용되거나/사용되고 컴포저 앱의 사용자 경험에 대한 론칭 포인트(launching point)로서 이용할 수 있다.
IM 서비스는 사용자가 새로운 메시징 기능 및 경험에 쉽게 참여할 수 있도록 컴포저 앱을 구축하고 운영할 수 있는 확장가능한 메시징 플랫폼을 구현한다. 사용자는, 예를 들어, 기존 자격 증명을 사용하여 IM 서비스에 간단하게 로그온 한 다음 원하는 만큼 컴포저 앱을 최대한 활용할 수 있다. 사용자가 각기 상이한 앱에 대해 새로운 서비스에 가입한 다음 메시징 연락처(예컨대, 친구, 가족, 동료 등)에게 새로운 서비스를 채택하도록 설득하지 않고도 새로운 것을 체험해 보는 것이 용이해진다. 본 IM 서비스는 기본 메시지 전송 기능과 기존 사용자 인구를 활용하여 개발자가 전송 메커니즘, 사용자 인증, 앱 배포 및 기타 문제를 처리하지 않고도 매력적인 기능과 사용자 경험에 집중할 수 있는 경량 메시징 앱 생태계를 구현한다. 이에 따라 생태계가 앱 개발을 간소화하고 출시 시간을 단축하며 전반적인 앱 채택을 개선할 수 있다. 또한 사용자가 메시징 기능을 특정 요구에 맞게 조정하기 위해 다양한 경험 중에서 고르고 선택할 수 있는 더 광범위하고 풍부한 메시징 기능을 사용할 수 있다.
본 요약서는 하기의 상세한 설명에서 더 자세히 설명되는 단순화된 형태의 개념을 소개하기 위해 제공된다. 본 요약서는 청구된 주제의 주요 특징이나 필수 기능을 식별하기 위한 것이 아니며 청구된 주제의 범위를 결정하는 데 도움을 주기위한 것이 아니다. 또한, 청구된 주제는 본 개시의 임의의 부분에서 언급된 임의의 또는 모든 단점을 해결하는 구현에 제한되지 않는다. 상술한 주제는 컴퓨터 제어 장치, 컴퓨터 프로세스, 컴퓨팅 시스템 또는 하나 이상의 컴퓨터 판독가능 저장 매체와 같은 제조품으로서 구현될 수 있음을 이해할 것이다. 이들 및 다양한 다른 특징들은 다음의 상세한 설명을 읽고 관련 도면을 검토함으로써 명백해질 수 있다.
도 1은 통신 기능을 갖는 디바이스들이 네트워크를 통해 상호작용하는 예시적인 환경을 도시한다.
도 2는 디바이스 사용자들 사이의 예시적인 통신을 도시한다.
도 3은 애플리케이션 계층, 운영 체제(OS) 계층 및 하드웨어 계층을 포함하는 예시적인 계층적 아키텍처를 도시한다.
도 4는 로컬 및 원격 디바이스에서 동작하는 인스턴트 메시징(IM) 서비스와 IM 클라이언트가 이들 디바이스 상에서 인스턴스화되는 컴포저 앱에 확장가능한 플랫폼을 제공하는 예시적인 구성을 도시한다.
도 5는 VoIP(Voice over Internet Protocol) 및 IM 클라이언트에 의해 지원될 수 있는 특징 및 기능의 예시적인 분류를 도시한다.
도 6은 컴포저 앱이 컨텐츠를 파일로 패킹하고 컨텐츠 미리보기를 제공하기 위해 애플리케이션 프로그래밍 인터페이스(API)와 상호작용하는 예시적인 구성을 도시한다.
도 7 내지 도 12는 본 발명의 앱 구동 확장성을 용이하게 하기 위해 디바이스에 디스플레이된 예시적인 사용자 인터페이스(UI)의 스크린 캡처를 도시한다.
도 13은 메시지가 원격 디바이스에서 컴포넌트의 다운로드를 가능하게 하는 링크를 제공하기 위해 이용되는 예시적인 구성을 도시한다.
도 14, 도 15 및 도 16은 본 발명의 앱 구동 확장성을 구현할 때 수행될 수 있는 예시적인 방법을 도시한다.
도 17은 본 발명의 앱 구동 확장성을 구현하기 위해 부분적으로 사용될 수 있는 개인용 컴퓨터(PC)와 같은 예시적인 컴퓨터 시스템의 간략화된 블록도이다.
도 18은 본 발명의 앱 구동 확장성을 구현하기 위해 부분적으로 사용될 수 있는 예시적인 디바이스의 블록도를 도시한다.
도 19는 예시적인 모바일 디바이스의 블록도이다.
도 20은 예시적인 멀티미디어 콘솔의 블록도이다.
도면에서 동일한 참조 번호는 동일한 요소를 나타낸다. 별도로 언급되지 않는 한 요소는 축척에 따라 도시되지 않는다. 도면에 표시된 특정 UI는 특정 구현의 필요에 따라 표시되는 것과 다를 수 있음을 유의한다.
도 2는 디바이스 사용자들 사이의 예시적인 통신을 도시한다.
도 3은 애플리케이션 계층, 운영 체제(OS) 계층 및 하드웨어 계층을 포함하는 예시적인 계층적 아키텍처를 도시한다.
도 4는 로컬 및 원격 디바이스에서 동작하는 인스턴트 메시징(IM) 서비스와 IM 클라이언트가 이들 디바이스 상에서 인스턴스화되는 컴포저 앱에 확장가능한 플랫폼을 제공하는 예시적인 구성을 도시한다.
도 5는 VoIP(Voice over Internet Protocol) 및 IM 클라이언트에 의해 지원될 수 있는 특징 및 기능의 예시적인 분류를 도시한다.
도 6은 컴포저 앱이 컨텐츠를 파일로 패킹하고 컨텐츠 미리보기를 제공하기 위해 애플리케이션 프로그래밍 인터페이스(API)와 상호작용하는 예시적인 구성을 도시한다.
도 7 내지 도 12는 본 발명의 앱 구동 확장성을 용이하게 하기 위해 디바이스에 디스플레이된 예시적인 사용자 인터페이스(UI)의 스크린 캡처를 도시한다.
도 13은 메시지가 원격 디바이스에서 컴포넌트의 다운로드를 가능하게 하는 링크를 제공하기 위해 이용되는 예시적인 구성을 도시한다.
도 14, 도 15 및 도 16은 본 발명의 앱 구동 확장성을 구현할 때 수행될 수 있는 예시적인 방법을 도시한다.
도 17은 본 발명의 앱 구동 확장성을 구현하기 위해 부분적으로 사용될 수 있는 개인용 컴퓨터(PC)와 같은 예시적인 컴퓨터 시스템의 간략화된 블록도이다.
도 18은 본 발명의 앱 구동 확장성을 구현하기 위해 부분적으로 사용될 수 있는 예시적인 디바이스의 블록도를 도시한다.
도 19는 예시적인 모바일 디바이스의 블록도이다.
도 20은 예시적인 멀티미디어 콘솔의 블록도이다.
도면에서 동일한 참조 번호는 동일한 요소를 나타낸다. 별도로 언급되지 않는 한 요소는 축척에 따라 도시되지 않는다. 도면에 표시된 특정 UI는 특정 구현의 필요에 따라 표시되는 것과 다를 수 있음을 유의한다.
도 1은 다수의 사용자(105)가 통신 네트워크(115)를 통해 통신하는 디바이스(110)를 각각 채택하는 통신 환경(100)을 도시한다. 디바이스(110)는 음성 및 비디오 통화 및 메시징과 같은 다양한 통신 기능을 제공하고, 통상적으로 인터넷 브라우징 및 멀티미디어(예컨대, 음악, 비디오 등) 소비와 같은 데이터-소비 애플리케이션(data-consuming applications)과 더불어 다양한 다른 특징을 지원한다. 디바이스(110)는, 예를 들어, 사용자가 음성 및/또는 멀티미디어(즉, 비디오) 통화를 걸고 받고, 메시지(예컨대, 문자)를 보내고, 애플리케이션을 사용하고, 데이터를 사용하는 서비스에 액세스하고, 월드 와이드 웹을 브라우징하는데 종종 채택하는 사용자 장비, 이동 전화, 휴대 전화, 피처폰, 태블릿 컴퓨터 및 스마트폰을 포함할 수 있다. 그러나, 다른 유형의 전자 디바이스가 또한 통신 기능을 제공하고 통신 네트워크(115)에 접속할 수 있는 한 통신 환경(100) 내에 사용가능할 것으로 예상된다. 그러한 대안적인 디바이스는 헨드핼드 컴퓨팅 디바이스, PDA(personal digital assistant), 포터블 미디어 플레이어, 패블릿 디바이스(즉, 스마트폰/태블릿 디바이스의 조합), 웨어러블 컴퓨터, GPS(Global Positioning System) 시스템과 같은 네비게이션 디바이스, 랩탑 PC(personal computer), 데스크탑 컴퓨터, 멀티미디어 콘솔 또는 게임 시스템 등을 포함한다. 하기의 설명에서, "디바이스"라는 용어의 사용은 통신 기능을 제공하고 통신 네트워크(115)에 접속할 수 있는 모든 디바이스를 포괄하도록 의도된다.
환경(100)의 다양한 디바이스(110)가 상이한 특징, 기능 및 성능(본 명세서에서 일반적으로 "특징"으로서 지칭됨)을 지원할 수 있다. 특정 디바이스 상에서 지원되는 특징의 일부는 다른 디바이스 상에서 지원되는 것과 유사할 수 있으나, 다른 특징은 특정 디바이스에 고유한 것일 수 있다. 다양한 디바이스(110) 상에서 지원되는 특징들 간의 겹치고/겹치거나 구별되는 정도는 구현에 따라 달라질 수 있다. 예를 들어, 일부 디바이스(110)는 터치 컨트롤, 움직임 인식 및 음성 명령을 지원할 수 있는 반면, 다른 디바이스는 더욱 제한된 UI만을 활성화할 수 있다. 일부 디바이스는 비디오 소비 및 인터넷 브라우징을 지원할 수 있는 반면, 다른 디바이스는 더욱 제한된 미디어 처리 및 네트워크 인터페이스 특징을 지원할 수 있다.
도시된 바와 같이, 디바이스(110)는 다양한 사용자 경험을 구현하기 위해서 통신 네트워크(115)에 액세스할 수 있다. 통신 네트워크는 셀룰러 네트워크, 위성 네트워크, Wi-Fi 및 이더넷 네트워크와 같은 인터넷 프로토콜(Internet Protocol: IP) 네트워크, PSTN(public switched telephone network) 및/또는 블루투스 네트워크와 같은 근거리 네트워크를 포함하는 다양한 조합 또는 부조합(sub-combination)의 임의의 다양한 네트워크 유형 및 네트워크 인프라(network infrastructure)를 포함할 수 있다. 네트워크 인프라는, 예를 들어, 이동통신 사업자(mobile operators), 기업, 인터넷 서비스 제공자(Internet service provider: ISP), 전화 서비스 제공자, 데이터 서비스 제공자 등을 지원할 수 있다. 통신 네트워크(115)는 일반적으로 인터넷(120)에 대한 접속을 지원하여, 모바일 디바이스(110)가 하나 이상의 컨텐츠 제공자(125)에 의해 제공된 컨텐츠에 액세스하고 IM 서비스(130)에 액세스할 수 있도록 하는 인터페이스를 포함한다. 이러한 예시에서, 컨텐츠 제공자(125)는 앱 스토어(135)를 지원한다.
디바이스(110)와 통신 네트워크(115)는 디바이스 간 통신을 활성화할 수 있다. 도 2에 도시된 바와 같이, 그러한 디바이스 간 통신(200)은, 예를 들어, 음성 통화(205), 인스턴트 메시징(IM)(210) 및 영상 채팅(215)을 포함할 수 있다. 통신(200)이 두 개의 디바이스(110) 사이에서 이루어지는 것으로 도시되었으나, 다자 간 통신(예컨대, 원격회의 및 단체 메시징)이 또한 구현될 수 있음을 유의한다. 디바이스 간 통신(200)에 대한 지원이 디바이스(110) 상에서 실행되는 하나 이상의 애플리케이션을 사용하여 제공될 수 있다.
예를 들어, 도 3은 다양한 애플리케이션을 지원하는 특정 디바이스(110) 상에서 인스턴스화될(instantiated) 수 있는 예시적인 계층적 아키텍처(layered architecture)(300)를 도시한다. 아키텍처(300)는 일반적으로 소프트웨어에서 구현되지만, 소프트웨어, 펌웨어 및/또는 하드웨어의 조합이 또한 일부 경우에 이용될 수 있다. 아키텍처(300)는 계층적으로 배치되고, 애플리케이션 계층(305), 운영 체제(OS) 계층(310) 및 하드웨어 계층(315)을 포함한다. 하드웨어 계층(315)은 디바이스(110)(예컨대, 입출력 디바이스, 네트워킹 및 무선 하드웨어 등)에 의해 사용되는 하드웨어의 추상화(abstraction)를 상위 계층에 제공한다.
이러한 예시에서 애플리케이션 계층(305)은 다양한 애플리케이션(앱)(330)(예컨대, 웹 브라우저, 지도 앱, 이메일 앱 등)과 더불어 IM 클라이언트(340)를 지원한다. IM 클라이언트(340)의 상업적으로 이용가능한 한 예시로서 마이크로소프트 사에 의해 배포된 Skype™가 있으나, IM 클라이언트는 이러한 한 예시에 제한되지 않음을 유의한다. 앱(330)은 종종 로컬로 실행되는 코드를 사용하여 구현된다. 그러나, 일부 경우에서, 이러한 앱은 IM 서비스(130) 또는 다른 클라우드-기반 리소스에 의해 지원되는 것과 같은 원격 서버 또는 다른 컴퓨팅 플랫폼에 의해 제공되는 서비스 및/또는 원격 코드 실행에 따를 수 있다. 본 명세서에서는 앱(330)이 애플리케이션 계층(305)에서 인스턴스화되는 컴포넌트(component)로서 도시되었으나, 특정 앱에 의해 제공되는 기능이 OS 또는 하드웨어 계층에서 지원되는 컴포넌트를 사용하여 전체적으로 또는 부분적으로 구현될 수 있음이 이해될 것이다.
IM 클라이언트(340)는 일반적으로 IM과 음성 통화 및 영상 채팅과 같은 다른 서비스를 제공하는 경우에 라인(360)에 의해 표시되는 바와 같이 IM 서비스(130)와 상호동작한다. 또한, IM 클라이언트(340)는 본 명세서에 기술된 다양한 특징 및 기능을 구현하는데 필요할 수 있는 다른 OS 컴포넌트(및/또는 아키텍처(300)의 다른 계층에서 인스턴스화될 수 있는 다른 컴포넌트) 및/또는 다른 원격 서비스(370)를 이용하고/이용하거나 상호동작할 수 있다. 본 예시에서는 IM 클라이언트(340)가 애플리케이션 계층(305)에서 인스턴스화되는 것으로 도시되었으나, IM 클라이언트에 의해 제공되는 기능이 OS 및/또는 하드웨어 계층에서 지원되는 컴포넌트를 사용하여 전체적으로 또는 부분적으로 구현될 수 있음이 이해될 것이다.
애플리케이션 계층(305)은 또한 다양한 컴포저 앱(composer app)(350)을 지원한다. 컴포저 앱(350)은 상이한 메시징 사용자 경험을 제공하기 위해서 IM 클라이언트(340)와 상호동작하도록 배치된다. 도 4에 도시된 바와 같이, 서비스(130)와 IM 클라이언트(340)는 로컬 및 원격 디바이스(110)의 각각에서 인스턴스화되는 컴포저 앱(350)에 의해 제공되는 메시징 사용자 경험(415)에 대한 기본(underlying) 컨텐츠 전송(410)을 제공하는 확장가능한 메시징 플랫폼(405)으로서 작용한다.
도 5는 일반적인 구현예에서 확장가능한 메시징 플랫폼(405)에 의해 지원될 수 있는 기능(500)의 예시적인 분류(taxonomy)를 도시한다. 기능(500)의 각각은 하기에서 도 6 내지 도 12를 참조한 설명에서 보다 상세히 논의된다.
도 5에 도시된 바와 같이, 기능(500)은 (참조 번호 505에 의해 표시된 바와 같이) 컴포저 앱이 메시징 특징 및 경험을 제공하도록 동작할 수 있는 컨텐츠 전송 플랫폼을 제공하는 단계를 포함한다. 전술한 바와 같이, 플랫폼은 그러한 특징 및 경험이 사용자가 새로운 서비스에 가입할 필요 없이 구현될 수 있게 한다. 기능(500)은 또한 전송을 위해 컨텐츠를 패키징하고 컨텐츠 미리보기(content previews)를 제공하기 위해 로컬 디바이스에서 인터페이스를 컴포저 앱에 표시하는 단계(510)와 컴포저 앱으로 하여금 그 사용자 경험을 IM 서비스 및 클라이언트(IM 서비스와 클라이언트는 IM 애플리케이션으로서 집합적으로 지칭될 수 있음)에 의해 지원되는 네이티브(native) 메시징 경험으로 통합하거나 독립적으로(on a standalone basis) 사용자 경험을 제공하게 하는 단계(515)를 포함할 수 있다. 예를 들어, 일부 구현예에서, 특정 컴포저 앱은 부가적인 메시징 특징 또는 강화(enhancement)를 제공하는 방식으로서 메시징 경험 내에서부터 론칭될(launched) 수 있다. 다른 구현예에서, 컴포저 앱은 더욱 집중되고/집중되거나 차별화된 오퍼링(offering)에서 특징, 기능 및 사용자 경험을 제공하도록 배치될 수 있다. 여기서, 컴포저 앱은 IM 애플리케이션 외부에서 독립적으로 론칭될 수 있으며, 확장가능한 메시징 플랫폼은 투명한 컨텐츠 전송을 지원한다.
기능(500)은 일부 경우에 로컬 및 원격 디바이스에서 메시징 이력에 컨텐츠 미리보기를 제시하는 단계(520)와, 패키징된 컨텐츠와 미리보기를 전송하는 단계(525)와, 원격 디바이스에서 패키징된 컨텐츠와 미리보기에 연관된 컴포저 앱을 식별하는 단계(530)와, 원격 디바이스에서 연관된 컴포저 앱으로 하여금 앱의 특정 사용자 경험을 지원하기 위해서 컨텐츠를 수신하고 언패킹(unpack)하게 하는 단계(535)와, 다른 특징 및 기능을 제공하고 지원하는 단계(540)를 더 포함한다. 기능(500)의 목록은 예시적일 뿐이며 완전한 것으로서 의도되지 않고, 다른 기능이 확장가능한 메시징 플랫폼에 의해 특정 구현예의 필요를 충족하도록 지원될 수 있다.
도 6은 컴포저 앱(350)과 확장가능한 메시징 플랫폼(405) 사이의 예시적인 상호동작을 도시하는 도면이다. 도시된 바와 같이, 각각의 IM 클라이언트(340)는 API(605)의 인스턴스를 대응하는 로컬 및 원격 디바이스(110)에서 컴포저 앱(305)에 표시한다. 로컬 디바이스에서, 컴포저 앱(305)은 컨텐츠를 확장가능한 메시징 플랫폼에 의해 원격 디바이스로 전송될 수 있는 파일로 패킹한다(pack). 패키징된 컨텐츠의 파일 유형은 일반적인 구현예에서 플랫폼에 특정되고, 컴포저 앱은 일반적으로 전송을 위해 컨텐츠를 패키징하고 API(605)와 인터페이싱할 때 특정 스펙(specifications)을 따를 필요가 있다. 이용되는 특정 스펙과 API 요건은 구현예에 따라 달라질 수 있다.
패키징된 컨텐츠(610)는 컴포저 앱이 그 사용자 경험을 지원하기 위해서 원격 디바이스의 대응하는 앱에 전달할 필요가 있을 수 있는 다양한 데이터, 정보, 속성(attributes), 매개변수 등을 포함할 수 있다. 다른 구현예에서, 컴포저 앱 컨텐츠는 종래의 또는 널리 쓰이는 파일 유형을 이용할 수 있다. 예를 들어, 컴포저 앱이 로컬 사용자에게 비디오 클립에 특수 효과를 삽입할 수 있는 경험을 제공하는 경우에, 완성된 비디오는 MOV, MP4, AVI, WMV, MPG 등과 같은 컨테이너 형식(container format)으로 패키징될 수 있다.
패키징된 컨텐츠를 API(605)를 통해 IM 클라이언트(340)에 제공하는 것에 더하여, 컴포저 앱은 일반적으로 확장가능한 메시징 플랫폼(405)과의 상호동작의 일부로서 패키징된 컨텐츠의 미리보기(615)를 생성할 것이다. 일반적인 구현예에서, 다양한 미리보기 유형이 지원될 수 있다. 예를 들어, 미리보기는 JPG, GIF, WAV 등과 같은 일반적인 파일 컨테이너를 사용하는 정지 이미지, 그래픽, 애니메이션, 소리 등을 포함할 수 있다. IM 클라이언트(340)는, 예를 들어, 컴포저 앱의 사용자 경험이 메시징에 통합되는 경우에 메시지 이력의 일부로서 미리보기를 이용할 수 있다.
확장가능한 메시징 플랫폼(405)은 패키징된 컨텐츠(610)와 미리보기(615)를 원격 디바이스(110)에 전송할 수 있다. 원격 IM 클라이언트(340)는 일부 경우에 전송된 컨텐츠 미리보기(615)를 사용할 수 있다. 예를 들어, 미리보기는 원격 디바이스에서 컴포저 앱의 사용자 경험에 대한 론칭 포인트으로서 사용자에게 표시되는 제어의 일부로서 사용될 수 있다.
원격 디바이스에서, IM 클라이언트(340)는 전송된 컨텐츠와 연관된 특정 컴포저 앱을 식별하고, API(605)를 사용하여 앱에 전달한다. 원격 컴포저 앱(350)은 컨텐츠를 언패킹하고, 앱의 사용자 경험의 지원 하에 컨텐츠를 사용할 수 있다.
도 7 내지 도 12는 확장가능한 메시징 플랫폼 및 컴포저 앱과 사용자의 상호동작 동안의 다양한 포인트에서 디바이스(110)에 디스플레이되는 예시적인 사용자 인터페이스(UI)의 화면 캡처를 도시한다. 도면에 도시된 모든 UI는 예시일 뿐이며, UI의 정보의 표현, 표시된 특징 및 제어 그리고 전체적인 룩 앤 필(look and feel)은 구현예에 도시된 것과 다를 수 있다는 것을 유의한다. 또한, 하기의 설명에서, UI와 사용자의 상호동작은 터치스크린 인터페이스를 표시하는 디바이스의 맥락에서 논의된다. 그러나, 물리 또는 가상 버튼 누르기, 움직임 인식 디바이스/소프트웨어로의 움직입 입력, 음성 명령, 자연 언어 입력 등과 같은 다른 유형의 입력 또한 특정 디바이스에서 지원되는 특징에 따라 이용될 수 있음을 유의한다. 특정 목적을 위해 이용될 수 있는 구체적인 사용자 액션은 구현예와 디바이스에 따라 달라질 수 있다.
도 7의 UI(700)는 로컬 및 원격 사용자 사이의 IM 대화와 연관된 챗 카드(chat card)(705)를 디스플레이하는 스마트폰과 같은 로컬 디바이스(110)에서 실행되는 IM 클라이언트(340)(도 3)에 의해 표시될 수 있다. 이러한 예시에서, 챗 카드(705)는 원격 사용자로부터 들어오는 메시지를 좌측에, 로컬 사용자에 의해 생성되는 나가는 메시지는 우측에 제시한다(메시지 컨텐츠는 표시의 명료성을 위해서 도시되지 않음). 이러한 예시에서, 메시징 UI는 다양한 기능을 호출(invoke)하기 위해서 사용자(105)에게 표시된 제어부(710)를 포함하고, 사용자는 사용자가 특정 컴포저 앱을 선택할 수 있게 하는 도 8의 UI(800)를 론칭하기 위해서 컴포저 앱 버튼(720)에 터치(715)를 가한다. 대안적으로, 일부 구현예에서, 사용자(105)는 일반적으로 다른 종래의 첨부 도구(attachment tools) 또는 유틸리티와 함께 컴포저 앱을 표시할 수 있는 UI(미도시)를 표시하는 첨부 버튼(725)을 사용하여, 메시지에 대한 첨부물로서 원격 디바이스에 전송될 수 있는 컨텐츠를 선택 또는 생성/수정하도록 이용할 수 있다.
도 8의 UI(800)는 상이한 메시징 사용자 경험을 론칭하기 위해서 사용자(105)에 의해 호출될 수 있는 타일로서 표현되는 다양한 컴포저 앱(805)을 표시한다. 일부 구현예에서, UI(800)는 설치될 수 있는 다른 컴포저 앱을 표시하기 위해서 사용자가 (예컨대, 수평으로 또는 수직으로) 스크롤할 수 있고/있거나, 사용자는 설치된 다른 앱을 표시하기 위해서 버튼과 같은 다른 제어부를 사용할 수 있다. 이러한 구체적인 예시에서, 사용자는 비디오 특징을 지원하는 컴포저 앱(815)에 터치(810)를 가한다. 특정 디바이스에 설치된 특정 컴포저 앱은 각각이 지원하는 특징과 사용자 경험 면에서 매우 다양할 수 있다. 예를 들어, 상이한 컴포저 앱이 개인들 및 그룹간의 메시징, 스포츠 및 게임(멀티플레이어 및/또는 차례대로 하는 게임(turn-by-turn games)을 포함함), 음성 및 영상 통화, 음악, 그림 및 창조적 표현(예컨대, 낙서, 만화, 그림 등), 공동 작업 등을 처리하는 특징 및 경험을 지원할 수 있으나, 이에 제한되는 것은 아니다. 사실상 로컬 및 원격 디바이스 사이에 데이터와 정보를 교환하는 것에 의존하는 모든 컴포저 앱이 특정 사용자 경험을 구현할 때 확장가능한 메시징 플랫폼을 이용할 수 있다.
계속해서 도 8을 설명하면, 이러한 특정 예시에서, 사용자가 타일을 터치하면 로컬 디바이스(110)에서 사용자와의 상호동작을 지원하기 위한 자신의 UI를 제시하는 비디오 컴포저 앱(815)이 론칭된다. 도 9의 예시적인 UI(900)는 비디오 컴포저 앱이 여러 특징들을 지원하는 방식을 도시한다. 여기서, 사용자(105)는 하나 이상의 원격 사용자에게 전송될 수 있는 연관된 비디오 클립(910)에 관한 투표하기(905)를 사용자로 하여금 구성하게 하는 투표하기 특징(905)을 선택하였다. (도 9에 도시되지 않은 UI는 사용자가 투표하기에 사용된 로컬 디바이스에서 이용가능한(예컨대, 로컬로 저장되거나 원격 저장소로부터 액세스됨) 특정 비디오 클립을 선택하고/선택하거나 편집하는데 사용할 수 있다.) 따라서, 이러한 예시에서, 비디오 컴포저 앱(815)은 API(605)(도 6)를 사용하여 확장가능한 메시징 플랫폼(405)에 의해 전송되기 위해 패키징된 사용자의 투표하기와 연관된 비디오 클립과 관련된 데이터를 포함하는 컨텐츠를 생성한다.
비디오 컴포저 앱(815)은 또한 일반적으로 패키징된 컨텐츠의 미리보기를 생성하고 메시징 플랫폼에 제공한다. 일단 사용자(105)가 컴포저 앱을 완료하고 체크 표시 버튼(915)을 택하면, 메시징 UI는 로컬 디바이스(110)에 도 10에 도시된 UI(1000)를 다시 띄운다. 로컬 IM 클라이언트는 로컬 사용자의 나가는 메시지(1015)에 섬네일(thumbnail)(1010)을 표시함으로써 챗 카드(1015)에 디스플레이된 메시징 이력에서 미리보기를 사용한다. 섬네일은 메시지가 재생가능한 컨텐츠를 포함한다는 것을 나타내는 재생 아이콘(1020)을 포함한다. 로컬 사용자는 컨텐츠를 리뷰하기 위해서 비디오 컴포저 앱을 다시 론칭하는(즉, 원격 사용자에 전송된 것과 동일한 경험을 론칭하는) 섬네일에 터치 동작을 행할 수 있다
도 11은 원격 디바이스에서 원격 IM 클라이언트에 의해 디스플레이되는 UI(1100)을 도시한다. 로컬 사용자로부터의 메시지(1105)는 원격 사용자의 챗 카드(1110)의 좌측 메시징 이력에 제시되고, 미리보기(1115)와 재생 아이콘(1120)을 포함한다. 원격 사용자가 미리보기에 터치(1125)를 가하면, 원격 IM 클라이언트는 원격 디바이스에서 론칭하는 연관된 비디오 컴포저 앱을 식별한다. 비디오 컴포저 앱은 컨텐츠를 언패킹하여 원격 사용자를 위한 경험을 생성하기 위해 언패킹된 컨텐츠를 사용하고, 여기서 원격 사용자를 위한 경험은 도 12에 도시된 UI(1200) 내의 비디오 클립(1205)과 투표하기(1210)를 포함한다. 원격 사용자가 투표하기에 응답하면, 송신 버튼(1215)을 사용하여 로컬 사용자에게 응답을 전송할 수 있다.
전술된 예시에서 특정 사용자 경험에서 로컬 및 하나 이상의 원격 당사자에 의해 사용되는 디바이스의 각각은 IM 클라이언트와 설치되고 실행된 관련 컴포저 앱을 포함한다. 다른 예시적인 시나리오에서, 경험에 참여하기를 원하는 하나 이상의 당사자들은 그들의 특정 디바이스에 인스턴스화된 필요한 컴포넌트 및 앱을 포함하지 않을 수도 있다.
그러한 경우에도 컴포저 앱의 경험은 도 13에 도시된 IM 서비스(130)에 의해 제공되는 성능을 레버리징(leveraging)함으로써 여전히 구현될 수 있다. 여기서, IM 서비스(130)가 원격 사용자가 알려지지 않은 사용자임(예컨대, IM 서비스의 기존 사용자가 아님) 또는 원격 디바이스가 경험을 제시하는데 필요한 컴포넌트 또는 앱을 포함하지 않음을 검출하는 경우에, IM 서비스(130)는 문자 메시지(1305)를 SMS(Short Message Service) 또는 MMS(Multimedia Messaging Service)와 같은 프로토콜을 통해 원격 디바이스(110)의 메시징 애플리케이션(1310)에 송신할 수 있다. 메시지(1305)는 컨텐츠 제공자(125)에 의해 표시되는 앱 스토어(135)로의 링크(1315)를 포함할 수 있다. 링크(1315)를 따라감으로써, 원격 사용자는 다운로드(1320)를 브라우저 또는 다른 애플리케이션과 같은 웹 서비스 클라이언트(1325)로 호출할 수 있다. 다운로드(1320)는 컴포저 앱의 사용자 경험을 지원하기 위해 필요에 따라 원격 디바이스에 로딩되어 실행될 수 있는 IM 클라이언트(340) 및/또는 관련 컴포저 앱(350)을 포함할 수 있다. 다른 구현예에서, IM 서비스(130) 및/또는 컨텐츠 제공자(125)는 컴포저 앱의 사용자 경험을 원격 디바이스의 브라우저나 다른 적절한 애플리케이션에서 실행되는 클라우드-기반 웹 앱으로서 호스팅할 수 있다.
도 14는 컴포저 애플리케이션을 동작시키는 예시적인 방법(1400)의 흐름도를 도시한다. 특별히 언급되지 않는 한, 하기의 흐름도에 도시되고 첨부된 문서에 설명된 방법 또는 단계는 특정 순서 또는 시퀀스에 제한되지 않는다. 또한, 방법 또는 단계의 일부는 동시에 발생하거나 수행될 수 있고, 특정 구현예에서 그러한 구현예의 요건에 따라 모든 방법 또는 단계가 수행될 필요는 없으며, 방법 또는 단계의 일부는 선택적으로 이용될 수 있다.
단계(1405)에서, 로컬 디바이스(110)의 컴포저 앱(350)은 확장가능한 메시징 플랫폼(405)에 대한 플러그-인(plug-in)으로서 동작된다. 단계(1410)에서, 컴포저 앱(350)은 원격 디바이스에서 사용자 경험에 대한 컨텐츠를 생성한다. 단계(1415)에서, 컴포저 앱(350)은 컨텐츠를 확장가능한 메시징 플랫폼(405)과 호환가능한 형식을 갖는 파일로 패킹한다. 단계(1420)에서, 컴포저 앱(350)은 패키징된 컨텐츠의 미리보기를 확장가능한 메시징 플랫폼에 제공한다.
단계(1425)에서, 컴포저 앱(350)은 원격 디바이스의 원격 컴포저 앱에 의해 생성되고 확장가능한 메시징 플랫폼(405)에 의해 중계된(relayed) 패키징된 컨텐츠를 수신한다. 단계(1430)에서, 컴포저 앱(350)은 컨텐츠를 언패킹하고, 단계(1435)에서 로컬 디바이스의 사용자 경험을 제공한다.
도 15는 디바이스 상에서 실행되는 하나 이상의 컴포저 애플리케이션을 지원하는 예시적인 방법(1500)의 흐름도를 도시한다. 단계(1505)에서, 로컬 디바이스의 IM 클라이언트(340)는 로컬 컴포저 앱(350)에 API(605)를 통한 방법을 표시한다. API 방법은 컴포저 앱으로 하여금 컨텐츠를 패키징하고 확장가능한 메시징 플랫폼(405)에 의해 지원되는 파일 형식과 호환가능한 컨텐츠 미리보기를 제공한다. 단계(1510)에서, IM 클라이언트(340)는 로컬 컴포저 앱(350)으로 부터 패키징된 컨텐츠와 컨텐츠 미리보기를 수신한다.
단계(1515)에서, IM 클라이언트(340)는 미리보기를 메시징 이력에 통합하고, 단계(1520)에서 로컬 디바이스의 메시지 이력에 디스플레이한다. 단계(1525)에서 IM 클라이언트(340)는 메시징 이력 내에 로컬 컴포저 앱(350)을 위한 론칭 포인트으로서 동작하는 컨텐츠 미리보기를 구성한다.
단계(1530)에서, IM 클라이언트(340)는 원격 컴포저 앱으로부터 IM 서비스(130)로부터 전송된 패키징된 컨텐츠와 컨텐츠 미리보기를 수신한다. IM 클라이언트(340)는 단계(1535)에서 수신된 컨텐츠와 미리보기에 연관된 로컬 컴포저 앱(350)을 식별하고, 단계(1540)에서 식별된 로컬 컴포저 앱에 패키징된 컨텐츠를 전달한다. 단계(1545)에서, IM 클라이언트(340)는 원격 컴포저 앱으로부터 수신된 컨텐츠 미리보기를 병합된(merged) 메시징 이력에서 사용한다. 단계(1550)에서, IM 클라이언트(340)는 식별된 로컬 컴포저 앱을 론칭하기 위해서 컨텐츠 미리보기를 사용자-선택가능 제어로서 사용한다.
도 16은 확장가능한 메시징 플랫폼을 동작시키는 예시적인 방법(1600)의 흐름도를 도시한다. 단계(1605)에서, IM 서비스(130)는 컴포저 앱(350)에 의해 패키징된 컨텐츠와 IM 클라이언트(340)로부터의 컨텐츠 미리보기를 수신한다. 단계(1610)에서, IM 서비스(130)는 로컬 및 원격 컴포저 앱(350)에 투명한(transparent) 방식으로 패키징된 컨텐츠와 컨텐츠 미리보기를 원격 디바이스에 전송한다. 단계(1615)에서, IM 서비스(130)는 원격 디바이스의 원격 IM 클라이언트에 패키징된 컨텐츠와 컨텐츠 미리보기를 제공한다.
도 17은 본 발명의 확장성이 강화된 앱(app powered extensibility)이 구현될 수 있는 PC, 클라이언트 머신 또는 서버와 같은 예시적인 컴퓨터 시스템(1700)의 간략화된 블록도이다. 컴퓨터 시스템(1700)은 프로세서(1705), 시스템 메모리(1711) 및 시스템 버스(1714)를 포함하며, 시스템 버스(1714)는 시스템 메모리(1711)를 포함한 다양한 시스템 컴포넌트를 프로세서(1705)에 연결한다. 시스템 버스(1714)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 또는 임의의 다양한 버스 아키텍처를 사용하는 로컬 버스를 포함하는 임의의 다양한 유형의 버스 구조체일 수 있다. 시스템 메모리(1711)는 ROM(1717)과 RAM(1721)을 포함한다. 스타트업(startup) 동안과 같이 컴퓨터 시스템(1700) 내의 컴포넌트들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 BIOS(basic input/output system)(1725)가 ROM(1717)에 저장된다. 컴퓨터 시스템(1700)은 내부적으로 배치된 하드 디스크(미도시)에 판독하고 기입하기 위한 하드 디스크 드라이브(1728), 탈착가능 자기 디스크(1733)(예컨대, 플로피 디스크)에 판독하고 기입하기 위한 자기 디스크 드라이브(1730) 및 CD(compact disc), DVD (digital versatile disc) 또는 다른 광학 매체와 같은 탈착가능 광학 디스크(1743)에 판독하고 기입하기 위한 광학 디스크 드라이브(1738)를 더 포함할 수 있다. 하드 디스크 드라이브(1728), 자기 디스크 드라이브(1730) 및 광학 디스크 드라이브(1738)는 각각 하드 디스크 드라이브 인터페이스(1746), 자기 디스크 드라이브 인터페이스(1749) 및 광학 디스크 드라이브 인터페이스(1752)에 의해 시스템 버스(1714)에 접속된다. 드라이브와 그와 연관된 컴퓨터-판독가능 저장 매체는 컴퓨터-판독가능 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터 시스템(1700)을 위한 다른 데이터의 비휘발성 저장소를 제공한다. 비록 본 예시가 하드 디스크, 탈착가능 자기 디스크(1733) 및 탈착가능 광학 디스크(1743)를 포함하지만, 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, 데이터 카트리지, RAM, ROM 등과 같이 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터-판독가능 저장 매체가 또한 본 발명의 확장성이 강화된 앱의 일부 적용례에서 사용될 수 있다. 아울러, 본 명세서에서 사용된 바와 같이, 컴퓨터-판독가능 저장 매체라는 용어는 하나 이상의 매체 유형(예를 들어, 하나 이상의 자기 디스크, 하나 이상의 CD 등)을 포함한다. 본 명세서 및 청구항의 목적을 위해, "컴퓨터-판독가능 저장 매체" 및 그 변형은 파(wave), 신호 및/또는 다른 일시적 및/또는 무형의 통신 매체를 포함하지 않는다.
다수의 프로그램 모듈은 운영 체제(1755), 하나 이상의 애플리케이션(1757), 다른 프로그램 모듈(1760) 및 프로그램 데이터(1763)를 포함하는 하드 디스크, 자기 디스크(1733), 광학 디스크(1743), ROM (1717) 또는 RAM(1721)에 저장될 수 있다. 사용자는 키보드(1766) 및 마우스와 같은 포인팅 디바이스(1768)와 같은 입력 디바이스를 통해 컴퓨터 시스템(1700)에 명령 및 정보를 입력할 수 있다. 다른 입력 디바이스(미도시)는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너, 트랙볼, 터치 패드, 터치스크린, 터치 감지 디바이스, 음성 명령 모듈 또는 디바이스, 사용자 움직임 또는 사용자 동작 캡처 디바이스 등을 포함할 수 있다. 이들 및 다른 입력 디바이스들은 종종 시스템 버스(1714)에 연결된 직렬 포트 인터페이스(1771)를 통해 프로세서(1705)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 다른 인터페이스에 의해서 접속될 수도 있다. 모니터(1773) 또는 다른 유형의 디스플레이 디바이스가 또한 비디오 어댑터(1775)와 같은 인터페이스를 통해 시스템 버스(1714)에 접속된다. 모니터(1773) 이외에, 개인용 컴퓨터는 전형적으로 스피커 및 프린터와 같은 다른 주변 출력 디바이스(미도시)를 포함한다. 도 17에 도시된 예시는 호스트 어댑터(1778), SCSI(Small Computer System Interface) 버스(1783) 및 SCSI 버스(1783)에 접속된 외부 저장 장치 (1776)를 더 포함한다.
컴퓨터 시스템(1700)은 원격 컴퓨터(1788)와 같은 하나 이상의 원격 컴퓨터에 대한 논리적 접속을 사용하여 네트워크 환경에서 동작 가능하다. 원격 컴퓨터(1788)는 다른 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스, 또는 다른 공통 네트워크 노드일 수 있으며, 도 17에는 하나의 대표적인 원격 메모리/저장 디바이스(1790) 만이 도시되어 있으나, 컴퓨터 시스템 (1700)과 관련하여 전술 한 많은 또는 모든 컴포넌트를 포함한다. 도 17에 도시된 논리적 접속은(local area network: LAN)(1793) 및 WAN(wide area network)(1795)을 포함한다. 그러한 네트워킹 환경은 종종, 예를 들어, 사무실, 기업 전체 컴퓨터 네트워크, 인트라넷 및 인터넷에 배치된다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터 시스템(1700)은 네트워크 인터페이스 또는 어댑터(1796)를 통해 로컬 영역 네트워크(1793)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터 시스템(1700)은 일반적으로 광대역 모뎀(1798), 네트워크 게이트웨이, 또는 인터넷과 같은 광역 네트워크(1795)를 통한 통신을 설정하기 위한 다른 수단을 포함한다. 내부 또는 외부일 수 있는 광대역 모뎀(1798)은 직렬 포트 인터페이스(1771)를 통해 시스템 버스(1714)에 접속된다. 네트워크 환경에서, 컴퓨터 시스템(1700) 또는 그 일부에 관련된 프로그램 모듈은 원격 메모리 저장 디바이스(1790)에 저장될 수 있다. 도 17에 도시된 네트워크 접속은 예시일 뿐이며, 컴퓨터 간의 통신 링크를 수립하는 다른 수단이 본 발명의 확장성이 강화된 앱의 적용례의 특정 요건에 따라 사용될 수 있다.
도 18은 본 발명의 확장성이 강화된 앱을 제공하기 위해서 본 명세서에 설명된 다양한 컴포넌트를 실행할 수 있는 디바이스에 대한 예시적인 아키텍처(1800)를 도시한다. 따라서, 도 18에 도시된 아키텍처(1800)는 서버 컴퓨터, 이동 전화, PDA, 스마트 폰, 데스크탑 컴퓨터, 넷북 컴퓨터, 태블릿 컴퓨터, GPS 디바이스, 게임 콘솔 및/또는 랩톱 컴퓨터에 적용될 수 있다. 아키텍처(1800)는 본 명세서에 제시된 컴포넌트의 임의의 양태를 실행하는데 이용될 수 있다.
도 18에 도시된 아키텍처(1800)는 CPU(Central Processing Unit)(1802), RAM(1806) 및 ROM(1808)을 포함하는 시스템 메모리(1804), 및 메모리(1804)를 CPU(1802)에 연결하는 시스템 버스(1810)를 포함한다. 스타트업 동안과 같이 아키텍쳐(1800) 내의 컴포넌트들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 BIOS는 ROM(1808)에 저장된다. 아키텍처(1800)는 애플리케이션, 파일 시스템 및 운영 체제를 구현하는데 이용되는 소프트웨어 코드 또는 다른 컴퓨터 실행 코드를 저장하는 대용량 저장 장치(1812)를 더 포함한다.
대용량 저장 디바이스(1812)는 버스(1810)에 접속된 대용량 저장 제어기(미도시)를 통해 CPU(1802)에 접속된다. 대용량 저장 디바이스(1812) 및 그와 연관된 컴퓨터 판독가능 저장 매체는 아키텍처(1800)를 위한 비휘발성 저장소를 제공한다.
본 명세서에 포함된 컴퓨터 판독가능 저장 매체의 설명이 하드 디스크 또는 CD-ROM 드라이브와 같은 대용량 저장 디바이스를 언급하지만, 컴퓨터 판독가능 저장 매체는 아키텍처(1800)에 의해 액세스될 수 있는 임의의 이용 가능한 저장 매체일 수 있음이 당업자에 의해 이해될 것이다.
예를 들어, 컴퓨터 판독가능 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보를 저장하기 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 탈착가능 및 비탈착가능 매체를 포함할 수 있으나 이에 제한되는 것은 아니다. 예를 들어, 컴퓨터 판독가능 매체는 RAM, ROM, EPROM(erasable programmable read only memory), EEPROM(electrically erasable programmable read only memory), 플래시 메모리 또는 다른 고체 상태(solid state) 메모리 기술, CD-ROM, DVD, HD-DVD(고화질 DVD), 블루 레이 또는 다른 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는데 사용될 수 있고, 아키텍처 (1800)에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있으나, 이에 제한되지 않는다.
다양한 실시예에 따르면, 아키텍처(1800)는 네트워크를 통해 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크 환경에서 동작할 수 있다. 아키텍처(1800)는 버스(1810)에 접속된 네트워크 인터페이스 유닛(1816)을 통해 네트워크에 접속될 수 있다. 네트워크 인터페이스 유닛(1816)은 또한 다른 유형의 네트워크 및 원격 컴퓨터 시스템에 접속하기 위해 이용될 수 있다. 아키텍처(1800)는 또한 키보드, 마우스 또는 전자 스타일러스(stylus)(도 18에 미도시)를 포함하는 다수의 다른 디바이스로부터 입력을 수신하고 처리하기 위한 입/출력 제어기(1818)를 포함할 수 있다. 유사하게, 입/출력 제어기(1818)는 디스플레이 스크린, 프린터, 또는 다른 유형의 출력 디바이스(역시 도 18에 미도시)에 출력을 제공할 수 있다.
본 명세서에 기술된 소프트웨어 컴포넌트는 CPU(1802)에 로딩되고 실행될 때, CPU(1802) 및 전체 아키텍처(1800)를 범용 컴퓨팅 시스템으로부터 본 명세서에 제시된 기능을 용이하게 하도록 맞춤화된 특수 목적 컴퓨팅 시스템으로 변환할 수 있다. CPU(1802)는 임의의 수의 트랜지스터 또는 임의의 수의 상태를 개별적으로 또는 집합적으로 취할 수 있는 다른 개별(discrete) 회로 소자로 구성될 수 있다. 보다 구체적으로, CPU(1802)는 본 명세서에 개시된 소프트웨어 모듈 내에 포함된 실행가능 명령어에 응답하여 유한 상태 머신(finite-state machine)으로서 동작할 수 있다. 이들 컴퓨터 실행가능 명령어는 CPU(1802)가 어떻게 상태를 전이하는가를 특정함으로써 CPU(1802)를 변환할 수 있고, 이에 의해 CPU(1802)를 구성하는 트랜지스터 또는 다른 개별 하드웨어 소자를 변환할 수 있다.
본 명세서에 제시된 소프트웨어 모듈을 인코딩하는 것은 본 명세서에 제시된 컴퓨터 판독가능 저장 매체의 물리적 구조를 변환할 수도 있다. 물리적 구조의 특정 변환은 본 설명의 다른 구현예에서 다양한 요인(factors)에 따를 수 있다. 이러한 요인의 예로는 컴퓨터 판독가능 저장 매체가 주 저장 장치 또는 부 저장 장치로서 특성화되는가와 같은, 컴퓨터 판독가능 저장 매체를 구현하는데 사용되는 기술을 포함하지만 이에 한정되는 것은 아니다. 예를 들어, 컴퓨터 판독가능 저장 매체가 반도체 기반 메모리로서 구현되는 경우, 본 명세서에 개시된 소프트웨어는 반도체 메모리의 물리적 상태를 변환함으로써 컴퓨터 판독가능 저장 매체에 인코딩될 수 있다. 예를 들어, 소프트웨어는 반도체 메모리를 구성하는 트랜지스터, 캐패시터 또는 다른 개별 회로 소자의 상태를 변환할 수 있다. 소프트웨어는 또한 데이터를 저장하기 위해 이러한 컴포넌트의 물리적 상태를 변환할 수 있다.
다른 예시로서, 본 명세서에 개시된 컴퓨터 판독가능 저장 매체는 자기 또는 광학 기술을 사용하여 구현될 수있다. 그러한 구현예에서, 본 명세서에 제시된 소프트웨어는 소프트웨어가 인코딩될 때 자기 또는 광학 매체의 물리적 상태를 변환 할 수 있다. 이러한 변환은 주어진 자기 매체 내의 특정 위치의 자기 특성을 변경하는 것을 포함할 수 있다. 이러한 변환은 주어진 광학 매체 내의 특정 위치의 물리적 특징 또는 특성을 변경하여 그 위치의 광학 특성을 변경하는 것을 포함할 수도 있다. 물리적 매체의 다른 변환은 본 설명의 범위 및 사상을 벗어남 없이 가능하며, 전술한 예시는 이 논의를 용이하게 하기 위해서만 제공된다.
상기의 내용에 비추어, 본 명세서에 제시된 소프트웨어 컴포넌트를 저장하고 실행하기 위해 많은 유형의 물리적 변환이 아키텍처(1800)에서 발생한다는 것이 이해될 것이다. 또한, 아키텍처(1800)는 핸드헬드 컴퓨터, 임베디드 컴퓨터 시스템, 스마트폰, PDA 및 당업자에게 알려진 다른 유형의 컴퓨팅 장치를 포함하는 다른 유형의 컴퓨팅 장치를 포함할 수 있음이 이해될 것이다. 아키텍처(1800)가 도 18에 도시된 모든 컴포넌트를 포함하지 않을 수 있고, 도 18에 명시적으로 도시되지 않은 다른 컴포넌트를 포함할 수도 있거나, 도 18에 도시된 것과 완전히 다른 아키텍처를 이용할 수도 있다.
도 19는 일반적으로 1902로 도시된 다양한 선택적인 하드웨어 및 소프트웨어 컴포넌트들을 포함하는 이동 전화 또는 스마트폰과 같은 예시적인 모바일 디바이스(110)의 기능 블록도이다. 모바일 디바이스 내의 임의의 컴포넌트(1902)는 임의의 다른 컴포넌트와 통신할 수 있지만, 설명의 용이함을 위해 모든 접속이 도시되지는 않는다. 모바일 디바이스는 다양한 컴퓨팅 장치(예를 들어, 셀 폰, 스마트 폰, 핸드헬드 컴퓨터, PDA 등) 중 임의의 것일 수 있고, 셀룰러 또는 위성 네트워크과 같은 하나 이상의 이동 통신 네트워크(1904)와의 무선 양방향 통신을 가능하게 할 수 있다.
예시적인 디바이스(110)는 신호 코딩, 데이터 처리, 입/출력 처리, 전력 제어 및/또는 다른 기능 등과 같은 작업을 수행하는 제어기 또는 프로세서(1910)(예를 들어, 신호 프로세서, 마이크로프로세서, 마이크로컨트롤러, ASIC (Application Specific Integrated Circuit) 또는 다른 제어 및 프로세싱 논리 회로)를 포함할 수 있다. 운영 체제(1912)는 전원 상태, 잠금-위(above-lock) 상태 및 잠금-아래(below-lock) 상태를 포함하는 컴포넌트(1902)의 할당 및 사용을 제어할 수 있으며, 하나 이상의 애플리케이션(1914)에 대한 지원을 제공한다. 응용 프로그램은 일반적인 모바일 컴퓨팅 애플리케이션(예컨대, 이미지 캡처 애플리케이션, 전자 메일 애플리케이션, 일정, 연락처 관리자, 웹 브라우저, 메시징 애플리케이션) 또는 다른 컴퓨팅 애플리케이션을 포함할 수 있다.
예시적인 모바일 디바이스(110)는 메모리(1920)를 포함할 수 있다. 메모리(1920)는 비탈착가능 메모리(1922) 및/또는 탈착가능 메모리(1924)를 포함할 수 있다. 비탈착가능 메모리(1922)는 RAM, ROM, 플래시 메모리, 하드 디스크, 또는 다른 널리 알려진 메모리 저장 기술을 포함할 수 있다. 탈착가능 메모리(1924)는 플래시 메모리 또는 GSM (Global System for Mobile communications) 시스템에서 널리 알려진 SIM(Subscriber Identity Module) 카드 또는 "스마트 카드"와 같은 다른 잘 알려진 메모리 저장 기술을 포함할 수 있다. 메모리(1920)는 운영 체제(1912) 및 애플리케이션(1914)을 실행하기 위한 데이터 및/또는 코드를 저장하는데 사용될 수 있다. 예시적인 데이터는 웹 페이지, 텍스트, 이미지, 사운드 파일, 비디오 데이터, 또는 하나 이상의 유선 또는 무선 네트워크를 통해 하나 이상의 네트워크 서버 또는 다른 디바이스로로 전송되고/전송되거나 그로부터 수신될 다른 데이터 세트를 포함할 수 있다.
메모리(1920)는 또한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보를 저장하기 위한 임의의 방법 또는 기술로 구현된 하나 이상의 컴퓨터 판독가능 저장 매체로서 구성되거나 하나 이상의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 판독가능 매체는 RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 다른 고체 상태 메모리 기술, CD-ROM(compact-disc ROM), DVD(Digital Versatile Disc), HD DVD(High Definition DVD), 블루 레이 또는 기타 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치 또는 원하는 정보를 저장할 수 있고 모바일 디바이스(110)에 의해 액세스될 수 있는 다른 매체를 포함하지만 이에 제한되지 않는다.
메모리(1920)는 IMSI(International Mobile Subscriber Identity)와 같은 가입자 식별자 및 IMEI(International Mobile Equipment Identifier)와 같은 장비 식별자를 저장하는데 사용될 수 있다. 이러한 식별자는 사용자 및 장비를 식별하기 위해 네트워크 서버로 전송될 수 있다. 모바일 디바이스(110)는 터치스크린(1932), 음성 인식 및 음성 명령 등을 위한 음성 입력의 구현을 위한 마이크로폰(1934), 카메라(1936), 물리적 키보드(1938), 트랙볼(1940) 및/또는 근접 센서(1942)와 같은 하나 이상의 입력 디바이스(1930)와, 스피커(1952) 및 하나 이상의 디스플레이(1954)와 같은 하나 이상의 출력 디바이스(1950)를 지원할 수 있다. 움직임 인식을 사용하는 다른 입력 디바이스(미도시)가 또한 일부 경우에 이용될 수 있다. 다른 가능한 출력 디바이스(미도시)는 압전기(piezoelectric) 또는 햅틱(haptic) 출력 디바이스를 포함할 수 있다. 일부 디바이스는 둘 이상의 입/출력 기능을 제공할 수 있다. 예를 들어, 터치스크린(1932) 및 디스플레이(1954)는 단일 입/출력 장치로 결합될 수 있다.
본 기술분야에 잘 알려진 바와 같이, 무선 모뎀(1960)이 안테나(미도시)에 연결되어 프로세서(1910)와 외부 디바이스 사이의 양방향 통신을 지원할 수 있다. 모뎀(1960)은 일반적으로 도시되어 있으며, 이동 통신 네트워크(1904) 및/또는 다른 무선 기반 모뎀(예를 들어, 블루투스(1964) 또는 Wi-Fi(1962))과 통신하기 위한 셀룰러 모뎀을 포함할 수 있다. 무선 모뎀(1960)은 통상적으로 단일 셀룰러 네트워크 내, 셀룰러 네트워크들 간, 또는 모바일 디바이스와 PSTN(public switched telephone network) 간의 데이터 및 음성 통신을 위한 GSM 네트워크와 같은 하나 이상의 셀룰러 네트워크와 통신하도록 구성된다.
모바일 디바이스는 적어도 하나의 입/출력 포트(1980), 전원(1982), GPS 수신기와 같은 위성 항법 시스템 수신기(1984), 가속도계(1986), 자이로스코프(gyroscope)(미도시) 및/또는 USB 포트, IEEE 1394 (Fire Wire) 포트 및/또는 RS-232 포트일 수 있는 물리적 커넥터(1990)를 더 포함할 수 있다. 예시된 컴포넌트(1902)가 요구되거나 전부 포함될 필요는 없으며, 임의의 컴포넌트가 제거되거나 다른 컴포넌트가 추가될 수 있다.
도 20은 멀티미디어 콘솔(1104)의 예시적인 기능 블록도이다. 멀티미디어 콘솔(1104)은 레벨 1 캐시(2002), 레벨 2 캐시(2004) 및 플래시 ROM(Read Only Memory)(2006)을 갖는 중앙 처리 장치(CPU)(2001)를 갖는다. 레벨 1 캐시(2002)와 레벨 2 캐시(2004)는 일시적으로 데이터를 저장하여 메모리 액세스 사이클의 수를 감소시킴으로써 처리 속도 및 처리량을 향상시킨다. CPU(2001)는 둘 이상의 코어 및 그에 따른 추가적인 레벨 1 및 레벨 2 캐시(2002 및 2004)로 구성될 수 있다. 플래시 ROM(2006)은 멀티미디어 콘솔(1104)의 전원이 켜질때 부팅 프로세스의 초기 단계 동안 로딩되는 실행가능한 코드를 저장할 수 있다.
그래픽 처리 유닛(GPU)(2008) 및 비디오 인코더/비디오 코덱(코더/디코더)(2014)은 고속 및 고해상도 그래픽 처리를 위한 비디오 처리 파이프 라인을 형성한다. 데이터는 GPU(2008)로부터 버스를 통해 비디오 인코더/비디오 코덱(2014)으로 전달된다. 비디오 처리 파이프 라인은 텔레비전 또는 다른 디스플레이로의 전송을 위해 A/V(오디오/비디오) 포트(2040)에 데이터를 출력한다. 메모리 컨트롤러(2010)는 GPU(2008)에 연결되어, 이에 한정되는 것은 아니지만 RAM과 같은 다양한 유형의 메모리(2012)로의 프로세서 액세스를 용이하게 한다.
멀티미디어 콘솔(1104)은 I/O 컨트롤러(2020), 시스템 관리 컨트롤러(2022), 오디오 처리 유닛(2023), 네트워크 인터페이스 컨트롤러(2024), 제 1 USB (Universal Serial Bus) 호스트 컨트롤러(2026), 제 2 USB 컨트롤러(2028) 및 모듈(2018) 상에 구현되는 전면 패널 I/O 서브어셈블리(subassembly)(2030)를 포함한다. USB 컨트롤러(2026 및 2028)는 주변 컨트롤러(2042(1) 및 2042(2)), 무선 어댑터(2048) 및 외부 메모리 디바이스(2046)(예를 들어, 플래시 메모리, 외부 CD/DVD ROM 드라이브, 탈착가능 매체 등)의 호스트로서 동작한다. 네트워크 인터페이스 컨트롤러(2024) 및/또는 무선 어댑터(2048)는 네트워크(예를 들어, 인터넷, 홈 네트워크 등)에 대한 액세스를 제공하며, 이더넷 카드, 모뎀, 블루투스 모듈 또는 케이블 모뎀 등을 포함하는 다양한 유선 또는 무선 어댑터 컴포넌트 중 임의의 것일 수 있다.
시스템 메모리(2043)는 부팅 프로세스 동안 로딩되는 애플리케이션 데이터를 저장하기 위해 제공된다. DVD/CD 드라이브, 하드 드라이브, 또는 다른 탈착가능 미디어 드라이브 등을 포함할 수 있는 미디어 드라이브(2044)가 제공된다. 미디어 드라이브(2044)는 멀티미디어 콘솔(1104)의 내부 또는 외부에 배치될 수 있다. 애플리케이션 데이터가 수행, 재생 등을 위해 미디어 드라이브(204)를 통해 멀티미디어 콘솔 (1104)에 의해 액세스될 수 있다. 미디어 드라이브 (2044)는 직렬 ATA 버스 또는 다른 고속 접속(예를 들어, IEEE 1394)과 같은 버스를 통해 I/O 컨트롤러(2020)에 접속된다.
시스템 관리 컨트롤러(2022)는 멀티미디어 콘솔(1104)의 이용가능성을 보장하는 것과 관련된 다양한 서비스 기능을 제공한다. 오디오 처리 유닛(2023) 및 오디오 코덱(2032)은 높은 충실도(fidelity)와 스테레오 처리를 갖는 대응하는 오디오 처리 파이프 라인을 형성한다. 오디오 데이터는 통신 링크를 통해 오디오 처리부(2023)와 오디오 코덱(2032) 사이에서 전송된다. 오디오 처리 파이프 라인은 오디오 기능을 갖는 외부 오디오 플레이어 또는 디바이스에 의한 재생을 위해 데이터를 A/V 포트(2040)로 출력한다.
전면 패널 I/O 서브어셈블리(2030)는 멀티미디어 콘솔(1104)의 외부 표면에 노출된 임의의 LED(발광 다이오드) 또는 다른 표시기(indicator)뿐만 아니라 전원 버튼(2050) 및 꺼냄 버튼(2052)의 기능을 지원한다. 시스템 전원 공급 모듈(2036)은 멀티미디어 콘솔(1104)의 컴포넌트에 전력을 제공한다. 팬(2038)은 멀티미디어 콘솔(1104) 내의 회로를 냉각시킨다.
CPU(2001), GPU(2008), 메모리 컨트롤러(2010), 및 멀티미디어 콘솔(1104) 내의 다양한 다른 컴포넌트들은 직렬 및 병렬 버스, 메모리 버스, 주변 장치 버스, 및 프로세서 또는 다양한 버스 아키텍처 중 하나를 사용하는 로컬 버스를 포함하는 하나 이상의 버스를 통해 상호접속된다. 예시로서, 이러한 아키텍처는 PCI (Peripheral Component Interconnect) 버스, PCI-Express 버스 등을 포함할 수 있다.
멀티미디어 콘솔(1104)의 전원이 켜지면, 애플리케이션 데이터는 시스템 메모리(2043)로부터 메모리(2012) 및/또는 캐시(2002 및 2004)로 로딩되어 CPU(2001)에서 실행될 수 있다. 애플리케이션은 멀티미디어 콘솔(1104)에서 이용가능한 다양한 매체 유형을 탐색할 때 일관된 사용자 경험을 제공하는 그래픽 사용자 인터페이스를 제시할 수 있다. 동작시에, 미디어 드라이브(2044) 내에 포함된 애플리케이션 및/또는 다른 매체는 멀티미디어 콘솔(1104)에 추가 기능을 제공하기 위해 미디어 드라이브(2044)로부터 론칭되거나 재생될 수 있다.
멀티미디어 콘솔(1104)은 시스템을 텔레비전이나 다른 디스플레이에 단순히 접속시킴으로써 독립형 시스템으로 작동될 수 있다. 이러한 독립 모드에서, 멀티미디어 콘솔(1104)은 하나 이상의 사용자가 시스템과 상호 작용하거나, 영화를 시청하거나, 음악을 들을 수 있게 한다. 그러나, 네트워크 인터페이스 컨트롤러(2024) 또는 무선 어댑터(2048)를 통해 이용가능해진 광대역 접속에 통합됨으로써, 멀티미디어 콘솔(1104)은 또한 더 큰 네트워크 커뮤니티에 참여자로서 동작될 수 있다.
멀티미디어 콘솔(1104)의 전원이 켜지면, 설정된 양의 하드웨어 자원이 멀티미디어 콘솔 운영 시스템에 의해 시스템 사용을 위해 예약된다. 이러한 자원은 메모리(예컨대, 16MB), CPU 및 GPU 주기(예컨대, 5 %), 네트워킹 대역폭(예컨대, 8kbps) 등이 포함될 수 있다. 이러한 자원은 시스템 부팅시 예약되므로, 예약된 자원은 애플리케이션의 관점에서 존재하지 않는다.
구체적으로, 메모리 예약은 론칭 커널(launch kernel), 병렬 시스템 애플리케이션(concurrent system applications) 및 드라이버를 포함하기에 충분히 큰 것이 바람직하다. 예약된 CPU 사용이 시스템 애플리케이션에 의해 사용되지 않는 경우, 유휴 스레드(idle thread)는 임의의 사용되지 않는 사이클을 소비할 수 있도록 CPU 예약이 일정한 것이 바람직하다.
GPU 예약에 관하여, GPU 인터럽트를 사용하여 팝업(pop-ups)을 오버레이(overlay)로 렌더링하도록 코드를 스케줄링함으로써 시스템 애플리케이션(예를 들어, 팝업)에 의해 생성된 경량 메시지가 디스플레이된다. 오버레이에 필요한 메모리 양은 오버레이 영역 크기에 따라 달라지며, 오버레이는 화면 해상도에 맞게 조정하는 것이 바람직하다. 전체 사용자 인터페이스가 병렬 사용자 애플리케이션에 의해 사용되는 경우에, 애플리케이션의의 해상도와 무관한 해상도를 사용하는 것이 바람직하다. 주파수를 변경하고 TV를 재동기화할 필요가 없도록 스케일러(scaler)를 사용하여 이러한 해상도를 설정할 수 있다.
멀티미디어 콘솔(1104)이 부팅되고 시스템 자원이 예약된 후, 병렬 시스템 애플리케이션이 시스템 기능을 제공하도록 실행된다. 시스템 기능은 전술된 예약된 시스템 자원 내에서 실행되는 시스템 애플리케이션의 세트에 캡슐화된다. 운영 체제 커널은 시스템 애플리케이션 스레드 대 게임 애플리케이션 스레드인 스레드를 식별한다. 시스템 애플리케이션은 바람직하게는 애플리케이션에 일관된 시스템 자원 뷰(resource view)를 제공하기 위해 사전 결정된 시간 및 간격으로 CPU(2001)에서 실행되도록 스케줄링된다. 스케줄링은 콘솔에서 실행중인 게임 애플리케이션의 캐시 중단을 최소화한다.
병렬 시스템 애플리케이션이 오디오를 요구하면, 오디오 처리는 시간 감도(time sensitivity)로 인해 게임 애플리케이션에 비동기적으로 스케줄링된다. 멀티미디어 콘솔 애플리케이션 관리자(하기에서 설명됨)는 시스템 애플리케이션이 활성화되면 게임 애플리케이션의 오디오 레벨(예를 들어, 뮤트, 감쇠)을 제어한다.
입력 디바이스(예컨대, 컨트롤러 (2042(1) 및 2042(2))는 게임 애플리케이션과 시스템 애플리케이션에 의해 공유된다. 입력 디바이스는 예약된 자원이 아니지만, 시스템 애플리케이션과 게임 애플리케이션 사이에서 스위칭되어 각각이 디바이스의 포커스(focus)를 갖게 된다. 애플리케이션 관리자는 바람직하게는 게임 애플리케이션의 지식에 대한 지식 없이 입력 스트림(input stream)의 스위칭을 제어하고, 드라이버는 포커스 스위치에 관한 상태 정보를 유지한다.
전술한 바에 기초하여, 앱 구동 확장성(app powered extensibility)을 위한 기술들이 본 명세서에 개시되었다는 것을 이해할 수 있을 것이다. 본 명세서에 제시된 주제가 컴퓨터 구조적 특징, 방법적 및 변형적 동작, 특정 컴퓨팅 기계 및 컴퓨터 판독가능 저장 매체에 특정한 언어로 기술되었지만, 첨부된 청구항에 정의된 발명은 본 명세서에 설명된 특정한 특징, 동작 또는 매체에 제한될 필요가 없다는 것을 이해해야 한다. 오히려, 특정한 특징, 동작 및 매체는 청구항을 구현하는 예시적인 형태로서 개시된다.
전술한 주제는 설명을 위해서만 제공되며 제한적으로 해석되어서는 안 될 것이다. 도시되고 설명된 예시적인 실시예와 적용례를 따르지 않고, 그리고 이하의 청구항에서 기재되는 본 출원의 앱 구동 확장성의 진정한 사상 및 범위를 벗어나지 않고, 본 명세서에 설명된 주제에 대한 다양한 수정 및 변경이 이루어질 수 있다.
Claims (18)
- 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 메모리로서,
상기 명령어는 네트워크를 통한 통신 능력을 갖는 로컬 디바이스에 배치된 하나 이상의 프로세서에 의해 실행될 때, 상기 로컬 디바이스로 하여금,
상기 로컬 디바이스의 사용자가 선택할 복수의 컴포저 애플리케이션(composer application)을 표시(expose)하는 사용자 인터페이스를 제공하게 하고 - 각각의 컴포저 애플리케이션은 선택될 때 원격 디바이스의 사용자에게 상이한 사용자 경험이 제공될 수 있게 하고, 상기 복수의 컴포저 애플리케이션의 각각의 컴포저 애플리케이션은 인스턴트 메시징 플랫폼 내에서 선택 가능하고 상기 각각의 컴포저 애플리케이션에 고유한 사용자 인터페이스를 포함함 - ,
상기 로컬 디바이스 상에서 선택된 컴포저 애플리케이션을 동작시키게 하며,
상기 원격 디바이스에서 사용자 경험을 지원하기 위해 컨텐츠를 상기 선택된 컴포저 애플리케이션에 의해 생성하게 하고,
상기 컨텐츠를 상기 인스턴트 메시징 플랫폼과 호환 가능한 포맷을 갖는 파일로 패키징하게 하며 - 상기 인스턴트 메시징 플랫폼은 상기 선택된 컴포저 애플리케이션에 투명한(transparent) 패키징된 컨텐츠 전송을 기본 서비스로서 제공함 - ,
상기 로컬 디바이스에서, 상기 선택된 컴포저 애플리케이션으로부터 상기 패키징된 컨텐츠를 수신하게 하며,
상기 선택된 컴포저 애플리케이션에 대응하는 컴포저 애플리케이션을 다운로드하기 위한 링크를 상기 원격 디바이스에 제공하게 하거나 또는 상기 선택된 컴포저 애플리케이션의 상기 사용자 경험을 지원하는 웹 애플리케이션에 액세스하기 위한 링크를 상기 원격 디바이스에 제공하게 하는
하나 이상의 컴퓨터 판독가능 메모리.
- 제 1 항에 있어서,
상기 사용자 경험은 메시징 애플리케이션 경험과 통합된 경험 또는 독립적으로(on a standalone basis) 지원되는 경험인
하나 이상의 컴퓨터 판독가능 메모리.
- 제 1 항에 있어서,
상기 실행된 명령어는 또한 상기 로컬 디바이스로 하여금 상기 패키징된 컨텐츠의 미리보기를 상기 인스턴트 메시징 플랫폼에 제공하게 하고,
상기 미리보기는 정지된 물체(static object) 또는 움직이는 물체(animated object)를 포함하는
하나 이상의 컴퓨터 판독가능 메모리.
- 제 1 항에 있어서,
상기 선택된 컴포저 애플리케이션은 상기 로컬 디바이스의 사용자와 상기 원격 디바이스의 사용자 사이에 턴-바이-턴(turn-by-turn) 경험을 지원하는
하나 이상의 컴퓨터 판독가능 메모리.
- 제 4 항에 있어서,
상기 턴-바이-턴 경험은 상기 로컬 디바이스 및 상기 원격 디바이스의 각각에 디스플레이되는 병합된 메시징 이력(merged messaging history)에 통합되는
하나 이상의 컴퓨터 판독가능 메모리.
- 제 1 항에 있어서,
상기 인스턴트 메시징 플랫폼은 상기 복수의 컴포저 애플리케이션 각각에 사용자 인증 서비스를 제공하는
하나 이상의 컴퓨터 판독가능 메모리.
- 제 6 항에 있어서,
상기 사용자 인증 서비스는 상기 복수의 컴포저 애플리케이션 각각에 별도의 로그온(log on)을 제공할 필요없이 사용자가 상기 인스턴트 메시징 플랫폼에 로그온할 수 있게 하는
하나 이상의 컴퓨터 판독가능 메모리.
- 제 1 항에 있어서,
상기 실행된 명령어는 또한 상기 로컬 디바이스로 하여금 사용자 입력에 응답하여 상기 선택된 컴포저 애플리케이션이 상기 인스턴트 메시징 플랫폼으로부터 언플러깅되도록(unplugged) 구성하게 하는
하나 이상의 컴퓨터 판독가능 메모리.
- 제 1 항에 있어서,
상기 실행된 명령어는 또한 상기 로컬 디바이스로 하여금 상기 원격 디바이스 상에서 실행되는 상기 대응하는 컴포저 애플리케이션으로부터 상기 인스턴트 메시징 플랫폼을 통해 전송된 컨텐츠를 언패킹(unpacking)하게 하는
하나 이상의 컴퓨터 판독가능 메모리.
- 제 9 항에 있어서,
상기 실행된 명령어는 또한 상기 로컬 디바이스로 하여금 상기 언패킹된 컨텐츠를 사용하여 상기 로컬 디바이스의 사용자를 위한 사용자 경험을 제공하게 하는
하나 이상의 컴퓨터 판독가능 메모리.
- 하나 이상의 프로세서와,
디바이스 사용자와 상호작용하는 사용자 인터페이스(UI)를 지원하는 디스플레이와,
컴퓨터 판독가능 명령어를 저장하는 메모리를 포함하되,
상기 명령어는 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금,
상기 디바이스 사용자가 선택할 복수의 컴포저 애플리케이션을 상기 UI 상에 제공하게 하고,
컨텐츠를 생성하고, 인스턴트 메시지 플랫폼을 사용하여 원격 디바이스로 전송할 상기 컨텐츠를 파일(file)로 패키징하며, 상기 패키징된 컨텐츠의 미리보기를 제공하는 방법을 애플리케이션 프로그래밍 인터페이스(API)를 통해 상기 복수의 컴포저 애플리케이션에 표시하게 하며 - 상기 패키징된 컨텐츠는 상기 원격 디바이스 상에서 렌더링할 인스턴트 메시지 사용자 경험을 지원하고, 상기 인스턴트 메시지 플랫폼은 상기 복수의 컴포저 애플리케이션에 투명한(transparent) 패키징된 컨텐츠 전송을 기본 서비스로서 제공함 - ,
선택된 컴포저 애플리케이션으로부터 상기 API를 통해 상기 패키징된 컨텐츠와 상기 컨텐츠 미리보기를 수신하게 하고 - 상기 인스턴트 메시지 플랫폼은 상기 복수의 컴포저 애플리케이션으로부터 상기 원격 디바이스에서 실행 가능한 대응하는 컴포저 애플리케이션을 식별하여 상기 수신된 패키징된 컨텐츠와 연관되는 상기 인스턴트 메시지 사용자 경험을 렌더링함 - ,
상기 대응하는 컴포저 애플리케이션을 다운로드하기 위한 링크를 상기 원격 디바이스에 제공하게 하거나 또는 상기 선택된 컴포저 애플리케이션의 상기 인스턴트 메시지 사용자 경험을 지원하는 웹 애플리케이션에 액세스하기 위한 링크를 상기 원격 디바이스에 제공하게 하며,
상기 컨텐츠 미리보기를 상기 인스턴트 메시지 플랫폼과 연관된 메시징 이력의 일부로 통합하게 하고 - 상기 메시징 이력의 상기 컨텐츠 미리보기는 적어도 상기 하나 이상의 컴포저 애플리케이션으로부터 나옴 - ,
상기 컨텐츠 미리보기를 포함한 상기 메시징 이력을 상기 UI에 디스플레이하게 하며 - 상기 컨텐츠 미리보기는 복수의 컴포저 애플리케이션과 각각 연관되는 복수의 컨텐츠 미리보기를 포함함 - ,
상기 메시징 이력의 상기 디스플레이된 컨텐츠 미리보기를 상기 컴포저 애플리케이션의 론칭 포인트(launching point)로서 기능하도록 구성하게 하는
시스템.
- 제 11 항에 있어서,
상기 실행된 컴퓨터 판독가능 명령어는 또한 상기 하나 이상의 프로세서로 하여금 상기 원격 디바이스로부터 수신된 상기 패키징된 컨텐츠를 상기 식별된 대응하는 컴포저 애플리케이션 또는 상기 웹 애플리케이션으로 전달하게 하는
시스템.
- 제 11 항에 있어서,
상기 실행된 컴퓨터 판독가능 명령어는 또한 상기 하나 이상의 프로세서로 하여금 상기 원격 디바이스로부터 수신된 상기 컨텐츠 미리보기를 병합된 메시징 이력에서 이용하게 하는
시스템.
- 제 11 항에 있어서,
상기 실행된 컴퓨터 판독가능 명령어는 또한 상기 하나 이상의 프로세서로 하여금 상기 원격 디바이스로부터 수신된 상기 컨텐츠 미리보기를 상기 식별된 대응하는 컴포저 애플리케이션을 론칭하기 위한 사용자 선택가능 제어의 적어도 일부로서 사용하게 하는
시스템.
- 복수의 컴포저 애플리케이션을 지원하는 확장 가능한 메시징 플랫폼을 동작시키는 방법으로서,
사용자가 선택할 복수의 컴포저 애플리케이션을 표시하는 사용자 인터페이스를 제공하는 단계와,
로컬 디바이스 상에서 실행되는 로컬 클라이언트로부터 패키징된 컨텐츠 및 컨텐츠 미리보기를 수신하는 단계 - 상기 컨텐츠는 생성되고, 패키징되며, 상기 컨텐츠 미리보기는 상기 로컬 디바이스 상에서 실행되는 상기 복수의 컴포저 애플리케이션으로부터 선택된 로컬 컴포저 애플리케이션에 의해 생성됨 - 와,
상기 패키징된 컨텐츠 및 컨텐츠 미리보기를 인스턴트 메시징 플랫폼을 통해 전송하는 단계 - 상기 전송은 상기 컴포저 애플리케이션에 투명하게(transparently) 수행됨 - 와,
상기 전송된 패키징된 컨텐츠 및 컨텐츠 미리보기를 원격 디바이스 상에서 실행되는 원격 클라이언트에 제공하는 단계를 포함하되,
상기 원격 클라이언트는
상기 인스턴트 메시징 플랫폼을 사용하여, 상기 패키징된 컨텐츠와 연관되는 사용자 경험을 렌더링하도록 상기 복수의 컴포저 애플리케이션으로부터 상기 원격 디바이스에서 실행되는 원격 컴포저 애플리케이션을 위한 요구사항을 식별하되, 상기 패키징된 컨텐츠 내의 컨텐츠는 상기 원격 컴포저 애플리케이션을 식별하는 데 사용되고,
상기 원격 디바이스가 상기 패키징된 컨텐츠와 연관되는 상기 사용자 경험을 렌더링하도록 상기 식별된 원격 컴포저 애플리케이션을 다운로드하기 위한 링크를 수신하거나 또는 상기 원격 디바이스가 상기 패키징된 컨텐츠와 연관되는 상기 사용자 경험을 렌더링하도록 웹 클라이언트에 액세스하기 위한 링크를 수신하는
방법.
- 제 15 항에 있어서,
상기 로컬 클라이언트 및 상기 원격 클라이언트는 각각 상기 로컬 디바이스와 상기 원격 디바이스 사이에 공유되는 메시징 이력에서 상기 컨텐츠 미리보기를 이용하는
방법.
- 제 15 항에 있어서,
상기 로컬 컴포저 애플리케이션 및 상기 원격 컴포저 애플리케이션은 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 각각의 로컬 클라이언트 및 원격 클라이언트와 인터페이스하고, 상기 API는 컨텐츠를 패킹 및 언패킹하는 방법을 표시하는
방법.
- 제 15 항에 있어서,
상기 로컬 컴포저 애플리케이션 또는 상기 원격 컴포저 애플리케이션을 대신하여 상기 확장 가능한 메시징 플랫폼에서 사용자를 인증하는 단계를 더 포함하는
방법.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462045695P | 2014-09-04 | 2014-09-04 | |
US62/045,695 | 2014-09-04 | ||
US14/482,801 | 2014-09-10 | ||
US14/482,801 US10447621B2 (en) | 2014-09-04 | 2014-09-10 | App powered extensibility of messages on an existing messaging service |
PCT/US2015/048006 WO2016036777A1 (en) | 2014-09-04 | 2015-09-02 | App powered extensibility of messages on an existing messaging service |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170051434A KR20170051434A (ko) | 2017-05-11 |
KR102382775B1 true KR102382775B1 (ko) | 2022-04-04 |
Family
ID=55438576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177005895A KR102382775B1 (ko) | 2014-09-04 | 2015-09-02 | 기존 메시징 서비스의 메시지에 대한 앱에 의해 강화된 확장성 제공 기법 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10447621B2 (ko) |
EP (1) | EP3189633B1 (ko) |
KR (1) | KR102382775B1 (ko) |
CN (2) | CN111683000B (ko) |
WO (1) | WO2016036777A1 (ko) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016175761A1 (en) * | 2015-04-28 | 2016-11-03 | Hewlett-Packard Development Company, L.P. | Acquisition of a device fingerprint from an instance of a client application |
KR20180070659A (ko) | 2015-12-21 | 2018-06-26 | 구글 엘엘씨 | 메시징 애플리케이션들을 위한 자동적인 제안들 및 다른 콘텐츠 |
CN108781175B (zh) | 2015-12-21 | 2021-09-21 | 谷歌有限责任公司 | 用于消息交换题绪的自动建议的方法、介质及系统 |
US10592098B2 (en) * | 2016-05-18 | 2020-03-17 | Apple Inc. | Devices, methods, and graphical user interfaces for messaging |
US10387461B2 (en) | 2016-08-16 | 2019-08-20 | Google Llc | Techniques for suggesting electronic messages based on user activity and other context |
US10547574B2 (en) | 2016-09-20 | 2020-01-28 | Google Llc | Suggested responses based on message stickers |
US10015124B2 (en) | 2016-09-20 | 2018-07-03 | Google Llc | Automatic response suggestions based on images received in messaging applications |
WO2018057536A1 (en) | 2016-09-20 | 2018-03-29 | Google Llc | Bot requesting permission for accessing data |
US11206248B2 (en) * | 2016-09-23 | 2021-12-21 | Ncr Corporation | Multifactor authentication from messaging systems |
US10416846B2 (en) | 2016-11-12 | 2019-09-17 | Google Llc | Determining graphical element(s) for inclusion in an electronic communication |
US10891485B2 (en) | 2017-05-16 | 2021-01-12 | Google Llc | Image archival based on image categories |
US10827319B2 (en) | 2017-06-02 | 2020-11-03 | Apple Inc. | Messaging system interacting with dynamic extension app |
US10404636B2 (en) * | 2017-06-15 | 2019-09-03 | Google Llc | Embedded programs and interfaces for chat conversations |
US10348658B2 (en) * | 2017-06-15 | 2019-07-09 | Google Llc | Suggested items for use with embedded applications in chat conversations |
US10552540B2 (en) | 2017-11-27 | 2020-02-04 | International Business Machines Corporation | Automated application composer with natural language processing |
US10891526B2 (en) | 2017-12-22 | 2021-01-12 | Google Llc | Functional image archiving |
US10993110B2 (en) * | 2018-07-13 | 2021-04-27 | Nvidia Corp. | Connectionless fast method for configuring Wi-Fi on displayless Wi-Fi IoT device |
US11165734B1 (en) * | 2020-06-10 | 2021-11-02 | Snap Inc. | Messaging system share-to-chat |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7334043B2 (en) * | 2002-09-17 | 2008-02-19 | At&T Delaware Intellectual Property, Inc. | Extending functionality of workflow applications using instant messaging (IM) |
US7484176B2 (en) * | 2003-03-03 | 2009-01-27 | Aol Llc, A Delaware Limited Liability Company | Reactive avatars |
US20050064939A1 (en) * | 2003-09-19 | 2005-03-24 | Mcsheffrey Brendan T. | Electronic mail gaming system |
US7870199B2 (en) | 2003-10-06 | 2011-01-11 | Aol Inc. | System and method for seamlessly bringing external services into instant messaging session |
US7814425B1 (en) * | 2005-12-30 | 2010-10-12 | Aol Inc. | Thumbnail image previews |
US7747785B2 (en) * | 2006-04-14 | 2010-06-29 | Microsoft Corporation | Instant messaging plug-ins |
US20080091782A1 (en) * | 2006-10-13 | 2008-04-17 | Gabriel Jakobson | Method and system for delegating and managing tasks over instant messenger |
CN101075990B (zh) | 2007-06-13 | 2012-10-03 | 腾讯科技(深圳)有限公司 | 即时通讯软件的发布方法、即时通讯服务器 |
US8402096B2 (en) | 2008-06-24 | 2013-03-19 | Microsoft Corporation | Automatic conversation techniques |
WO2011085248A1 (en) | 2010-01-07 | 2011-07-14 | Swakker, Llc | Methods and apparatus for modifying a multimedia object within an instant messaging session at a mobile communication device |
US8806190B1 (en) * | 2010-04-19 | 2014-08-12 | Amaani Munshi | Method of transmission of encrypted documents from an email application |
US8786664B2 (en) | 2010-04-28 | 2014-07-22 | Qualcomm Incorporated | System and method for providing integrated video communication applications on a mobile computing device |
US20120210253A1 (en) | 2011-01-12 | 2012-08-16 | Michael Luna | Unified access and management of events across multiple applications and associated contacts thereof |
CN102638444A (zh) | 2011-06-10 | 2012-08-15 | 吴东辉 | 应用软件的网络终端式构造方法和系统 |
EP2582120A1 (en) | 2011-10-14 | 2013-04-17 | Research In Motion Limited | User interface methods and apparatus for use in communicating text and photo messages |
CN102393857B (zh) * | 2011-11-01 | 2014-04-09 | 中兴通讯股份有限公司 | 一种用网页进行本地调用的方法和系统 |
CN102541569A (zh) | 2012-01-31 | 2012-07-04 | 上海量明科技发展有限公司 | 用以实现发送文档对应程序的方法、系统和客户端 |
CN103546358B (zh) | 2012-07-09 | 2016-05-04 | 腾讯科技(深圳)有限公司 | 面向第三方应用的即时通讯方法及系统 |
US9344464B2 (en) * | 2012-11-30 | 2016-05-17 | Lenovo (Singapore) Pte. Ltd. | Provisioning of player for content |
US8973142B2 (en) * | 2013-07-02 | 2015-03-03 | Imperva, Inc. | Compromised insider honey pots using reverse honey tokens |
-
2014
- 2014-09-10 US US14/482,801 patent/US10447621B2/en active Active
-
2015
- 2015-09-02 WO PCT/US2015/048006 patent/WO2016036777A1/en active Application Filing
- 2015-09-02 EP EP15764020.2A patent/EP3189633B1/en active Active
- 2015-09-02 CN CN202010476866.5A patent/CN111683000B/zh active Active
- 2015-09-02 CN CN201580047590.6A patent/CN106797338B/zh active Active
- 2015-09-02 KR KR1020177005895A patent/KR102382775B1/ko active IP Right Grant
-
2019
- 2019-10-15 US US16/653,261 patent/US11012385B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10447621B2 (en) | 2019-10-15 |
CN106797338A (zh) | 2017-05-31 |
CN106797338B (zh) | 2020-06-05 |
EP3189633B1 (en) | 2021-03-10 |
WO2016036777A1 (en) | 2016-03-10 |
CN111683000B (zh) | 2022-11-11 |
US20160072737A1 (en) | 2016-03-10 |
US11012385B2 (en) | 2021-05-18 |
US20200059442A1 (en) | 2020-02-20 |
KR20170051434A (ko) | 2017-05-11 |
EP3189633A1 (en) | 2017-07-12 |
CN111683000A (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102382775B1 (ko) | 기존 메시징 서비스의 메시지에 대한 앱에 의해 강화된 확장성 제공 기법 | |
KR102509245B1 (ko) | 써드 파티 애플리케이션으로의 디지털 어시스턴트 확장성 | |
US11169654B2 (en) | Task completion across devices using a shared work space | |
US10652172B2 (en) | Smart automatic composition of short messaging responses | |
US9547468B2 (en) | Client-side personal voice web navigation | |
CN107209781B (zh) | 使用自然语言的上下文搜索 | |
KR102350329B1 (ko) | 전화 통화 동안의 실시간 공유 기법 | |
KR20170045257A (ko) | 메시지 대화 이력의 신속 내비게이션 | |
US20160150009A1 (en) | Actionable souvenir from real-time sharing | |
US10592534B2 (en) | Automated aggregation of social contact groups |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |