KR20170130605A - 디바이스들 간의 애플리케이션 상태 전달 - Google Patents

디바이스들 간의 애플리케이션 상태 전달 Download PDF

Info

Publication number
KR20170130605A
KR20170130605A KR1020177031464A KR20177031464A KR20170130605A KR 20170130605 A KR20170130605 A KR 20170130605A KR 1020177031464 A KR1020177031464 A KR 1020177031464A KR 20177031464 A KR20177031464 A KR 20177031464A KR 20170130605 A KR20170130605 A KR 20170130605A
Authority
KR
South Korea
Prior art keywords
computing device
application
list
remote
server
Prior art date
Application number
KR1020177031464A
Other languages
English (en)
Other versions
KR101998313B1 (ko
Inventor
벤자민 골드스미스
제니퍼 쉬엔-밍 첸
알렉산더 프리드리히 쿠숴
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20170130605A publication Critical patent/KR20170130605A/ko
Application granted granted Critical
Publication of KR101998313B1 publication Critical patent/KR101998313B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1083In-session procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1073Registration or de-registration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1083In-session procedures
    • H04L65/1094Inter-user-equipment sessions transfer or sharing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Computer And Data Communications (AREA)

Abstract

디바이스들 간에 애플리케이션 상태를 전달하기 위한 시스템 및 방법이 개시된다. 제 1 디바이스 상에서 동작하는 애플리케이션들에 대한 상태 오브젝트들이 서버에 저장된다. 서버는, 제 2 디바이스로부터, 제 1 컴퓨팅 디바이스와 관련된 디바이스 상태 정보에 대한 요청을 수신한다. 이러한 요청에 응답하여, 서버는, 디바이스 상태 정보를 제 2 디바이스에게 제공하고, 여기서 디바이스 상태 정보는 제 1 디바이스 상에서 동작하는 애플리케이션들의 애플리케이션 목록을 포함한다. 애플리케이션 목록 내의 애플리케이션들 중 임의의 선택된 애플리케이션을 수신함에 응답하여, 서버는, 그 선택된 애플리케이션에 대응하는 상태 오브젝트를 제 2 디바이스에게 제공하고, 제 2 디바이스는 이러한 상태 오브젝트에 의해 제공되는 상태를 사용하여 애플리케이션의 로컬 인스턴스를 오픈시킨다.

Description

디바이스들 간의 애플리케이션 상태 전달
본 발명의 주된 기술(subject technology)은 일반적으로, 상이한 디바이스(device)들 간에 애플리케이션 상태(application state)를 전달하는 것에 관한 것이다.
사용자들은 종종 사용자의 계정(account)과 관련된 복수의 디바이스들에 걸쳐 복수의 애플리케이션들과 상호작용한다. 예를 들어, 사용자는 사용자의 모바일 디바이스(mobile device) 상에서 임의의 작업(task)(예를 들어, 이메일(email)을 작성하는 것)를 시작할 수 있고, 다른 활동으로 전환할 수 있고, 그 다음에 다른 디바이스(예를 들어, 랩탑(laptop)) 상에서 본래의 작업을 재개(resume)하려고 시도할 수 있다. 다른 디바이스 상에서 작업을 재개하는 것은 해당 작업을 재개하기 위한 프로그램을 로딩(loading) 및/또는 실행할 추가적인 시간을 수반할 수 있고, 그리고/또는 해당 작업을 재개하기 위해 요구되는 정보를 로딩하는 것을 수반할 수 있다. 일부 경우들에서는, 이러한 작업을 재개하기 위한 대응하는 애플리케이션이 이용가능하지 않을 수 있다.
본 발명의 주된 기술은 디바이스들 간에 애플리케이션 상태를 전달하기 위한 시스템, 그리고 컴퓨터로 구현되는 방법을 제공한다. 하나 이상의 구현예들에서, 컴퓨터로 구현되는 방법은, 제 1 컴퓨팅 디바이스(computing device)로부터, 제 1 컴퓨팅 디바이스 상에서 동작하는 애플리케이션들에 대응하는 하나 이상의 상태 오브젝트(state object)들을 수신하는 것; 제 1 컴퓨팅 디바이스로부터 떨어져 있는 제 2 컴퓨팅 디바이스로부터, 제 1 컴퓨팅 디바이스와 관련된 디바이스 상태 정보(device state information)에 대한 요청을 수신하는 것; 요청에 응답하여, 디바이스 상태 정보를 제 2 컴퓨팅 디바이스에게 제공하는 것(여기서, 디바이스 상태 정보는 제 1 컴퓨팅 디바이스 상에서 동작하는 애플리케이션들의 애플리케이션 목록(application enumeration)을 포함함); 제 2 컴퓨팅 디바이스로부터, 그 제공된 목록의 선택된 애플리케이션에 대응하는 애플리케이션 선택을 수신하는 것; 그리고 애플리케이션 선택을 수신함에 응답하여, 그 수신된 하나 이상의 상태 오브젝트들로부터의 선택된 애플리케이션에 대응하는 상태 오브젝트를 제 2 컴퓨팅 디바이스에게 제공하는 것을 포함한다. 다른 실시형태들은 이러한 컴퓨터로 구현되는 방법을 구현하기 위한 대응하는 시스템들, 장치들, 및 컴퓨터 프로그램 제품들을 포함한다.
하나 이상의 구현예들에서, 컴퓨터로 구현되는 방법은, 서버(server)로부터, 사용자 계정과 관련된 하나 이상의 원격 컴퓨팅 디바이스(remote computing device)들 상에서 동작하는 애플리케이션들의 애플리케이션 목록을 수신하는 것; 사용자 계정과 관련된 글로벌 애플리케이션 인터페이스(global application interface)에서의 디스플레이를 위해 애플리케이션 목록을 제공하는 것; 글로벌 애플리케이션 인터페이스에서, 그 제공된 애플리케이션 목록의 선택된 애플리케이션에 대응하는 애플리케이션 선택을 수신하는 것; 수신된 애플리케이션 선택에 근거하여, 서버로부터의 선택된 애플리케이션에 대응하는 상태 오브젝트를 요청하는 것; 그리고 서버로부터 요청된 상태 오브젝트를 수신하는 것을 포함한다. 다른 실시형태들은 이러한 컴퓨터로 구현되는 방법을 구현하기 위한 대응하는 시스템들, 장치들, 및 컴퓨터 프로그램 제품들을 포함한다.
하나 이상의 구현예들에서, 하나 이상의 프로세서들과 그리고 메모리 매체들을 포함하는 시스템이 제공되고, 메모리 매체들에는 명령들이 저장된다. 명령들은 실행될 때 하나 이상의 프로세서들로 하여금, 제 1 컴퓨팅 디바이스에 대해, 제 1 컴퓨팅 디바이스 상에서 동작하는 애플리케이션들에 대응하는 하나 이상의 상태 오브젝트들을 저장하는 것; 제 1 컴퓨팅 디바이스로부터 떨어져 있는 제 2 컴퓨팅 디바이스로부터, 제 1 컴퓨팅 디바이스 상에서 동작하는 애플리케이션들의 애플리케이션 목록에 대한 요청을 수신하는 것; 요청에 응답하여, 애플리케이션 목록을 제공하는 것; 제 2 컴퓨팅 디바이스로부터, 그 제공된 목록의 선택된 애플리케이션에 대응하는 애플리케이션 선택을 수신하는 것; 그리고 애플리케이션 선택을 수신함에 응답하여, 그 저장된 하나 이상의 상태 오브젝트들로부터의 선택된 애플리케이션에 대응하는 상태 오브젝트를 제 2 컴퓨팅 디바이스에게 제공하는 것을 수행하도록 한다. 다른 실시형태들은 앞서의 시스템을 구현하기 위한 대응하는 장치들, 방법들 및 컴퓨터 프로그램 제품들을 포함한다.
본 발명의 주된 기술의 다른 구성들은 다음의 상세한 설명으로부터 본 발명의 기술분야에서 숙련된 자들에게 용이하게 명백하게 될 것임을 이해해야 하고, 아래의 상세한 설명에서 본 발명의 주된 기술의 다양한 구성들은 예시적으로 제시 및 설명되는 것이다. 실현될 것인 바와 같이, 본 발명의 주된 기술은 다른 구성들 및 상이한 구성들을 가능하게 하고, 그리고 이것의 수 개의 세부사항들은 다양한 다른 측면들에서 수정을 가능하게 하는데, 이들은 모두 본 발명의 주된 기술의 범위로부터 벗어남이 없이 이루어질 수 있다. 이에 따라, 도면들 및 상세한 설명은 본질적으로 예시적인 것으로서 고려돼야 하며 한정적 의미로서 고려돼서는 안 된다.
첨부되는 도면들을 참조하여 상세한 설명이 제시될 것이다.
도 1은 디바이스들 간에 애플리케이션 상태를 전달하기 위한 예시적인 시스템을 나타낸 도면이다.
도 2는 디바이스들 간에 애플리케이션 상태를 전달하기 위한 예시적인 컴포넌트(component)들 및 데이터 흐름(data flow)을 도시한다.
도 3은 디바이스들 간에 애플리케이션 상태를 전달하기 위한 그 전달에서 사용하기 위한 예시적인 사용자 인터페이스를 도시한다.
도 4는 디바이스들 간에 애플리케이션 상태를 전달하기 위한 예시적인 프로세스의 흐름도를 도시한다.
도 5는 디바이스들 간에 애플리케이션 상태를 전달하는 것과 관련하여 사용하기 위한 예시적인 전자 시스템을 도시한 도면이다.
아래에서 제시되는 상세한 설명은 본 발명의 주된 기술의 다양한 구성들의 설명으로서 의도된 것이며, 본 발명의 주된 기술이 실시될 수 있는 구성들만을 오로지 나타내도록 의도된 것이 아니다. 첨부되는 도면들은 본 명세서에 통합되고 상세한 설명의 일부를 구성한다. 상세한 설명은 본 발명의 주된 기술의 완벽한 이해를 제공할 목적으로 특정 세부사항들을 포함한다. 하지만, 본 발명의 주된 기술이 본 명세서에서 제시되는 특정 세부사항들로만 한정되지 않는다는 것 그리고 이러한 특정 세부사항들이 없어도 실시될 수 있다는 것이 본 발명의 기술분야에서 숙련된 자들에게는 명확하고 명백하게 될 것이다. 일부 사례들에서, 잘-알려진 구조들 및 컴포넌트들은 본 발명의 주된 기술의 개념들을 모호하게 하는 것을 피하기 위해 블록 다이어그램(block diagram)으로 보여진다.
본 발명의 주된 기술은 디바이스들 간에 애플리케이션 상태를 전달하기 위한 메커니즘을 제공한다. 사용자 계정과 관련된 컴퓨팅 디바이스들 상에서 동작하는 애플리케이션들에 대응하는 상태 오브젝트들을 수신 및 저장하는 서버가 제공된다. 사용자 계정과 관련된 클라이언트 디바이스(예를 들어, 컴퓨터 혹은 스마트폰)는 사용자 계정과 관련된 다른 디바이스들 상에서 동작하는 애플리케이션들을 뷰잉(viewing)하기 위한 요청을 수행할 수 있다. 이러한 요청을 수신하는 경우, 서버는 다른 디바이스들과 관련된 (그 디바이스들 상에서 동작하는 애플리케이션들의 애플리케이션 목록(예를 들어, 리스트(list) 혹은 다른 표현)을 포함하는) 디바이스 상태 정보를 클라이언트 디바이스에게 제공할 수 있다. 그 다음에, 클라이언트 디바이스는 애플리케이션 목록으로부터의 사용자 선택에 근거하는 애플리케이션들 중 선택된 애플리케이션을 서버에게 알려주고, 그리고 서버는 이전에 수신된 하나 이상의 저장된 상태 오브젝트들로부터의 그 선택된 애플리케이션에 대응하는 상태 오브젝트를 제공한다.
클라이언트 측 상에서, 클라이언트 디바이스는 클라이언트 디바이스의 사용자가 인증을 받은 사용자 계정과 관련된 하나 이상의 컴퓨팅 디바이스들을 결정할 수 있다. 예를 들어, 클라이언트 디바이스는 사용자 계정과 관련된(혹은 사용자 계정에 인증된) 디바이스들에 대해 (예를 들어, 사용자 계정을 질의함으로써) 서버에게 질의할 수 있다. 그 다음에, 결정된 컴퓨팅 디바이스들의 디바이스 목록이, 클라이언트 디바이스 상에서 동작하는 글로벌 애플리케이션 인터페이스에게 제공될 수 있다. 하나 이상의 구현예들에서, 글로벌 애플리케이션 인터페이스들은 사용자 계정에 링크(link)되어 있는 모든 디바이스들에 걸쳐 (예를 들어, 상태 오브젝트들로서) 상태 정보의 "글로벌(global)" 관리 및 전달을 제공한다. 글로벌 애플리케이션 인터페이스로부터 하나 이상의 컴퓨팅 디바이스들에 대응하는 사용자 선택을 수신하는 경우, 클라이언트 디바이스는 서버로부터의 선택된 디바이스들에 대한 디바이스 상태 정보를 요청할 수 있다. 그 다음에, 서버는 선택된 컴퓨팅 디바이스들 상에서 동작하는 애플리케이션들의 애플리케이션 목록을 포함하는 디바이스 상태 정보를 클라이언트 디바이스로 전송하고, 클라이언트 디바이스는 애플리케이션 목록을 글로벌 애플리케이션 인터페이스에게 제공한다.
그 다음에, 사용자는 그 제공된 애플리케이션 목록으로부터 애플리케이션을 선택할 수 있다. 선택된 애플리케이션을 수신하는 경우, 클라이언트 디바이스는 서버로부터의 그 선택된 애플리케이션에 대응하는 상태 오브젝트를 요청하고 수신한다. 그 다음에, 클라이언트 디바이스는 선택된 컴퓨팅 디바이스들 중 하나의 선택된 컴퓨팅 디바이스 상에서 현재 동작하고 있는 선택된 애플리케이션의 원격 인스턴스(remote instance)와 동일한 상태 및 설정(setting)들을 갖는 선택된 애플리케이션의 로컬 인스턴스(local instance)를 오픈(open)시키기 위해 상태 오브젝트를 사용할 수 있다.
글로벌 애플리케이션 인터페이스는 예를 들어, 사용자 계정에 연결된 디바이스들 상에서 현재 동작하는 모든 애플리케이션들을 뷰잉하기 위해, 혹은 애플리케이션들에 대한 상태 정보가 서버에 저장되어 있는 그러한 모든 애플리케이션들을 뷰잉하기 위해, 사용될 수 있다. 애플리케이션들은 디바이스에 의해 정렬되는 디스플레이되는 애플리케이션들의 그룹으로부터 디스플레이될 수 있고, 또는 일부 구현예들에서는 디바이스들의 그룹이 디스플레이될 수 있고, 그리고 디스플레이되는 디바이스들 중 선택된 디바이스에 대한 애플리케이션들이 사용자에게 제시될 수 있다. 일부 구현예들에서, 글로벌 애플리케이션 인터페이스는 사용자가 임의의 미리결정된 제스처(gesture)(예를 들어, 데스크탑(desktop) 상의 핀치(pinch) 혹은 핀치-확장(pinch-expand) 제스처)를 수행하는 경우 디스플레이될 수 있다.
시스템의 동작, 그리고 글로벌 애플리케이션 인터페이스는 양-방향성(bi-directional)일 수 있다. 예를 들어, 사용자는 또 하나의 다른 디바이스 상에서 현재 실행되는 애플리케이션의 로컬 인스턴스를 인스턴스화(instantiate)하기 위해 글로벌 애플리케이션 인터페이스를 사용할 수 있다. 대안적으로, 사용자는 사용자의 디바이스 상에서 현재 동작하는 애플리케이션의 표현을 글로벌 애플리케이션 인터페이스 내에서 디스플레이되는 또 하나의 다른 디바이스의 표현으로 드래그(drag)하여 상태 오브젝트를 그 다른 디바이스로 전달할 수 있고 그 다른 디바이스 상에서 애플리케이션의 인스턴스를 오픈시킬 수 있다.
도 1은 본 발명의 주된 기술의 하나 이상의 실시형태들에 따른, 디바이스들 간에 애플리케이션 상태를 전달하기 위한 예시적인 시스템(100)을 나타낸 도면이다. 시스템(100)은 하나 이상의 컴퓨팅 디바이스들(101, 102), 하나 이상의 중앙집중 서버(centralized server)들(103), 그리고 원격 저장소(remote storage)(104)(예를 들어, 데이터베이스(database))를 포함할 수 있다. 컴퓨팅 디바이스들(101, 102)은 각각, 스마트폰(smartphone), GPS 네비게이션 디바이스(GPS navigation device), 혹은 개인용 컴퓨터(personal computer), 태블릿 컴퓨터(tablet computer), PDA, 텔레비젼(television), 또는 (하나 이상의 위치-인식 컴퓨팅 디바이스(location-aware computing device)들이 구현되어 있는 혹은 부착되어 있는) 다른 디스플레이 디바이스, 등 중 하나일 수 있다.
다양한 구현예들에 따르면, 컴퓨팅 디바이스들(101, 102)은 사용자 계정(105)에 결부(tie)되어 있을 수 있다. 따라서, 사용자(106)는 사용자 계정(105)에 대한 인증(authenticating)을 행함으로써 각각의 디바이스(101, 102)의 특정 특징(feature)들을 사용하기 위한 권한을 부여받는다. 사용자 계정(105)은 예를 들어, 클라우드-기반(cloud-based) 혹은 웹-기반(web-based) 사용자 계정일 수 있거나, 혹은 엔터프라이즈 계정(enterprise account)(예를 들어, LDAP 계정)일 수 있고, 그리고 복수의 디바이스들을 위한 범용 계정(universal account)으로서 기능할 수 있다. 이와 관련하여, 사용자 계정과 관련하여 저장되는 정보는 제 3 컴퓨팅 디바이스 상에, 예를 들어, 서버(103) 상에 (예를 들어, "데이터 클라우드(data cloud)" 내에) 중앙집중되어 위치할 수 있다. 서버(103)는 네트워크(107)(예를 들어, LAN, WAN, WiFi, 셀룰러 네트워크(cellular network), 혹은 인터넷)를 통해 예를 들어, 제 1 컴퓨팅 디바이스(101) 및 제 2 컴퓨팅 디바이스(102)에 동작가능하게 연결될 수 있다. 원격 저장소(104)는 사용자 계정(105)과 관련하여 정보(예를 들어, 상태 오브젝트들)를 저장할 수 있다. 서버(103) 및 원격 저장소(104)의 기능은 동일한 물리적 서버 상에서 구현될 수 있고, 또는 복수의 서버들에 간에 분산될 수 있다. 더욱이, 원격 저장소(104)는 관계형 데이터베이스(relational database)들, 객체-지향 데이터베이스(object-oriented database)들, 파일 구조(file structure)들, 텍스트-기반 기록(text-based record)들, 혹은 다른 형태들의 데이터 저장소들과 같은 임의의 형태를 가질 수 있다.
컴퓨팅 디바이스들(101, 102)은 디바이스들 상에서 동작하는 애플리케이션들에 대한 상태 오브젝트들 내에 정보 설정들 및 상태 정보를 (예를 들어, 로컬로(locally)) 저장할 수 있다. 상태 오브젝트는 각각의 애플리케이션과 관련된 메모리-상주 데이터 오브젝트(memory-resident data object)일 수 있다. 각각의 상태 오브젝트는 쿠키(cookie)처럼 메모리 내에서 지속(persist)될 수 있고 그리고/또는 애플리케이션이 클로즈(close)된 이후 로컬 비-휘발성 메모리(local non-volatile memory) 내에 지속될 수 있다. 상태 오브젝트 혹은 그 안의 정보는 원격 저장소(104)에서의 저장을 위해 자동적으로 서버(103)로 전송될 수 있다. 또 하나의 다른 실시형태에서, 상태 오브젝트 혹은 그 안의 정보는, 애플리케이션 혹은 애플리케이션이 동작하고 있는 디바이스가 사용자 계정(105)에 등록된 경우 그리고/또는 인증된 경우에만 전송될 수 있고, 또는 사용자(106)에 의해 수동으로 권한을 부여받은 경우 혹은 개시된 경우에만 전송될 수 있다.
각각의 컴퓨팅 디바이스(101, 102)는 서버(103)에 연결되도록 구성될 수 있고, 그리고 로컬 상태 정보(local state information)를 원격 저장소(103) 내에 저장된 상태 오브젝트들과 동기화시키도록 구성될 수 있다. 일 실시형태에서, 제 1 컴퓨팅 디바이스(101)는 하나 이상의 상태 오브젝트들을 서버(103)로 전송할 수 있고, 서버(103)는 상태 오브젝트들을 수신하여 원격 저장소(103) 내에 저장할 수 있으며, 이에 따라 상태 오브젝트들은 디바이스(101)가 오프라인(offline) 상태인 경우에도 액세스될 수 있게 되고 제 2 컴퓨팅 디바이스(102)와 동기화될 수 있게 된다. 서버(103)는 또한, 각각의 디바이스, 애플리케이션, 혹은 상태 오브젝트가 동기화된 마지막 시간을 포함하는 다른 정보를 저장할 수 있다.
상태 오브젝트들의 동기화, 저장, 및/또는 전달은 컴퓨팅 디바이스들(101, 102)의 상이한 타입들 간에 일어날 수 있다. 예를 들어, 다양한 애플리케이션들이 스마트폰들 상에 인스톨(install)될 수 있고, 뿐만 아니라 데스크탑 혹은 랩탑 컴퓨터 상에 인스톨될 수 있다. 이러한 애플리케이션들 그리고/또는 이러한 애플리케이션들이 동작하고 있는 디바이스가 사용자 계정(105)과 관련되어 있는 동안, 애플리케이션들에 대한 상태 오브젝트들은 업로드(upload)될 수 있고 그리고 디바이스들 중 임의의 디바이스에 의한 액세스를 위해 원격 저장소(103) 상에 저장될 수 있다.
컴퓨팅 디바이스들(101, 102), 서버(103), 및 저장소(104) 간의 다양한 연결들이 유선 연결 혹은 무선 연결을 통해 이루어질 수 있다. 컴퓨팅 디바이스들(101, 102)은 임의의 정의된 영역 내에서 동일한 곳에 위치할 수 있다. 예를 들어, 디바이스들은 동일한 LAN 혹은 WiFi 네트워크에 연결될 수 있다. 컴퓨팅 디바이스들(101, 102)은 상이한 위치들에 있을 수 있는데, 예컨대, 사용자의 가정(home) 및 고용의 장소에 있을 수 있다.
다양한 실시형태들에 따르면, 컴퓨팅 디바이스들(101, 102)은, 서버(103)와의 상호작용을 위해 그리고 상태 오브젝트들의 관리 혹은 전달을 위해 하나 이상의 사용자 인터페이스들(108a, 108b)을 로딩 및 실행하도록 구성될 수 있다. 사용자 인터페이스(108)는 데스크탑 혹은 모바일 오퍼레이팅 시스템(mobile operating system)에 의해 제공되는 데스크탑 인터페이스일 수 있고, 또는 디바이스 상에서 실행되는 그리고 오퍼레이팅 시스템에 의해 관리되는 독립형 애플리케이션(stand-alone application)(예를 들어, 웹-브라우저(web-browser) 혹은 웹-활성화 애플리케이션(web-enabled application))에 의해 제공되는 사용자 인터페이스일 수 있다. 인터페이스(108)는 예를 들어, 미리결정된 제스처를 사용하여 오픈될 수 있다. 예를 들어, 사용자(106)는 인터페이스(108b)를 오픈시키기 위해 컴퓨팅 디바이스의 터치 스크린 상에서 핀치-확장 제스처(예를 들어, 리버스 핀치(reverse pinch))를 수행할 수 있다. 더 논의되는 바와 같이, 각각의 디바이스의 사용자 인터페이스(108)는, 사용자 계정(105)에 링크(link)되어 있는 디바이스들 상에서 동작하는 애플리케이션들을 글로벌 레벨(global level)에서 검토(review)하기 위해 사용될 수 있고, 그리고 (예를 들어, 글로벌 애플리케이션 인터페이스로서 동작하는) 사용자 인터페이스(108)와 관련된 디바이스 상에서 이러한 애플리케이션들 중의 선택된 애플리케이션들을 로컬 오픈(local open)시키기 위해 사용될 수 있다.
서버(103)는 사용자 계정(105)과 관련된 디바이스들에 대한 상태 오브젝트들을 수신 및 저장할 수 있고, 그리고 디바이스들 중 하나로부터 상태 정보에 대한 요청을 수신하는 경우, 서버(103)는 어떤 컴퓨팅 디바이스들이 현재 사용자 계정(105)과 관련되어 있는지(예를 들어, 사용자 계정(105)에 등록되어 있는지) 그리고/또는 현재 사용자 계정(105)에 인증되어 있는지를 결정할 수 있다. 그 다음에, 이러한 결정에 근거하여 서버는 계정에-링크된 디바이스들에 걸쳐 동작하는 모든 애플리케이션들의 목록을 디바이스들 중 하나 이상의 디바이스들에게 제공할 수 있다. 예를 들어, 컴퓨팅 디바이스(102)는 사용자 계정(105)에 링크되어 있는 디바이스들의 목록을 요청할 수 있다. 이 경우, 서버(103)는 현재 해당 계정에 링크되어 있는 디바이스들을 결정할 수 있고, 그리고 디바이스들의 목록을 사용자(106)에게 디스플레이하기 위해 사용자 인터페이스(108b)에 제공할 수 있다.
그 다음에, 사용자(106)는 디바이스(102) 상에서 로컬로 오픈시킬 디바이스들 중 하나의 디바이스를 사용자 인터페이스(108b)에서 선택할 수 있다. 이와 관련하여, 서버(103)는 디바이스 목록의 선택된 컴퓨팅 디바이스에 대응하는 디바이스 선택을 인터페이스(108b)로부터 수신할 수 있다. 디바이스 선택을 수신함에 응답하여, 서버(103)는 선택된 컴퓨팅 디바이스 상에서 동작하는 애플리케이션들의 애플리케이션 목록을 결정할 수 있고, 그리고 애플리케이션 목록을 인터페이스(108b)에 제공할 수 있다. 그 다음에, 사용자(106)는 애플리케이션 목록으로부터 애플리케이션을 선택할 수 있고, 그리고 컴퓨팅 디바이스(102)는 선택된 애플리케이션을 서버(103)에게 제공한다. 그 다음에, 서버(103)는 선택된 애플리케이션에 대응하는 상태 오브젝트를 예를 들어, 원격 저장소(104)로부터 검색(retrieve)하고, 그리고 상태 오브젝트를 컴퓨팅 디바이스(102)에게 제공한다. 컴퓨팅 디바이스(102)는 서버(103)로부터 상태 오브젝트를 수신하고, 그 다음에, 수신된 상태 오브젝트에 근거하여 그 선택된 애플리케이션의 로컬 인스턴스를 오픈시킨다. 로컬 인스턴스는 선택된 컴퓨팅 디바이스 상에서 현재 동작하고 있는 선택된 애플리케이션의 원격 인스턴스와 동일한 상태 및 설정들을 갖도록 오픈된다.
도 2는 본 발명의 주된 기술의 하나 이상의 실시형태들에 따른, 디바이스들 간에 애플리케이션 상태를 전달하기 위한 예시적인 컴포넌트들 및 데이터 흐름을 도시한다. 시스템(200)은 서로 다른 컴퓨팅 디바이스들(101, 102)과 원격 서버(103) 간의 통신을 용이하게 하기 위한 하나 이상의 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)들(202)을 포함할 수 있다. 일 실시형태에서, API(202)는 서버(103) 상에 위치할 수 있고, 그리고 사용자 계정(105)과 관련하여 동작하는 컴퓨팅 디바이스들에게 제공될 수 있다. API(202)를 사용하여, 컴퓨팅 디바이스(101)는 사용자 계정(105)에 링크되어 있는 컴퓨팅 디바이스(102)와 같은 다른 디바이스들에 의한 액세스를 위해 (설정들 및 상태를 포함하는) 애플리케이션 상태 정보를 서버(103)에 대해 지속시킬 수 있다.
하나 이상의 구현예들에서, 애플리케이션들은 예를 들어, 사용자가 사용자 계정(105)에 대한 권한을 부여받는 경우 애플리케이션들을 서버(103)에 등록함으로써 상태 오브젝트들(206)을 저장할 권한을 부여받는다. 이러한 방식으로, 각각의 애플리케이션은 "계정에-링크"되게 되고, 그리고 애플리케이션이 인스톨되는 그리고 동작하고 있는 그 대응하는 디바이스(들)와 사용자 계정(105)에서 관련된다.
하나 이상의 구현예들에서, 컴퓨팅 디바이스(101)는 디바이스(101) 상에서 동작하는 애플리케이션에 대한 애플리케이션 상태 및 설정들(그리고/또는 구성 정보)과 같은 애플리케이션-특정 상태 정보를 저장할 수 있고, 그 다음에, 다른 디바이스들 상에서의 애플리케이션의 다른 인스턴스들의 발생을 위해 서버(103) 상으로 이러한 정보를 미러링(mirroring)할 수 있다. 도 2에서 도시된 바와 같이, 정보가 저장되거나, 혹은 애플리케이션의 제 1 인스턴스(204)에 의해 업데이트되는 경우, 상태 오브젝트(206)가 자동적으로 미러링될 수 있고, 서버(103)에서 저장될 수 있거나 업데이트될 수 있다. 추가적으로 혹은 대안적으로, 상태 오브젝트(206)는 서버(103)로부터의 요청시, 예를 들어, 서버(103)가 계정에-링크되어 있는 디바이스로부터 유사한 요청을 수신한 경우, 서버(103)에 제공될 수 있다.
하나 이상의 구현예들에서, 서버(103) 상에서 API(202)와 함께 동시에 실행되는 정보 모니터링 서비스(information monitoring service)는 정보가 저장되는 서버(103)를 모니터링할 수 있다. 계정에-링크되어 있는 디바이스들 중 임의의 디바이스에서 애플리케이션의 업데이트가 일어나는 경우, 서버(103)는 등록된 모든 디바이스들에게 그 저정된 정보가 업데이트되었음을 통지하는 신호를 등록된 모든 디바이스드에게 브로드캐스팅(broadcasting)할 수 있다. 하나 이상의 구현예들에서, 각각의 디바이스는 이벤트 청취자(event listener)를 서버(103)에 등록할 수 있고, 서버(103)는 등록된 디바이스들에게 이들의 등록된 이벤트 청취자들을 호출(calling)함으로써 통지할 수 있다. 하나 이상의 구현예들에서, 각각의 애플리케이션은 저장소(104)에 저장된 상태 오브젝트들을 업데이트하기 위해 API(202)를 주기적으로 호출할 수 있다.
이전에 설명된 바와 같이, API(202)에 대한 액세스는 사용자 계정(105)에 대한 인증에 근거할 수 있거나 혹은 사용자 계정(105)과의 관련성에 근거할 수 있다. 이와 관련하여, 저장소(103)에서 저장된 상태 오브젝트들(206)의 전달은 사용자 계정(105)과 검증가능하게 관련될 수 있는 디바이스들(101, 102)에 대해서만 이용가능하게 될 수 있다. 예를 들어, 디바이스(101)에서의 사용자 계정(105)에 대한 사용자 인증시, 디바이스(101)는 상태 오브젝트(206)를 저장소(104) 내의 저장을 위해 서버(103)에 제공할 수 있다. 디바이스(102)에서의 사용자 계정(105)에 대한 사용자 인증시, 디바이스(102)는 사용자 계정(105)에 링크되어 있는 모든 디바이스들로부터의 상태 오브젝트들(여기에는 디바이스(101)에 의해 제공되는 상태 오브젝트(206)가 포함됨)을 요청 및 수신할 수 있다. 유사하게, 정보가 저장소(104) 내에 저장되었거나 업데이트되었다면, 서버(103)는 API(202)를 통해 상태 오브젝트(206)를 예를 들어, 제 2 컴퓨팅 디바이스(102) 상에서 동작하고 있는 애플리케이션의 제 2 인스턴스(208)에 제공할 수 있다.
제시된 예에서, 제 1 컴퓨팅 디바이스(101) 상에서 동작하는 애플리케이션의 제 1 인스턴스(204)에 대응하는 상태 오브젝트(206)가 디바이스(101)로부터 서버(103)에 의해 수신된다. 디바이스(101)는 예를 들어, 상태 오브젝트(206)를 업데이트하기 위해 API(202)에 액세스할 수 있다. 상태 오브젝트(206)의 업로드는 상태 오브젝트에 대응하는 애플리케이션의 시동(start-up)시에 일어날 수 있거나, 혹은 디바이스(101)의 시동시에 일어날 수 있는데, 예를 들어, 사용자 계정(105)에 대한 애플리케이션 혹은 디바이스(101)의 인증시에 일어날 수 있다. 그 다음에, 상태 오브젝트(206)는 애플리케이션 혹은 디바이스(101)의 동작 동안 서버(103)에 대해 주기적으로 업데이트될 수 있다.
서버(103)는 컴퓨팅 디바이스(101)와 관련된 디바이스 상태 정보에 대해 컴퓨팅 디바이스(102)로부터의 요청을 수신한다. 요청은 일반적으로 사용자 계정(105)에 링크되어 있는 모든 디바이스들에 대한 디바이스 상태 정보에 관한 것일 수 있거나, 또는 컴퓨팅 디바이스(101)에 대응하는 디바이스 상태 정보에 관한 것일 수 있다. 요청에 응답하여, 서버는 요청된 정보를 컴퓨팅 디바이스(102)에게 제공하는데, 요청된 정보는 예를 들어, 컴퓨팅 디바이스(101) 상에서 동작하는 애플리케이션들의 목록(210)을 포함한다. 그 다음에, 목록(210)은 디바이스(102)에 의해 제공되는 인터페이스(108b) 상에서 디스플레이될 수 있다.
그 다음에, 서버(103)는 제공된 목록(210)의 선택된 애플리케이션에 대응하는 애플리케이션 선택을 디바이스(102)로부터 수신할 수 있다. 애플리케이션 선택을 수신함에 응답하여, 서버(103)는 저장소(104)에 액세스할 수 있고, (디바이스(101)에 의해 제공되는) 상태 오브젝트(206)를 검색할 수 있고, 그리고 상태 오브젝트(206)를 디바이스(102)에게 제공할 수 있다. 그 다음에, 수신된 상태 오브젝트(206)에 근거하여 디바이스(102)는 선택된 애플리케이션의 제 2 로컬 인스턴스(208)를 오픈시킬 수 있다. 이와 관련하여, 제 2 인스턴스(208)는 하나 이상의 원격 컴퓨팅 디바이스들 중 각각의 원격 컴퓨팅 디바이스 상에서 현재 실행되고 있을 수 있는 제 1 인스턴스(204)와 동일한 애플리케이션의 설정들 및 상태를 포함할 수 있다.
하나 이상의 구현예들에서, 서버(103)는 임의의 디바이스로부터 해당 디바이스 상에서 동작하는 애플리케이션의 원격 인스턴스를 임의의 다른 디바이스 상에서 오픈시키도록 하는 표시를 수신할 수 있고, 이 경우 원격 인스턴스는 현재 인스턴스의 설정들 및 상태와 동일한 설정들 및 상태를 갖는 것이다. 예를 들어, 서버(103)는 디바이스(101)로부터 디바이스(101) 상의 제 1 인스턴스(204)로부터의 상태 오브젝트(206)에 근거하여 디바이스(102) 상에 제 2 인스턴스(208)를 오픈시키도록 하는 요청을 수신할 수 있다. 이와 관련하여, 디바이스(101)를 동작시키는 사용자(106)는 상태 오브젝트(206)를 디바이스(102)로 전달할 수 있고 원격 인스턴스의 발생을 개시시킬 수 있다. 요청은 사용자의 제스처에 의해 사용자 인터페이스(108a)에서 개시될 수 있다. 예를 들어, 사용자(106)는 상태 오브젝트(206)에 대응하는 애플리케이션의 표현을 디바이스(102)의 표현으로 드래그할 수 있다.
서버(103)는 컴퓨팅 디바이스(101)로부터 상태 오브젝트(206) 및 컴퓨팅 디바이스(102)의 식별부(identification)를 수신할 수 있다. 그 다음에, 상태 오브젝트(206)는 컴퓨팅 디바이스(102)로 전송될 수 있는데, 이러한 전송은 디바이스(102)의 수신된 식별부 및 디바이스(102)에 대한 미리결정된 등록 정보에 근거하여 이루어진다. 예를 들어, 서버(103)는 디바이스들의 등록에 관한 구성 옵션(configuration option)들을 제공할 수 있고, 그리고 사용자는 어떤 타입들의 애플리케이션들이 전달될 수 있는지 그리고/또는 등록되어 있는 디바이스 상에서 자동적으로 오픈될 수 있는지를 선택할 수 있다. 하나 이상의 구현예들에서, 서버(103)는 디바이스 식별부 없이 상태 오브젝트(206)를 수신할 수 있고, 그리고 이러한 상태 오브젝트(206)가 다음의 동작가능하게 연결되는 디바이스로 전달될 수 있을 때까지(예를 들어, 그 다음의 디바이스가 사용자 계정(105)에 인증될 때까지) 상태 오브젝트(206)를 보유(hold)할 수 있다. 추가적으로 혹은 대안예에서, 서버(103)는 식별되는 디바이스가 서버(103)에 동작가능하게 연결되는 다음 시간까지 상태 오브젝트(206)를 보유할 수 있다.
도 3은 본 발명의 주된 기술의 하나의 실시형태에 따른, 디바이스들 간에 애플리케이션 상태를 전달할 때 사용하기 위한 예시적인 사용자 인터페이스(108)를 도시한다. 사용자 인터페이스(108)는 클라이언트 컴퓨팅 디바이스(101, 102)의 디바이스 스크린(302) 상에 디스플레이될 수 있다. 디스플레이 스크린(302)은 예컨대, 스크린의 표면과의 접촉(contact) 및 터치-관련 제스처들을 통해 입력을 수신하기 위한 터치-감지 디스플레이 스크린일 수 있다. 디스플레이 스크린(302)은 다수의 아이콘(icon)들, 가상 버튼(virtual button)들, 그리고 하나 이상의 애플리케이션들 및/또는 애플리케이션 특징들의 실행, 관리, 및/또는 조작(manipulation)을 위한 다른 제어부들을 디스플레이할 수 있다.
사용자 인터페이스(108)는, 예를 들어, 오퍼레이팅 시스템의 (예를 들어, 가상 데스크탑(virtual desktop)으로서의) 마스터 인터페이스(master interface)(302), 또는 웹 브라우저(web browser)(308) 혹은 소셜 네트워크 애플리케이션(social network application)과 같은 애플리케이션에 대한 마스터 인터페이스(302)에 대해, 이러한 마스터 인터페이스(302)와 통합될 수 있거나 혹은 이러한 마스터 인터페이스(302)로부터 액세스될 수 있다. 이와 관련하여, 사용자 인터페이스(108)는, 활성화시, 가상 데스크탑과 적어도 부분적으로 중첩(overlapping)하여 그 위에 디스플레이될 수 있고, 여기에는 예를 들어, 하나 이상의 애플리케이션들 혹은 애플리케이션 특징들이 포함된다. 일부 실시형태들에서, 사용자 인터페이스(108)는 부유(float)할 수 있고, 그리고 사용자에 의해 위치조정(reposition)될 수 있다. 사용자 인터페이스(108)는 예를 들어, 오퍼레이팅 시스템에 의해 제공되는 혹은 관련된 애플리케이션 내에 내장(embed)되는 명령들(예를 들어, 웹페이지(webpage) 내에 내장되는 스크립팅 언어(scripting language))에 의해 발생될 수 있다.
사용자 인터페이스(108)는 예를 들어, 디스플레이 스크린(302)에 의해 디스플레이되는 가상 데스크탑 상에서 수행되는 사용자 제스처(304)에 의해 액세스될 수 있다. 예를 들어, 사용자 제스처(304)는, 포인터 디바이스(pointer device)에 의해 수행되는 드래그 액션(drag action), 예를 들어, 액션 버튼(action button)을 누르고 있는 동안 마우스로 수행되는 드래그 액션, 또는 터치-관련 제스처, 예컨대, 단일의 혹은 복수의(예를 들어, 2, 3, 4, 혹은 그 이상의) 손가락 스와이프(finger swipe), 핀치 액션, 혹은 핀치-확장 액션, 또는 사용자 인터페이스(108)를 활성화시키도록 디바이스에게 신호를 보내기 위한 다른 미리결정된 제스처일 수 있다. 사용자 제스처(304)는 x1로부터 x2까지 두 개의 지점들 사이에서 임의의 미리결정된 패턴을 갖는 연속적인 스와이프일 수 있다. 하나 이상의 구현예들에서, 사용자 인터페이스(108)는 예를 들어, 디스플레이 스크린(302)의 가상 데스크탑 상에서 디스플레이되는 사용자 인터페이스(108)에 대응하는 아이콘 혹은 다른 표현(306)을 활성화시킴으로써(예를 들어, 이러한 아이콘 혹은 다른 표현(306) 상에서 클릭(clicking) 혹은 탭핑(tapping)을 수행함으로써) 활성화될 수 있다.
사용자 인터페이스(108)는, 활성화시, 사용자 계정(105)에 링크되어 있는 디바이스들의 목록(308)을 디스플레이할 수 있다. 목록(308)은 예를 들어, 서버(103)에 의해 제공되는 디바이스 정보에 근거하여 결정될 수 있다. 예를 들어, 사용자 인터페이스(108)가 활성화되는 경우, 사용자 인터페이스(108)는 디바이스 정보에 대한 요청을 서버(108)에게 전송할 수 있고, 서버(103)는 목록(308)을 포함하는 디바이스 정보를 사용자 인터페이스(108)에 리턴(return)할 수 있다. 이와 관련하여, 목록(308)의 디바이스들은 사용자 계정(105)에 이전에 등록되었던 디바이스들에 한정될 수 있다. 목록(308)이 디스플레이되는 경우, 사용자는 목록(308)으로부터 하나 이상의 디바이스들(예를 들어, 도 3의 "Dev 2")을 선택할 수 있는데, 이것은 그 선택된 디바이스(들) 상에서 동작하는 애플리케이션들을 뷰잉하기 위한 것이다. 이러한 선택에 응답하여, 사용자 인터페이스(108)는 요청을 행할 수 있고, 그리고 서버(103)는 그 선택된 컴퓨팅 디바이스 상에서 동작하는 애플리케이션들의 애플리케이션 목록(310)을 제공할 수 있다.
디바이스(101, 102)는 애플리케이션 목록(310)을 수신하여 사용자 인터페이스(108) 상에 디스플레이한다. 애플리케이션 목록(310)은 선택된 디바이스(들)(예를 들어, "Dev 2") 상에서 동작하는 각각의 애플리케이션(예를 들어, 도 3에서의 "App 1" 내지 "App 9")에 대한 표현(예컨대, 아이콘)을 포함할 수 있다. 목록(310)의 애플리케이션들은 사용자 계정(105)에 이전에 등록되었던(예를 들어, 애플리케이션(들)을 호스팅(hosting)하는 대응하는 등록된 디바이스(들)에 대한) 애플리케이션들로 한정될 수 있다. 목록(310)이 디스플레이되는 경우, 사용자는 목록(310)으로부터 하나 이상의 애플리케이션들을 선택할 수 있는데, 이것은 해당하는 애플리케이션들에 대한 상태 정보를 서버(103)로부터 수신하기 위한 것이다. 이러한 선택에 응답하여, 사용자 인터페이스(108)는 요청을 행할 수 있고, 그리고 서버(103)는 선택된 애플리케이션에 대응하는 상태 오브젝트(206)를 디바이스에게 제공할 수 있다. 상태 오브젝트(206)가 수신되는 경우, 디바이스는 수신된 상태 오브젝트에 근거하여 그 선택된 애플리케이션의 로컬 인스턴스를 오픈시킬 수 있다. 이와 관련하여, 로컬 인스턴스는 선택된 디바이스(예를 들어, "Dev 2") 상에서 현재 동작하고 있는 선택된 애플리케이션의 원격 인스턴스와 동일한 애플리케이션의 설정들 및 상태를 포함한다.
도 3이 선택된 디바이스에 대해 목록(310)을 디스플레이하기 전에 목록(308)을 디스플레이하는 것으로 도시하고 있지만, 모든 디바이스들에 대한 애플리케이션들, 혹은 모든 디바이스들에 대한 애플리케이션들의 서브세트(subset)가 예를 들어, 디바이스를 먼저 선택함이 없이 인터페이스(108) 상에 함께 디스플레이될 수 있다. 예를 들어, 사용자 인터페이스(108)를 활성화하는 경우, 서버(103)는 사용자 계정(105)에 등록되어 있는 모든 디바이스들에 대한 모든 애플리케이션들을 제공할 수 있다. 목록(308)이 (현재 모든 애플리케이션들을 포함하는) 목록(310)과 함께 디스플레이될 수 있고, 그리고 디바이스들은 목록(310) 내에 애플리케이션들의 서브세트를 디스플레이하기 위해 선택될 수 있거나 혹은 선택해제될 수 있다.
추가적으로 혹은 대안예에서, 사용자 인터페이스(108)는 사용자 인터페이스(108)와 동일한 디바이스 상에서 동작하는 하나 이상의 애플리케이션들을 디스플레이할 수 있다. 사용자는 애플리케이션의 로컬 인스턴스의 표현을 예를 들어, 목록(308) 내에서 디스플레이되는 디바이스들 중 하나의 디바이스로 드래그할 수 있고, 이것은 로컬 인스턴스에 대한 상태 오브젝트(206)가 그 선택된 디바이스로 전송될 수 있도록 한다. 애플리케이션이 로컬 활성화 인스턴스(locally active instance)를 갖지 않는 경우, 서버(103)는 이전에 저장된 상태 오브젝트(206)를 선택된 디바이스로 전송할 수 있다.
이전에 설명된 바와 같이, 선택된 애플리케이션의 로컬 인스턴스는 서버(103)로부터 수신되는 상태 오브젝트(206)에 근거하여 오픈될 수 있고, 여기서 로컬 인스턴스는 선택된 애플리케이션의 원격 인터페이스와 동일한 애플리케이션의 설정들 및 상태를 갖는다. 하나의 예에서, 선택된 애플리케이션은 웹 브라우저일 수 있고, 이 경우 웹 브라우저의 원격 인스턴스는 예를 들어, 모바일 디바이스 상에서 동작하는 것이다. 수신된 상태 오브젝트(206)는 웹 브라우저의 원격 인스턴스의 웹 브라우징 히스토리(web browsing history)를 포함할 수 있고, 그리고/또는 웹 브라우저의 원격 인스턴스에 의해 현재 오픈된 적어도 하나의 웹 페이지를 포함할 수 있다. 그 다음에, 웹 브라우저의 로컬 인스턴스는 원격 인스턴스에서 사용자에 의해 마지막으로 뷰잉된 웹 페이지 내의 위치에서 웹 페이지를 뷰잉하도록 자동적으로 오픈될 수 있다. 추가적으로 혹은 대안예에서, 로컬 인스턴스는 원격 인스턴스의 웹 브라우징 히스토리에 따라 웹 페이지들의 네비게이션(navigation)을 가능하게 하도록 자동적으로 구성될 수 있다. 예를 들어, 웹 브라우저가 오픈되는 경우, 사용자는 웹 브라우저의 원격 인스턴스 내에서 뷰잉된 웹 페이지들의 히스토리를 통해 뒤쪽으로 네비게이션하기 위해 '뒤로(back)' 버튼을 선택할 수 있다.
도 4는 본 발명의 주된 기술의 실시형태들에 따른, 디바이스들 간에 애플리케이션 상태를 전달하기 위한 예시적인 프로세스(400)의 흐름도를 도시한다. 설명 목적으로, 예시적 프로세스(400)가 본 명세서에서 도 1, 도 2, 및 도 3의 컴포넌트들을 참조하여 설명된다. 또한 설명 목적으로, 예시적인 프로세스(400)의 블록들이 직렬로 혹은 선형으로 일어나는 것으로서 본 명세서에서 설명된다. 하지만, 예시적 프로세스(400)의 복수의 블록들은 병렬로 일어날 수 있다. 추가적으로, 예시적인 프로세스(400)의 블록들은 제시되는 순서대로 수행될 필요가 없으며, 그리고/또는 예시적인 프로세스(400)의 블록들이 중 하나 이상의 블록들은 수행될 필요가 없다.
도시된 예시적 흐름도에서, 서버(103)는 제 1 컴퓨팅 디바이스(101) 및 제 2 컴퓨팅 디바이스(102)를 포함하는 복수의 디바이스들을 사용자 계정(105)에 등록한다(402). 제 1 컴퓨팅 디바이스(101) 및/또는 제 2 컴퓨팅 디바이스는 예를 들어, 스마트폰 혹은 노트북과 같은 모바일 디바이스, 태블릿, 혹은 데스크탑 컴퓨터일 수 있다. 디바이스들의 등록이 도시되고 있지만, 서버(103)는 애플리케이션들을 개별적으로 혹은 그룹들로 사용자 계정(105)에 등록할 수 있고, 이에 따라 그 등록된 애플리케이션들은 사용자 계정(105)에 등록된 모든 디바이스들(혹은 디바이스들의 서브세트) 간에 업데이트될 수 있게 된다. 애플리케이션 및/또는 디바이스가 사용자 계정(105)에 등록되는 경우, 애플리케이션 및/또는 디바이스는 사용자 계정(105)과 관련하여 상태 오브젝트들(206)을 저장할 수 있다.
서버(103)는 예를 들어, 제 1 컴퓨팅 디바이스(101)로부터 디바이스(101) 상에서 동작하는 애플리케이션들에 대응하는 하나 이상의 상태 오브젝트들(206)을 수신할 수 있다(404). 이전에 설명된 바와 같이, 상태 오브젝트들(206)은, 애플리케이션의 인스턴스가 디바이스 상에서 시작될 때, 저장될 수 있고, 그리고 예를 들어, 주기적 간격으로 서버(103)에 대해 업데이트될 수 있다. 하나 이상의 구현예들에서, 디바이스의 사용자는 애플리케이션들에 대한 상태 오브젝트들이 서버(103)에게 제공되는 경우 해당하는 그 애플리케이션들을 등록하기 위한 옵션을 갖는다. 예를 들어, 사용자는 인터페이스(108)를 오픈시킬 수 있고, 그리고 사용자 계정(105)에 등록하기 위해 디바이스 상에서의 하나 이상의 애플리케이션들을 선택할 수 있다. 사용자는 또한 임의의 시간에 애플리케이션들을 등록해제(unregister)하기 위한 옵션을 갖는다.
서버(103)는 예를 들어, 디바이스(102)로부터, 사용자 계정(105)에 등록된 디바이스들의 디바이스 목록(308)에 대한 요청을 수신하고(406), 그리고 디바이스 목록에 대한 요청에 응답하여, 서버(105)는 디바이스 목록(308)을 디바이스(102)에게 제공한다(408). 요청은 사용자 인터페이스(108b)로부터 수신될 수 있고, 그리고 API(202)를 통해 서버(103)에게 제공될 수 있다. 디바이스 목록(308)에 대한 요청은 사용자에 의한 액션에 응답하여 제공될 수 있고, 혹은 사용자 인터페이스가 인스턴스화될 때 사용자 인터페이스(108)에 의해 자동적으로 수행될 수 있다. 하나 이상의 구현예들에서, 사용자 인터페이스(108)는 새로운 디바이스들이 등록되었는지 여부를 결정하기 위해 주기적으로 서버(103)를 폴링(polling)할 수 있고, 그리고 이에 따라 목록(308)을 업데이트할 수 있다.
서버(103)는 디바이스(101)와 관련된 (애플리케이션들의 애플리케이션 목록(310)을 포함하는) 디바이스 상태 정보에 대한 요청을 수신한다(410). 도시된 예에서, 디바이스 상태 정보에 대한 요청은 디바이스(101)를 디바이스 목록(308)으로부터 선택되는 것으로서 식별시킨다. 디바이스 상태 정보에 대한 요청에 응답하여, 서버(103)는 디바이스(101)에 대한 디바이스 상태 정보를 디바이스(102)에게 제공하며, 여기서 디바이스 상태 정보에는 디바이스(101) 상에서 동작하는 애플리케이션들의 애플리케이션 목록(310)이 포함된다(412). 다양한 실시형태들에 따르면, 디바이스(102)(요청하는 디바이스)는, 서버(103)가 디바이스 상태 정보(및/또는 디바이스 목록)를 디바이스(102)에게 제공하기 전에, 사용자 계정(105)에 인증되도록 요구받을 수 있다. 추가적으로, 디바이스 상태 정보에 대한 요청은 요청하는 디바이스 상의 사용자 인터페이스(108)로부터 수신될 수 있고, 그리고 이러한 사용자 인터페이스(108)에게 디바이스 상태 정보가 제공될 수 있다. 사용자 인터페이스(108)는, 다양한 구현예들에 따르면, 사용자 계정(105)과 링크되어 있고, 그리고 사용자가 디바이스(102)를 사용자 계정(105)에 인증시키기 위한 메커니즘을 제공할 수 있다. 서버(103)는, 권한을 부여받은 경우, 디바이스 상태 정보를 애플리케이션 목록(310)의 디스플레이를 위해 사용자 인터페이스(108)에게 제공한다.
그 다음에, 서버(103)는 제공된 목록(310)의 선택된 애플리케이션에 대응하는 (예를 들어, 사용자에 의해 수행된) 애플리케이션 선택을 디바이스(102)로부터 수신하고(414), 그리고 애플리케이션 선택을 수신함에 응답하여, 서버(103)는 선택된 애플리케이션에 대응하는 상태 오브젝트(206)를 디바이스(102)에게 제공한다(416). 이전에 설명된 바와 같이, 상태 오브젝트(206)는 원격 인스턴스로부터 수신된 상태 오브젝트에 근거하여 그 선택된 애플리케이션의 로컬 인스턴스를 오픈시키기 위해 제공된다. 새로운 로컬 인스턴스는, 사용자 계정에 등록된 (디바이스(101)를 포함하는) 하나 이상의 원격 컴퓨팅 디바이스들 중 각각의 원격 컴퓨팅 디바이스 상에서 동작하고 있었던 혹은 현재 동작하고 있는 선택된 애플리케이션의 원격 인스턴스와 동일한 애플리케이션의 설정들 및 상태를 포함할 수 있다. 일부 실시형태들에서, 상태 오브젝트는 또한 동일한 디바이스 상에서 이전에 동작하고 있었던 애플리케이션의 인스턴스에 의해 이전에 수신 및 저장되었을 수 있다.
추가적으로, 사용자는 대응하는 애플리케이션의 인스턴스를 원격 디바이스 상에서 자동적으로(예를 들어, 사용자에 의한 추가 액션 없이) 오픈시키기 위해서 상태 오브젝트들(206)을 원격 디바이스로 전달하기 위해 사용자 인터페이스(108)를 사용할 수 있다(예를 들어, 그 디바이스가 사용자에 의해 다음으로 사용되는 경우). 이와 관련하여, (사용자 인터페이스(108)에서의 선택된 애플리케이션에 대응하는) 상태 오브젝트(206)가, 예를 들어, 디바이스(101)로부터 서버(108)에 의해 수신되고, 그리고 상태 오브젝트에 의해 제공되는 상태에서 애플리케이션의 원격 인스턴스를 실행시키기 위해서, 디바이스(102) 상에서 동작하는 원격 애플리케이션의 표시와 함께 디바이스(102)에게 제공된다. 디바이스(102)는 이러한 표시를 수신하고, 그리고 수신된 상태 오브젝트로부터의 정보를 사용하여 그 대응하는 애플리케이션을 오픈시킨다. 디바이스(102)(혹은 인터페이스(108b))는 애플리케이션을 오픈시키기 전에 먼저 사용자 확인(user confirmation)을 요청할 수 있다.
앞에서-설명되는 예시적인 프로세스(400)에서의 다수의 특징들, 그리고 관련된 응용들은 컴퓨터 판독가능 저장 매체(이것은 또한 컴퓨터 판독가능 매체로서 지칭되기도 함) 상에 기록되는 명령들의 세트로서 특정되는 소프트웨어 프로세스들로서 구현될 수 있다. 이러한 명령들이 하나 이상의 프로세싱 유닛(들)(예를 들어, 하나 이상의 프로세서들, 프로세서들의 코어(core)들, 혹은 다른 프로세싱 유닛들)에 의해 실행되는 경우, 이들은 프로세싱 유닛(들)으로 하여금 해당 명령들 내에서 표시되는 액션들을 수행하도록 한다. 컴퓨터 판독가능 매체들의 예들은 CD-ROM들, 플래시 드라이브(flash drive)들, RAM 칩(chip)들, 하드 드라이브(hard drive)들, EPROM들, 등을 포함하지만, 이러한 것으로만 한정되는 것은 아니다. 컴퓨터 판독가능 매체들 그 자체는 무선으로 진행하는 혹은 유선 연결들을 통해 진행하는 반송파(carrier wave)들 및 전자적 신호(electronic signal)들을 포함하지 않는다.
용어 "소프트웨어(software)"는 프로세서에 의한 프로세싱을 위해 메모리에서 판독될 수 있는, 판독-전용 메모리(read-only memory) 내에 상주하는 펌웨어(firmware), 혹은 자기적 저장소(magnetic storage) 내에 저장되는 애플리케이션들을 적절히 포함하도록 의도되었다. 또한, 일부 구현예들에서, 본 발명의 주된 개시내용의 복수의 소프트웨어 실시형태들은 본 발명의 주된 개시내용의 별개의 소프트웨어 실시형태들을 유지하면서 더 큰 프로그램의 하위-부분(sub-part)들로서 구현될 수 있다. 일부 구현예들에서, 복수의 소프트웨어 실시형태들은 또한 별개의 프로그램들로서 구현될 수 있다. 마지막으로, 본 명세서에서 설명되는 소프트웨어 실시형태를 함께 구현하는 별개의 프로그램들의 임의의 조합은 본 발명의 주된 개시내용의 범위 내에 있다. 일부 구현예들에서, 소프트웨어 프로그램들은, 하나 이상의 전자 시스템(electronic system)들 상에서 동작하도록 인스톨(install)되는 경우, 소프트웨어 프로그램들의 동작들을 실행 및 수행하는 하나 이상의 특정 머신 구현예(machine implementation)들을 정의한다.
컴퓨터 프로그램(이것은 또한 프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트(script), 혹은 코드(code)로서 알려져 있음)은 임의 형태의 프로그래밍 언어로 작성될 수 있고(이러한 프로그래밍 언어에는 컴파일링된 언어(compiled language)들 혹은 해석된 언어(interpreted language)들, 선언적 언어(declarative language)들 혹은 절차적 언어(procedural language)들이 포함됨), 그리고 이러한 컴퓨터 프로그램은 임의의 형태로 배치될 수 있는데, 이러한 배치에는 독립형 프로그램(stand-alone program)으로서 배치되는 것, 또는 컴퓨팅 환경에서의 사용을 위해 적합한 모듈(module), 컴포넌트(component), 서브루틴(subroutine), 오브젝트(object), 혹은 다른 유닛(unit)으로서 배치되는 것이 포함된다. 컴퓨터 프로그램은 파일 시스템(file system) 내의 임의의 파일에 대응할 수 있지만 반드시 그럴 필요는 없다. 프로그램은, 다른 프로그램들 혹은 데이터(예를 들어, 마크업 언어 문서(markup language document)에 저장되는 하나 이상의 스크립트들)를 보유하는 임의의 파일의 일부분에 저장될 수 있거나, 해당하는 프로그램에 전용으로 사용되는 단일 파일에 저장될 수 있거나, 또는 복수의 조정된 파일들(예를 들어, 하나 이상의 모듈들, 서브 프로그램들, 혹은 코드의 일부분들을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 실행되도록 배치될 수 있거나 혹은 복수의 컴퓨터들 상에서 실행되도록 배치될 수 있는데, 이 경우 컴퓨터들은 하나의 사이트(site)에 위치하거나 혹은 복수의 사이트들에 걸쳐 분산되어 통신 네트워크에 의해 상호연결된다.
도 5는 본 발명의 주된 기술의 하나 이상의 실시형태들에 따른, 디바이스들 간에 애플리케이션 상태를 전달하는 것과 관련하여 사용하기 위한 예시적인 전자 시스템(500)을 예시하는 도면이다. 전자 시스템(500)은 컴퓨팅 디바이스(100)의 동작, 혹은 프로세스(400)의 하나 이상의 일부분들 혹은 단계들, 혹은 도 1 내지 도 4에 의해 제공되는 컴포넌트들 및 프로세스들과 관련된 소프트웨어의 실행을 위한 컴퓨팅 디바이스일 수 있다. 다양한 구현예들에서, 전자 시스템(500)은 제 1 컴퓨팅 디바이스(101) 혹은 제 2 컴퓨팅 디바이스(102), 혹은 서버(103)를 나타낼 수 있다. 이와 관련하여, 전자 시스템(500)은 개인용 컴퓨터 또는 모바일 디바이스(예컨대, 태블릿 컴퓨터, 랩탑, 스마트폰, PDA, 혹은 다른 터치 스크린과 같은 것), 또는 (하나 이상의 프로세스들이 내장되어 있거나 결합되어 있는) 텔레비젼, 또는 무선 연결을 갖는 임의의 다른 종류의 컴퓨터-관련 전자 디바이스일 수 있다.
전자 시스템(500)은 다양한 타입들의 컴퓨터 판독가능 매체들, 그리고 다양한 다른 타입들의 컴퓨터 판독가능 매체들에 대한 인터페이스들을 포함할 수 있다. 도시된 예에서, 전자 시스템(500)은 버스(508), 프로세싱 유닛(들)(512), 시스템 메모리(504), 판독-전용 메모리(Read-Only Memory, ROM)(510), 영구 저장 디바이스(502), 입력 디바이스 인터페이스(514), 출력 디바이스 인터페이스(506), 그리고 하나 이상의 네트워크 인터페이스들(516)을 포함한다. 일부 구현예들에서, 전자 시스템(500)은 이전에 설명된 다양한 컴포넌트들 및 프로세스들의 동작을 위한 다른 컴퓨팅 디바이스들 혹은 회로를 포함할 수 있거나, 또는 이러한 것과 통합될 수 있다.
버스(508)는 전자 시스템(500)의 수많은 내부 디바이스들을 통신가능하게 연결하는 모든 시스템 버스들, 주변기기(peripheral) 버스들, 및 칩셋(chipset) 버스들을 집합적으로 나타낸다. 예컨대, 버스(508)는 프로세싱 유닛(들)(512)을 ROM(510), 시스템 메모리(504), 및 영구 저장 디바이스(502)와 통신가능하게 연결한다.
이러한 다양한 메모리 유닛들로부터, 프로세싱 유닛(들)(512)은 본 발명의 주된 개시내용의 프로세스들을 실행하기 위해 프로세싱할 데이터 및 실행할 명령들을 검색한다. 프로세싱 유닛(들)은 상이한 구현예들에서 단일 프로세서 혹은 멀티-코어 프로세서(multi-core processor)일 수 있다.
ROM(510)은 프로세싱 유닛(들)(512) 및 전자 시스템의 다른 모듈들에 의해 필요로 하는 정적 데이터 및 명령들을 저장한다. 반면, 영구 저장 디바이스(502)는 판독-및-기입 메모리 디바이스이다. 이러한 디바이스는 전자 시스템(500)이 오프(off) 상태인 경우에도 명령들 및 데이터를 저장하는 비-휘발성 메모리 유닛이다. 본 발명의 주된 개시내용의 일부 구현예들은 영구 저장 디바이스(502)로서 대용량-저장 디바이스(mass-storage device)(예컨대, 자기 디스크 혹은 광학 디스크 그리고 그 대응하는 디스크 드라이브와 같은 것)를 사용한다.
다른 구현예들은 영구 저장 디바이스(502)로서 임의의 탈착가능 저장 디바이스(예컨대, 플로피 디스크, 플래시 드라이브, 그리고 그 대응하는 디스크 드라이브와 같은 것)를 사용한다. 영구 저장 디바이스(502)와 마찬가지로, 시스템 메모리(504)는 판독-및-기입 메모리 디바이스이다. 하지만, 저장 디바이스(502)와는 달리, 시스템 메모리(504)는 랜덤 액세스 메모리와 같은 휘발성 판독-및-기입 메모리이다. 시스템 메모리(504)는 프로세서가 실행시 필요로 하는 명령들 및 데이터의 일부를 저장한다. 일부 구현예들에서, 본 발명의 주된 개시내용의 프로세스들은 시스템 메모리(504), 영구 저장 디바이스(502), 및/또는 ROM(510) 내에 저장된다. 이러한 다양한 메모리 유닛들로부터, 프로세싱 유닛(들)(512)은 일부 구현예들의 프로세스들을 실행하기 위해 프로세싱할 데이터 및 실행할 명령들을 검색한다.
버스(508)는 또한 입력 디바이스 인터페이스(514)와 출력 디바이스 인터페이스(506)에 연결된다. 입력 디바이스 인터페이스(514)는 사용자로 하여금 전자 시스템에 대한 정보를 전달할 수 있게 함과 아울러 커맨드(command)들을 선택할 수 있게 한다. 입력 디바이스 인터페이스(514)와 함께 사용되는 입력 디바이스들은 예를 들어, 알파뉴메릭 키보드(alphanumeric keyboard)들 및 포인팅 디바이스(pointing device)들(이것은 또한 "커서 제어 디바이스들"로서 지칭됨)을 포함한다. 출력 디바이스 인터페이스들(506)은 예를 들어, 전자 시스템(500)에 의해 발생되는 이미지(image)들의 디스플레이를 가능하게 한다. 출력 디바이스 인터페이스(506)와 함께 사용되는 출력 디바이스들은 예를 들어, 프린터들 및 디스플레이 디바이스들, 예컨대, 음극선관(Cathode Ray Tube, CRT)들 혹은 액정 디스플레이(Liquid Crystal Display, LCD)들과 같은 것을 포함한다. 일부 구현예들은 입력 디바이스들 및 출력 디바이스들 모두로서 기능하는 터치스크린과 같은 디바이스들을 포함한다.
마지막으로, 도 5에서 보여지는 바와 같이, 버스(508)는 또한 전자 시스템(500)을 네트워크 인터페이스들(516)을 통해 임의의 네트워크(미도시)에 결합시킨다. 네트워크 인터페이스들(516)은 예를 들어, 무선 액세스 포인트(wireless access point)(예를 들어, 블루투스 혹은 WiFi) 또는 무선 액세스 포인트로의 연결을 위한 무선 회로(radio circuitry)를 포함할 수 있다. 네트워크 인터페이스들(516)은 또한, 로컬 영역 네트워크(Local Area Network)("LAN"), 와이드 영역 네트워크(Wide Area Network)("WAN"), 무선 LAN, 혹은 인트라넷(Intranet)과 같은 컴퓨터들의 네트워크의 일부 또는 인터넷과 같은 네트워크들의 네트워크에 컴퓨터를 연결시키기 위한 하드웨어(예를 들어, 이더넷 하드웨어(Ethernet hardware))를 포함할 수 있다. 전자 시스템(500) 중 임의의 컴포넌트들 혹은 모든 컴포넌트들은 본 발명의 주된 개시내용과 관련하여 사용될 수 있다.
앞에서 설명된 이러한 기능들은 컴퓨터 소프트웨어, 펌웨어 혹은 하드웨어에서 구현될 수 있다. 본 발명의 기법들은 하나 이상의 컴퓨터 프로그램 제품들을 사용하여 구현될 수 있다. 프로그래밍가능한 프로세서들 및 컴퓨터들이 모바일 디바이스들 내에 포함될 수 있거나, 혹은 모바일 디바이스들로서 패키지(package)될 수 있다. 프로세스들 및 로직 흐름(logic flow)들이 하나 이상의 프로그래밍가능한 프로세서들에 의해 그리고 하나 이상의 프로그래밍가능한 로직 회로에 의해 수행될 수 있다. 범용 컴퓨팅 디바이스들 및 특수 목적 컴퓨팅 디바이스들 그리고 저장 디바이스들이 통신 네트워크들을 통해 상호연결될 수 있다.
일부 구현예들은 머신-판독가능 매체 혹은 컴퓨터-판독가능 매체(대안적으로 이러한 것들은 컴퓨터-판독가능 저장 매체들, 머신-판독가능 매체들, 혹은 머신-판독가능 저장 매체들로서 지칭됨) 내에 컴퓨터 프로그램 명령들을 저장하는 전자 컴포넌트들을 포함하는데, 예컨대, 마이크로프로세서들, 저장소 및 메모리와 같은 것을 포함한다. 이러한 컴퓨터-판독가능 매체들의 일부 예들은, RAM, ROM, 판독-전용 콤팩트 디스크(read-only compact disc)(CD-ROM)들, 기록가능 콤팩트 디스크(recordable compact disc)(CD-R)들, 재기입가능 콤팩트 디스크(rewritable compact disc)(CD-RW)들, 판독-전용 디지털 다용도 디스크들(read-only digital versatile disc)들(예를 들어, DVD-ROM, 듀얼-레이어(dual-layer) DVD-ROM), 다양한 기록가능/재기입가능 DVD들(예를 들어, DVD-RAM, DVD-RW, DVD+RW, 등), 플래시 메모리(flash memory)(예를 들어, SD 카드들, 미니-SD 카드들, 마이크로-SD 카드들, 등), 자기적 하드 드라이브(magnetic hard drive)들 및/또는 솔리드 스테이트 하드 드라이브(solid state hard drive)들, 판독-전용 및 기록가능 블루-레이(Blu-Ray®) 디스크들, 초고밀도 광학 디스크(ultra density optical disc)들, 임의의 다른 광학적 혹은 자기적 매체들, 그리고 플로피 디스크들을 포함한다. 컴퓨터-판독가능 매체들은 적어도 하나의 프로세싱 유닛에 의해 실행가능한 컴퓨터 프로그램을 저장할 수 있고, 그리고 다양한 동작들을 수행하기 위한 명령들의 세트들을 포함할 수 있다. 컴퓨터 프로그램들 혹은 컴퓨터 코드의 예들은, 예컨대, 컴파일러(compiler)에 의해 생성되는 것과 같은 머신 코드, 그리고 해석기(interpreter)를 사용하여 컴퓨터, 전자 컴포넌트, 혹은 마이크로프로세서에 의해 실행되는 더 높은 레벨의 코드를 포함하는 파일들을 포함한다.
앞서의 논의는 주로 소프트웨어를 실행하는 마이크로프로세서 혹은 멀티-코어 프로세서들을 참조하고 있지만, 일부 구현예들은 애플리케이션 특정 집적 회로(Application Specific Integrated Circuit)(ASIC)들 혹은 현장 프로그래밍가능 게이트 어레이(Field Programmable Gate Array, FPGA)들과 같은 하나 이상의 집적 회로들에 의해 수행된다. 일부 구현예들에서, 이러한 집적 회로들은 해당 회로 자체에 저장된 명령들을 실행한다.
본 명세서 및 본 명세서의 임의의 청구항들에서 사용되는 바와 같이, 용어들 "컴퓨터", "서버", "프로세서", 및 "메모리"는 모두 전자적 디바이스들 혹은 다른 기술적 디바이스들을 지칭한다. 이러한 용어들은 사람들 혹은 사람들의 그룹들을 배제한다. 본 명세서의 목적을 위해, 용어 "디스플레이" 혹은 "디스플레이하는 것"은 전자 디바이스 상에서의 디스플레이를 의미한다. 본 명세서 및 본 명세서의 임의의 청구항들에서 사용되는 바와 같이, 용어들 "컴퓨터 판독가능 매체" 및 "컴퓨터 판독가능 매체들"은 컴퓨터에 의해 판독가능한 포맷(format)로 정보를 저장하는 유형의 물리적 오브젝트(tangible, physical object)들로만 전적으로 한정된다. 이러한 용어들은 임의의 무선 신호들, 유선 다운로드 신호들, 및 임의의 다른 단기간 신호(ephemeral signal)들을 배제한다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에서 설명되는 주된 내용의 구현예들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스(예를 들어, CRT(Cathode Ray Tube, 음극선관) 혹은 LCD(Liquid Crystal Display, 액정 디스플레이) 모니터), 그리고 사용자가 컴퓨터에 입력을 제공할 수 있게 하는 키보드 및 포인팅 디바이스(예를 들어, 마우스 혹은 트랙볼(trackball))를 구비한 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들이 또한 사용자와의 상호작용을 제공하기 위해 사용될 수 있는데, 예를 들어, 사용자에게 제공되는 피드백(feedback)은 임의 형태의 감각적 피드백, 예를 들어, 시각적 피드백, 청각적 피드백, 혹은 촉각적 피드백일 수 있고; 그리고 사용자로부터의 입력은 청각적 입력, 음성 입력, 혹은 촉각적 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가적으로, 컴퓨터는, 문서들을 사용자에 의해 사용되는 디바이스로 전송하는 것 그리고 사용자에 의해 사용되는 디바이스로부터 문서들을 수신하는 것을 수행함으로써, 예를 들어, 웹 브라우저로부터 수신되는 요청들에 응답하여 사용자의 클라이언트 디바이스 상의 웹 브라우저로 웹 페이지들을 전송함으로써, 사용자와 상호작용할 수 있다.
이러한 명세서에서 설명되는 주된 내용의 실시예들은 컴퓨팅 시스템 내에서 구현될 수 있는데, 이러한 컴퓨팅 시스템은, (예를 들어, 데이터 서버로서의) 백 엔드 컴포넌트(back end component)를 포함하거나, 또는 미들웨어 컴포넌트(middleware component)(예를 들어, 애플리케이션 서버)를 포함하거나, 또는 프런트 엔드 컴포넌트(front end component)(예를 들어, 그래픽 사용자 인터페이스를 갖는 클라이언트 컴퓨터 혹은 사용자로 하여금 본 명세서에서 설명되는 주된 내용의 구현예와 상호작용할 수 있게 하는 웹 브라우저를 갖는 클라이언트 컴퓨터)를 포함하거나, 또는 하나 이상의 이러한 백 엔드 컴포넌트들, 미들웨어 컴포넌트들, 혹은 프런트 엔드 컴포넌트들의 임의의 조합을 포함한다. 시스템의 컴포넌트들은 임의 형태 혹은 매체의 디지털 데이터 통신, 예를 들어, 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크의 예들은, 로컬 영역 네트워크(Local Area Network)("LAN") 및 와이드 영역 네트워크(Wide Area Network)("WAN"), 인터-네트워크(inter-network)(예를 들어, 인터넷), 그리고 피어-투-피어 네트워크(peer-to-peer network)들(예를 들어, 애드 혹 피어-투-피어 네트워크(ad hoc peer-to-peer network)들)을 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로로부터 멀리 떨어져 있고, 그리고 전형적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터들 상에서 실행되는 컴퓨터 프로그램들로서 서로에 대해 클라이언트-서버 관계를 갖고 있는 그러한 컴퓨터 프로그램들에 의해서 일어난다. 일부 실시예들에서, 서버는 데이터(예를 들어, HTML 페이지)를 클라이언트 디바이스로 (예를 들어, 클라이언트 디바이스와 상호작용하는 사용자에게 데이터를 디스플레이할 목적으로, 그리고 이러한 사용자로부터의 사용자 입력을 수신할 목적으로) 전송한다. 클라이언트 디바이스에서 발생된 데이터(예를 들어, 사용자 상호작용의 결과)는 클라이언트 디바이스로부터 서버에서 수신될 수 있다.
본 발명의 기술분야에서 숙련된 자들은, 본 명세서에서 설명되는 다양한 예시적인 블록들, 모듈들, 요소들, 컴포넌트들, 방법들, 및 알고리즘들이 전자적 하드웨어, 컴퓨터 소프트웨어, 혹은 이들 모두의 조합들로서 구현될 수 있음을 이해하게 될 것이다. 하드웨어와 소프트웨어의 이러한 상호교환가능성(interchangeability)을 예시하기 위해, 다양한 예시적인 블록들, 모듈들, 요소들, 컴포넌트들, 방법들, 및 알고리즘들이 이들의 기능적 측면에서 일반적으로 앞에서 설명되었다. 이러한 기능이 하드웨어로서 구현될지 혹은 소프트웨어로서 구현될지는 전체 시스템에 부과되는 특정 애플리케이션 및 설계 제약들에 따라 달라진다. 숙련된 기술자들은 설명되는 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있다. 다양한 컴포넌트들 및 블록들이 본 발명의 주된 기술의 범위를 벗어남이 없이 모두 상이하게 정렬될 수 있다(예를 들어, 상이한 순서로 정렬될 수 있음, 혹은 상이한 방식으로 분할될 수 있음).
본 명세서에서 개시되는 프로세스들에서 단계들의 특정 순서 혹은 계층체계(hierarchy)는 예시적 접근들의 사례임을 이해해야 한다. 설계 선호도(design preference)들에 근거하여, 프로세스들에서 단계들의 특정 순서 혹은 계층체계는 재정렬될 수 있음을 이해해야 한다. 단계들 중 일부는 동시에 수행될 수 있다. 첨부되는 방법의 청구항들은 샘플 순서(sample order)에서 다양한 단계들의 요소들을 제시하고, 그리고 그 제시되는 특정 순서 혹은 계층체계로만 한정되도록 의도되지 않았다.
이전의 설명은 본 발명의 기술분야에서 숙련된 임의의 사람이 본 명세서에서 설명되는 다양한 실시형태들을 실시할 수 있도록 하기 위해 제공된다. 이러한 설명은 본 발명의 주된 기술의 다양한 예들을 제공하고, 그리고 본 발명의 주된 기술은 이러한 예들로만 한정되지 않는다. 이러한 실시형태들에 대한 다양한 수정들이 본 발명의 기술분야에서 숙련된 사람들에게는 용이하게 명백하게 될 것이고, 그리고 본 명세서에서 정의되는 포괄적 원리(generic principle)들은 다른 실시형태들에 적용될 수 있다. 따라서, 청구항들은 본 명세서에서 제시되는 실시형태들로만 한정되도록 의도되지 않았고, 하지만 언어적 청구(language claim)들과 일관되는 전체 범위를 부여받아야 하며, 여기서 임의의 요소를 단수 형태로 언급하는 것은 "하나 그리고 단지 하나"를 의미하도록 그렇게 특정적으로 기재되어 있지 않은 한 "하나 그리고 단지 하나"를 의미하도록 의도된 것이 아니며, 오히려 "하나 이상"을 의미하도록 의도된 것이다. 달리 특정적으로 기재되지 않는다면, 용어 "일부"는 하나 이상의 것을 지칭한다. 남성형의 대명사(예를 들어, 그의(his))는 여성형 및 중성형(예를 들어, 그녀의(her) 및 그것의(its))을 포함하고, 그 반대의 경우도 마찬가지이다. 표제(heading)들 및 부제(subheading)들은, 만약 존재한다면, 오로지 설명의 편의를 위해 사용되는 것이고 본 발명을 한정하는 것이 아니다.
본 명세서에서 사용되는 바와 같은 용어 "웹사이트(website)"는 웹사이트의 임의의 실시형태를 포함할 수 있는데, 여기에는 하나 이상의 웹 페이지들, 웹 관련 콘텐츠를 호스팅(hosting) 혹은 저장하는데 사용되는 하나 이상의 서버들, 등이 포함된다. 이에 따라, 용어 "웹사이트"는 용어 웹 페이지 및 서버와 상호교환가능하게 사용될 수 있다. 술어적 단어들 "하도록 구성된", "하도록 동작가능한", 및 "하도록 프로그래밍된"은 주어(subject)의 임의의 특정적인 유형의(tangible) 혹은 무형의(intangible) 수정을 시사(imply)하지 않으며, 오히려 상호교환가능하게 사용되도록 의도된 것이다. 예를 들어, 임의의 동작 혹은 임의의 컴포넌트를 모니터링 및 제어하도록 구성된 프로세서는 또한, 해당 동작을 모니터링 및 제어하도록 프로그래밍되는 프로세서, 혹은 해당 동작을 모니터링 및 제어하도록 동작가능한 프로세서를 의미할 수 있다. 마찬가지로, 코드를 실행하도록 구성된 프로세서는 해당 코드를 실행하도록 프로그래밍된 프로세서 혹은 해당 코드를 실행하도록 동작가능한 프로세서로서 해석될 수 있다.
"실시형태"와 같은 어구는 이러한 실시형태가 본 발명의 주된 기술에 본질적인 것임을 시사하는 것이 아니고, 또는 이러한 실시형태가 본 발명의 주된 기술의 모든 구성들에 적용되는 것을 시사하는 것이 아니다. 임의의 실시형태와 관련된 개시내용은 모든 구성들 혹은 하나 이상의 구성들에 적용될 수 있다. 임의의 실시형태는 하나 이상의 예들을 제공할 수 있다. "실시형태"와 같은 어구는 하나 이상의 실시형태들을 지칭할 수 있고, 그리고 그 반대의 경우도 마찬가지이다. "실시예"와 같은 어구는 이러한 실시예가 본 발명의 주된 기술에 본질적인 것임을 시사하는 것이 아니고, 또는 이러한 실시예가 본 발명의 주된 기술의 모든 구성들에 적용되는 것을 시사하는 것이 아니다. 임의의 실시예와 관련된 개시내용은 모든 실시예들 혹은 하나 이상의 실시예들에 적용될 수 있다. 임의의 실시예는 하나 이상의 예들을 제공할 수 있다. "실시예"와 같은 어구는 하나 이상의 실시예들을 지칭할 수 있고, 그리고 그 반대의 경우도 마찬가지이다. "구성"과 같은 어구는 이러한 구성이 본 발명의 주된 기술에 본질적인 것임을 시사하는 것이 아니고, 또는 이러한 구성이 본 발명의 주된 기술의 모든 구성들에 적용되는 것을 시사하는 것이 아니다. 임의의 구성과 관련된 개시내용은 모든 구성들 혹은 하나 이상의 구성들에 적용될 수 있다. 임의의 구성은 하나 이상의 예들을 제공할 수 있다. "구성"와 같은 어구는 하나 이상의 구성들을 지칭할 수 있고, 그리고 그 반대의 경우도 마찬가지이다.
단어 "예"는 "예로서 혹은 사례로서 역할을 하는 것"을 의미하도록 본 명세서에서 사용된다. 본 명세서에서 "예"로서 설명되는 임의의 실시형태 혹은 설계는 반드시 다른 실시형태들 혹은 설계들보다 바람직한 것으로서 혹은 이로운 것으로서 해석될 필요는 없다.
본 발명의 기술분야에서 통상의 기술을 가진 자들에게 알려진 혹은 이후에 알려지게 되는 본 개시내용 전체에 걸쳐 설명되는 다양한 실시형태들의 요소들에 대한 모든 구조적 및 기능적 등가들은 참조로 본 명세서에서 명백히 통합되는 것이며, 그리고 청구항들에 의해 포괄되도록 의도되었다. 더욱이, 본 명세서에서 개시되는 그 어떤 것도 일반 공중에게 헌정되도록 의도되지 않았다(이러한 개시내용이 청구항들에서 명백하게 기재되어 있는지 여부에 상관없음). 어떠한 청구항 요소도 해당 요소가 어구 "하기 위한 수단"을 사용하여 명시적으로 기재되어 있지 않다면, 또는 방법 청구항의 경우 해당 요소가 어구 "하기 위한 단계"를 사용하여 기재되어 있지 않다면, 35 U.S.C. §112, 6항의 조항(provision)들 하에서 해석돼서는 안 된다, 더욱이, 용어 "포함하는", "갖는" 등이 상세한 설명 혹은 청구항들에서 사용되는 한, 이러한 용어는 용어 "포함함"이 청구항 내에서 전이적 단어(transitional word)로서 이용될 때 해석되는 것과 같이 용어 "포함함"과 유사한 방식으로 포함적 의미가 갖도록 의도된 것이다.

Claims (20)

  1. 방법으로서, 상기 방법은,
    제 1 컴퓨팅 디바이스(computing device)로부터, 상기 제 1 컴퓨팅 디바이스 상에서 동작하는 애플리케이션(application)들에 대응하는 하나 이상의 상태 오브젝트(state object)들을 수신하는 것과;
    상기 제 1 컴퓨팅 디바이스로부터 떨어져 있는 제 2 컴퓨팅 디바이스로부터, 상기 제 1 컴퓨팅 디바이스와 관련된 디바이스 상태 정보(device state information)에 대한 요청을 수신하는 것과;
    상기 요청에 응답하여, 상기 디바이스 상태 정보를 상기 제 2 컴퓨팅 디바이스에게 제공하는 것과, 여기서 상기 디바이스 상태 정보는 상기 제 1 컴퓨팅 디바이스 상에서 동작하는 상기 애플리케이션들의 애플리케이션 목록(application enumeration)을 포함하고;
    상기 제 2 컴퓨팅 디바이스로부터, 상기 제공된 목록의 선택된 애플리케이션에 대응하는 애플리케이션 선택을 수신하는 것과; 그리고
    상기 애플리케이션 선택을 수신함에 응답하여, 상기 수신된 하나 이상의 상태 오브젝트들로부터의 상기 선택된 애플리케이션에 대응하는 상태 오브젝트를 상기 제 2 컴퓨팅 디바이스에게 제공하는 것을 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 방법은 또한, 상기 하나 이상의 상태 오브젝트들을 수신하기 전에, 상기 제 1 컴퓨팅 디바이스 및 상기 제 2 컴퓨팅 디바이스를 포함하는 복수의 디바이스들을 사용자 계정(user account)에 등록(registering)하는 것을 포함하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    상기 방법은 또한, 상기 디바이스 상태 정보를 상기 제 2 컴퓨팅 디바이스에게 제공하기 전에, 상기 제 2 컴퓨팅 디바이스가 상기 사용자 계정에 인증(authenticate)됨을 결정하는 것을 포함하는 것을 특징으로 하는 방법.
  4. 제2항에 있어서,
    상기 방법은 또한,
    디바이스 상태 정보에 대한 상기 요청을 수신하기 전에, 상기 사용자 계정에 등록된 디바이스들의 디바이스 목록에 대한 요청을 수신하는 것과; 그리고
    상기 디바이스 목록에 대한 상기 요청에 응답하여 상기 디바이스 목록을 제공하는 것을 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    디바이스 상태 정보에 대한 상기 요청은 상기 제 1 컴퓨팅 디바이스를 상기 디바이스 목록으로부터 선택되는 것으로서 식별시키는 것을 특징으로 하는 방법.
  6. 제2항에 있어서,
    디바이스 상태 정보에 대한 상기 요청은 상기 제 2 컴퓨팅 디바이스 상의 글로벌 애플리케이션 인터페이스(global application interface)로부터 수신되고,
    상기 디바이스 상태 정보는 상기 제 2 컴퓨팅 디바이스 상의 상기 글로벌 애플리케이션 인터페이스에 제공되고,
    상기 글로벌 애플리케이션 인터페이스는 상기 사용자 계정과 링크(link)되어 있고,
    상기 디바이스 상태 정보는 상기 애플리케이션 목록의 디스플레이를 위해 상기 제 2 컴퓨팅 디바이스 상의 상기 글로벌 애플리케이션 인터페이스에 제공되는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 제 1 컴퓨팅 디바이스 상에서 동작하는 애플리케이션들에 대응하는 업데이트된 상태 오브젝트들이 주기적인 간격(periodic intervals)으로 상기 제 1 컴퓨팅 디바이스로부터 수신되는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 선택된 애플리케이션에 대응하는 상기 상태 오브젝트는, 상기 선택된 컴퓨팅 디바이스 상에서 동작함과 아울러 상기 상태 오브젝트에 대응하는 원격 애플리케이션(remote application)의 표시와 함께, 상기 제 2 컴퓨팅 디바이스에 제공되어, 상기 상태 오브젝트에 의해 제공되는 상태에서 상기 원격 애플리케이션의 실행이 이루어지는 것을 특징으로 하는 방법.
  9. 제1항에 있어서,
    상기 제 2 컴퓨팅 디바이스 혹은 제 1 컴퓨팅 디바이스는 모바일 디바이스(mobile device)인 것을 특징으로 하는 방법.
  10. 방법으로서,
    서버(server)로부터, 사용자 계정과 관련된 하나 이상의 원격 컴퓨팅 디바이스(remote computing device)들 상에서 동작하는 애플리케이션들의 애플리케이션 목록을 수신하는 것과;
    상기 사용자 계정과 관련된 글로벌 애플리케이션 인터페이스에서의 디스플레이를 위해 상기 애플리케이션 목록을 제공하는 것과;
    상기 글로벌 애플리케이션 인터페이스에서, 상기 제공된 애플리케이션 목록의 선택된 애플리케이션에 대응하는 애플리케이션 선택을 수신하는 것과;
    상기 수신된 애플리케이션 선택에 근거하여, 상기 서버로부터의 상기 선택된 애플리케이션에 대응하는 상태 오브젝트를 요청하는 것과; 그리고
    상기 서버로부터 요청된 상기 상태 오브젝트를 수신하는 것을 포함하는 것을 특징으로 하는 방법.
  11. 제10항에 있어서,
    상기 방법은,
    상기 수신된 상태 오브젝트에 근거하여 상기 선택된 애플리케이션의 로컬 인스턴스(local instance)를 오픈(open)시키는 것을 포함하고,
    상기 로컬 인스턴스는 상기 하나 이상의 원격 컴퓨팅 디바이스들 중 각각의 원격 컴퓨팅 디바이스 상에서 현재 동작하고 있는 상기 선택된 애플리케이션의 원격 인스턴스(remote instance)와 동일한 애플리케이션의 설정(setting)들 및 상태를 포함하는 것을 특징으로 하는 방법.
  12. 제11항에 있어서,
    상기 각각의 원격 컴퓨팅 디바이스는 모바일 디바이스인 것을 특징으로 하는 방법.
  13. 제11항에 있어서,
    상기 선택된 애플리케이션은 웹 브라우저(web browser)를 포함하고,
    상기 수신된 상태 오브젝트는,
    상기 선택된 애플리케이션의 상기 원격 인스턴스의 웹 부라우징 히스토리(web browsing history)와, 그리고
    상기 선택된 애플리케이션의 상기 원격 인스턴스에 의해 현재 오픈된 적어도 하나의 웹 페이지(web page)를
    포함하고,
    상기 선택된 애플리케이션의 상기 로컬 인스턴스는, 상기 원격 인스턴스에 의해 마지막으로 뷰잉(viewing)된 상기 웹 페이지 내의 위치에서 상기 웹 페이지를 뷰잉하도록 오픈되고,
    상기 로컬 인스턴스는 상기 원격 인스턴스의 상기 웹 브라우징 히스토리에 따라 웹 페이지들의 네비게이션(navigation)을 가능하게 하도록 되어 있는 것을 특징으로 하는 방법.
  14. 제10항에 있어서,
    상기 방법은,
    상기 서버에 의해 제공되는 디바이스 정보에 근거하여, 상기 하나 이상의 원격 컴퓨팅 디바이스들의 디바이스 목록을 결정하는 것과;
    상기 글로벌 애플리케이션 인터페이스에서의 디스플레이를 위해 상기 디바이스 목록을 제공하는 것과;
    상기 글로벌 애플리케이션 인터페이스에서, 상기 선택된 애플리케이션의 상기 원격 인스턴스가 동작하고 있는 상기 각각의 원격 컴퓨팅 디바이스에 대응하는 디바이스 선택을 수신하는 것과, 여기서 상기 각각의 원격 컴퓨팅 디바이스는 상기 디바이스 목록에서 식별되고; 그리고
    상기 디바이스 선택을 수신함에 응답하여 상기 서버로부터의 상기 애플리케이션 목록을 요청하는 것을 포함하고,
    상기 애플리케이션 목록은 상기 각각의 원격 컴퓨팅 디바이스에 대한 것인 것을 특징으로 하는 방법.
  15. 제10항에 있어서,
    상기 방법은,
    디스플레이 스크린(display screen)에서 행해진 사용자-제스처(user-gesture)에 응답하여 상기 글로벌 애플리케이션 인터페이스를 발생시키는 것을 포함하는 것을 특징으로 하는 방법.
  16. 하나 이상의 프로세서들과, 그리고 메모리 매체들을 포함하는 시스템으로서,
    상기 메모리 매체들에는 명령들이 저장되고, 상기 명령들은 실행될 때 상기 하나 이상의 프로세서들로 하여금,
    제 1 컴퓨팅 디바이스에 대해, 상기 제 1 컴퓨팅 디바이스 상에서 동작하는 애플리케이션들에 대응하는 하나 이상의 상태 오브젝트들을 저장하는 것과;
    상기 제 1 컴퓨팅 디바이스로부터 떨어져 있는 제 2 컴퓨팅 디바이스로부터, 상기 제 1 컴퓨팅 디바이스 상에서 동작하는 상기 애플리케이션들의 애플리케이션 목록에 대한 요청을 수신하는 것과;
    상기 요청에 응답하여, 상기 애플리케이션 목록을 상기 제 2 컴퓨팅 디바이스에게 제공하는 것과;
    상기 제 2 컴퓨팅 디바이스로부터, 상기 제공된 목록의 선택된 애플리케이션에 대응하는 애플리케이션 선택을 수신하는 것과; 그리고
    상기 애플리케이션 선택을 수신함에 응답하여, 상기 저장된 하나 이상의 상태 오브젝트들로부터의 상기 선택된 애플리케이션에 대응하는 상태 오브젝트를 상기 제 2 컴퓨팅 디바이스에게 제공하는 것을
    수행하도록 하는 것을 특징으로 하는 시스템.
  17. 제16항에 있어서,
    상기 명령들은 또한, 실행될 때 상기 하나 이상의 프로세서들로 하여금,
    상기 하나 이상의 상태 오브젝트들을 수신하기 전에, 상기 제 1 컴퓨팅 디바이스 및 상기 제 2 컴퓨팅 디바이스를 포함하는 복수의 디바이스들을 사용자 계정에 등록하는 것을
    수행하도록 하는 것을 특징으로 하는 시스템.
  18. 제17항에 있어서,
    상기 명령들은 또한, 실행될 때 상기 하나 이상의 프로세서들로 하여금,
    디바이스 상태 정보에 대한 상기 요청을 수신하기 전에, 상기 제 2 컴퓨팅 디바이스로부터, 상기 사용자 계정에 등록된 디바이스들의 디바이스 목록에 대한 요청을 수신하는 것과; 그리고
    상기 디바이스 목록에 대한 상기 요청에 응답하여 상기 디바이스 목록을 상기 제 2 컴퓨팅 디바이스에게 제공하는 것을
    수행하도록 하는 것을 특징으로 하는 시스템.
  19. 제17항에 있어서,
    디바이스 상태 정보에 대한 상기 요청은 상기 제 2 컴퓨팅 디바이스 상의 글로벌 애플리케이션 인터페이스로부터 수신되고,
    상기 디바이스 상태 정보는 상기 제 2 컴퓨팅 디바이스 상의 상기 글로벌 애플리케이션 인터페이스에 제공되고,
    상기 글로벌 애플리케이션 인터페이스는 상기 사용자 계정과 링크되어 있고,
    상기 디바이스 상태 정보는 상기 애플리케이션 목록의 디스플레이를 위해 상기 제 2 컴퓨팅 디바이스 상의 상기 글로벌 애플리케이션 인터페이스에 제공되는 것을 특징으로 하는 시스템.
  20. 제17항에 있어서,
    상기 선택된 애플리케이션에 대응하는 상기 상태 오브젝트는, 상기 선택된 컴퓨팅 디바이스 상에서 동작함과 아울러 상기 상태 오브젝트에 대응하는 원격 애플리케이션의 표시와 함께, 상기 제 2 컴퓨팅 디바이스에 제공되어, 상기 상태 오브젝트에 의해 제공되는 상태에서 상기 원격 애플리케이션의 실행이 이루어지는 것을 특징으로 하는 시스템.
KR1020177031464A 2015-08-17 2016-06-30 디바이스들 간의 애플리케이션 상태 전달 KR101998313B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/828,450 2015-08-17
US14/828,450 US20170054767A1 (en) 2015-08-17 2015-08-17 Transferring application state between devices
PCT/US2016/040537 WO2017030662A1 (en) 2015-08-17 2016-06-30 Transferring application state between devices

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020197019328A Division KR102060676B1 (ko) 2015-08-17 2016-06-30 디바이스들 간의 애플리케이션 상태 전달

Publications (2)

Publication Number Publication Date
KR20170130605A true KR20170130605A (ko) 2017-11-28
KR101998313B1 KR101998313B1 (ko) 2019-10-01

Family

ID=56413902

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177031464A KR101998313B1 (ko) 2015-08-17 2016-06-30 디바이스들 간의 애플리케이션 상태 전달
KR1020197019328A KR102060676B1 (ko) 2015-08-17 2016-06-30 디바이스들 간의 애플리케이션 상태 전달

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020197019328A KR102060676B1 (ko) 2015-08-17 2016-06-30 디바이스들 간의 애플리케이션 상태 전달

Country Status (8)

Country Link
US (1) US20170054767A1 (ko)
EP (1) EP3338183A1 (ko)
JP (2) JP6649403B2 (ko)
KR (2) KR101998313B1 (ko)
CN (1) CN107851035A (ko)
DE (1) DE112016003732T5 (ko)
GB (1) GB2556448B (ko)
WO (1) WO2017030662A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210003224A (ko) * 2018-06-01 2021-01-11 애플 인크. 원격 디바이스로부터의 직접 입력

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11379618B2 (en) * 2017-06-01 2022-07-05 International Business Machines Corporation Secure sensitive personal information dependent transactions
CN108959052A (zh) * 2018-06-29 2018-12-07 河南工业大学 判断智能移动终端不同app使用状态的方法及系统
JP2020154695A (ja) * 2019-03-20 2020-09-24 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
CN110058902B (zh) * 2019-04-29 2022-04-12 上海连尚网络科技有限公司 信息处理方法、电子设备和计算机可读介质
KR102193040B1 (ko) * 2019-09-05 2020-12-21 주식회사 틸론 Vdi 환경에서의 가상 데스크톱에 설치된 어플리케이션을 어플리케이션 가상화 형태로 실행하거나 가상 데스크톱 접속으로 전환하는 방법, 및 가상화 서버
CN110955465A (zh) * 2019-12-16 2020-04-03 宁波奥克斯电气股份有限公司 一种设备状态获取方法
US11044279B1 (en) 2019-12-19 2021-06-22 Capital One Services, Llc Systems and methods for secure browser session transfer
CN114706664A (zh) * 2020-01-08 2022-07-05 华为技术有限公司 跨设备任务处理的交互方法、电子设备及存储介质
US20230393860A1 (en) * 2022-06-03 2023-12-07 Kyndryl, Inc. Automatic application configuration synchronization based on data analytics

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130075783A (ko) * 2010-10-13 2013-07-05 구글 인코포레이티드 복수의 디바이스들 사이에서의 연속적인 어플리케이션 실행
US20130204975A1 (en) * 2004-06-03 2013-08-08 Robert O. Keith, Jr. Applications as a service
KR20140031283A (ko) * 2011-05-09 2014-03-12 구글 인코포레이티드 디바이스들 간 애플리케이션 상태 전송
KR20140111313A (ko) * 2011-12-29 2014-09-18 이베이 인크. 전자 장치 사이에서 상태를 전송하는 시스템
US20140359637A1 (en) * 2013-06-03 2014-12-04 Microsoft Corporation Task continuance across devices

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2200383B1 (en) * 2008-12-18 2013-06-19 Koninklijke KPN N.V. Method of determining a location of a mobile device and method of managing a list for use in such a method
CN101882092B (zh) * 2010-05-11 2013-06-05 中兴通讯股份有限公司 一种应用程序的管理方法及装置
US8954597B2 (en) * 2010-06-28 2015-02-10 Hulu, LLC Method and apparatus for synchronizing paused playback across platforms
US9337999B2 (en) * 2011-04-01 2016-05-10 Intel Corporation Application usage continuum across platforms
US20130041790A1 (en) * 2011-08-12 2013-02-14 Sivakumar Murugesan Method and system for transferring an application state
US10620797B2 (en) * 2012-06-29 2020-04-14 Spotify Ab Systems and methods for multi-context media control and playback
US8990343B2 (en) * 2012-07-30 2015-03-24 Google Inc. Transferring a state of an application from a first computing device to a second computing device
US10425471B2 (en) * 2012-10-02 2019-09-24 Razer (Asia-Pacific) Pte. Ltd. Multi-tasker
KR20150125526A (ko) * 2014-04-30 2015-11-09 삼성전자주식회사 클라우드 서버, 화상형성장치 및 인쇄 제어 방법
US9430142B2 (en) * 2014-07-17 2016-08-30 Facebook, Inc. Touch-based gesture recognition and application navigation
US10200824B2 (en) * 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130204975A1 (en) * 2004-06-03 2013-08-08 Robert O. Keith, Jr. Applications as a service
KR20130075783A (ko) * 2010-10-13 2013-07-05 구글 인코포레이티드 복수의 디바이스들 사이에서의 연속적인 어플리케이션 실행
JP2014503861A (ja) * 2010-10-13 2014-02-13 グーグル・インク 複数のデバイス間の連続的アプリケーション実行
KR20140031283A (ko) * 2011-05-09 2014-03-12 구글 인코포레이티드 디바이스들 간 애플리케이션 상태 전송
KR20140111313A (ko) * 2011-12-29 2014-09-18 이베이 인크. 전자 장치 사이에서 상태를 전송하는 시스템
US20140359637A1 (en) * 2013-06-03 2014-12-04 Microsoft Corporation Task continuance across devices

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210003224A (ko) * 2018-06-01 2021-01-11 애플 인크. 원격 디바이스로부터의 직접 입력
KR20230007539A (ko) * 2018-06-01 2023-01-12 애플 인크. 원격 디바이스로부터의 직접 입력

Also Published As

Publication number Publication date
US20170054767A1 (en) 2017-02-23
JP2018526695A (ja) 2018-09-13
JP7340466B2 (ja) 2023-09-07
EP3338183A1 (en) 2018-06-27
KR102060676B1 (ko) 2019-12-30
CN107851035A (zh) 2018-03-27
JP2020074164A (ja) 2020-05-14
GB2556448A (en) 2018-05-30
KR101998313B1 (ko) 2019-10-01
GB2556448B (en) 2021-09-15
DE112016003732T5 (de) 2018-05-09
GB201716702D0 (en) 2017-11-29
JP6649403B2 (ja) 2020-02-19
WO2017030662A1 (en) 2017-02-23
KR20190083004A (ko) 2019-07-10

Similar Documents

Publication Publication Date Title
KR101998313B1 (ko) 디바이스들 간의 애플리케이션 상태 전달
US9325775B2 (en) Clipboard
US20150281869A1 (en) Native web-based application
US10437425B2 (en) Presenting a menu at a mobile device
US10775980B2 (en) Transferring notifications between devices
US20150200863A1 (en) System and method for updating timestamps in log data
US20150052473A1 (en) Presenting open windows and tabs
US20140123060A1 (en) Post-touchdown user invisible tap target size increase
US9740393B2 (en) Processing a hover event on a touchscreen device
US20150220151A1 (en) Dynamically change between input modes based on user input
US20140122644A1 (en) Computer-based exploration, research and control of tv
US20140040762A1 (en) Sharing a digital object
US8973016B1 (en) Processing an input event within an application
US9645982B2 (en) System and method for loading a web page
US20150205585A1 (en) Delayed compiling of scripting language code

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
A107 Divisional application of patent
GRNT Written decision to grant