KR102612883B1 - 다수의 디바이스들에 걸친 데이터 동기화 - Google Patents

다수의 디바이스들에 걸친 데이터 동기화 Download PDF

Info

Publication number
KR102612883B1
KR102612883B1 KR1020207033396A KR20207033396A KR102612883B1 KR 102612883 B1 KR102612883 B1 KR 102612883B1 KR 1020207033396 A KR1020207033396 A KR 1020207033396A KR 20207033396 A KR20207033396 A KR 20207033396A KR 102612883 B1 KR102612883 B1 KR 102612883B1
Authority
KR
South Korea
Prior art keywords
peer
data
electronic device
synchronization data
network
Prior art date
Application number
KR1020207033396A
Other languages
English (en)
Other versions
KR20200143487A (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 KR20200143487A publication Critical patent/KR20200143487A/ko
Application granted granted Critical
Publication of KR102612883B1 publication Critical patent/KR102612883B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/12Arrangements for remote connection or disconnection of substations or of equipment thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W56/00Synchronisation arrangements
    • H04W56/001Synchronization between nodes
    • H04W56/0015Synchronization between nodes one node acting as a reference for the others
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/10Connection setup
    • H04W76/14Direct-mode setup

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

일 실시예는 명령어들을 저장하는 비일시적 기계 판독가능 매체, 명령어들을 실행하는 하나 이상의 프로세서들, 및 하나 이상의 프로세서들에 커플링된 메모리를 포함하는 전자 디바이스를 제공한다. 메모리는, 전자 디바이스와 하나 이상의 애플리케이션들 사이의 상호작용과 연관된 동기화 데이터의 세트, 및 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로부터 송신될 동기화 데이터의 세트를 검색하여, 피어-투-피어 채널 또는 네트워크-기반 채널 중 하나로부터 전송 채널을 선택하고, 선택된 전송 채널을 통해 전자 디바이스로부터 하나 이상의 원격 디바이스들로 동기화 데이터의 세트를 송신하도록 하나 이상의 프로세서들을 구성하는 명령어들을 저장하도록 구성될 수 있다.

Description

다수의 디바이스들에 걸친 데이터 동기화
상호 참조
본 출원은 2019년 5월 23일자로 출원되고 발명의 명칭이 "Data Synchronization Across Multiple Devices"인 미국 특허 출원 제16/420,892호, 및 2018년 6월 3일자로 출원되고 발명의 명칭이 "Data Synchronization Across Multiple Devices"인 미국 가특허 출원 제 62/679,854호에 대한 우선권을 주장하며, 이로써, 이들 둘 모두는 본 명세서에 참고로 포함된다.
기술분야
본 개시내용은 일반적으로 전자 디바이스들에 관한 것이다. 보다 구체적으로, 본 개시내용은 다수의 전자 디바이스들에 걸친 데이터 동기화를 위한 시스템 및 연관된 방법들에 관한 것이다.
전자 디바이스들(예를 들어, 컴퓨터들, 테이블들, 모바일 폰들, 텔레비전들 등)은 점점 더 이동하고 점점 더 연결되고 있다. 추가로, 사용자들은 주어진 시간 기간 동안 다수의 전자 디바이스들과 상호작용할 수 있다. 예를 들어, 사용자는 일정 시간 기간 동안 모바일 폰을 사용하여 하나 이상의 애플리케이션들과 상호작용하고, 이어서 다른 시간 기간 동안 태블릿, 또는 랩톱 컴퓨터로 스위칭할 수 있다. 제1 디바이스가 애플리케이션(들)과 상호작용하는 데 사용되고 있을 때, 애플리케이션(들)과의 사용자 상호작용에 관한 다양한 데이터가 제1 디바이스 상에서 업데이트될 수 있다. 따라서, 제1 디바이스 상의 데이터를 하나 이상의 제2 디바이스들과 동기화시키기 위한 기법들은, 예를 들어, 다수의 연결된 디바이스들 중에서 데이터를 프로세싱하는 데 유용할 수 있다.
본 명세서에 설명된 실시예들은 다수의 전자 디바이스들에 걸쳐 데이터 입력을 동기화시키기 위한 기법들을 제공한다. 일부 실시예들에서, 본 명세서에 설명된 기법들은, 제1 전자 디바이스가, 데이터에 관한 다양한 파라미터들 및/또는 다양한 데이터 연결들의 이용가능성 및/또는 품질에 기초하여 전자 디바이스들 사이의 동기화 데이터의 송신을 위해 피어-투-피어 데이터 연결 또는 네트워크-기반 통신 사이에서 선택할 수 있게 한다.
일 실시예는 명령어들을 저장하는 비일시적 기계 판독가능 매체, 명령어들을 실행하는 하나 이상의 프로세서들, 및 하나 이상의 프로세서들에 커플링된 메모리를 포함하는 전자 디바이스를 제공한다. 메모리는, 전자 디바이스와 하나 이상의 애플리케이션들 사이의 상호작용과 연관된 동기화 데이터 세트, 및 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로부터 송신될 동기화 데이터의 세트를 검색하여, 피어-투-피어 채널 또는 네트워크-기반 채널 중 하나로부터 전송 채널을 선택하고, 선택된 전송 채널을 통해 전자 디바이스로부터 하나 이상의 원격 디바이스들로 동기화 데이터의 세트를 송신하도록 하나 이상의 프로세서들을 구성하는 명령어들을 저장하도록 구성될 수 있다.
일 실시예는 명령어들을 저장하는 비일시적 기계 판독가능 매체를 제공하며, 명령어들은, 전자 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하고, 동작들은, 전자 디바이스로부터 하나 이상의 원격 디바이스들로 송신될 동기화 데이터의 세트를 검색하는 것, 피어-투-피어 채널 또는 네트워크-기반 채널 중 하나로부터 전송 채널을 선택하는 것, 및 선택된 전송 채널을 통해 전자 디바이스로부터 하나 이상의 원격 디바이스들로 동기화 데이터의 세트를 송신하는 것을 포함한다.
본 실시예들의 다른 특징들이 첨부 도면 및 다음의 상세한 설명으로부터 자명할 것이다.
본 개시내용의 실시예들은 첨부한 도면의 도면들에서 제한이 아닌 예로서 예시되며, 첨부 도면에서 유사한 도면 부호들은 유사한 요소들을 지칭한다.
도 1은 일 실시예에 따른, 모바일 디바이스들에 대한 예시적인 네트워크 동작 환경의 블록도이다.
도 2는 일 실시예에 따른, 동기화를 위한 데이터 항목들을 안전하게 저장하기 위한 시스템을 예시하는 도면이다.
도 3은 실시예들에 따른, 다수의 디바이스들에 걸친 데이터 동기화가 구현될 수 있는 전자 디바이스의 아키텍처에서의 컴포넌트들의 개략도이다.
도 4는 실시예들에 따른, 다수의 디바이스들에 걸친 데이터 동기화가 구현될 수 있는 환경의 개략도이다.
도 5는 본 명세서에 설명된 실시예들에 따른, 전자 디바이스들을 발견하고 이들을 연결시키는 데 사용되는 발견 프로세스의 동작들의 흐름도이다.
도 6은 실시예들에 따른, 다수의 디바이스들에 걸친 데이터 동기화를 위한 방법의 흐름도이다.
도 7은 실시예들에 따른, 다수의 디바이스들에 걸친 데이터 동기화를 위한 방법의 흐름도이다.
도 8a 내지 도 8c는 실시예들에 따른, 디바이스 활동 동기화를 예시하는 블록도들이다.
도 9는 디바이스 활동 동기화의 흐름도를 예시한다.
도 10은 일부 실시예들에서 사용될 수 있는 예시적인 API 아키텍처를 예시하는 블록도이다.
도 11a 및 도 11b는 실시예들에 따른, 예시적인 API 소프트웨어 스택들의 블록도들이다.
도 12는 일 실시예에 따른, 모바일 디바이스 아키텍처의 블록도이다.
도 13은 본 개시내용의 실시예들 중 하나 이상과 함께 사용될 수 있는 예시적인 컴퓨팅 시스템을 예시하는 블록도이다.
본 명세서에 설명된 실시예들은 전자 디바이스들에 대한 원격 데이터 입력을 관리하기 위한 기법들을 제공한다. 아래에서 논의되는 상세사항들을 참조하여 다양한 실시예들 및 양태들이 설명될 것이고, 첨부된 도면들은 다양한 실시예들을 예시할 것이다. 하기의 설명 및 도면들은 예시적이며, 제한적인 것으로 해석되어서는 안 된다. 많은 구체적인 상세사항들이 다양한 실시예들의 철저한 이해를 제공하기 위해 설명된다. 그러나, 특정 예들에서, 주지된 또는 종래의 상세사항들은 실시예들의 간결한 논의를 제공하기 위해 설명되지 않는다.
본 명세서에서의 "하나의 실시예" 또는 "일 실시예"에 대한 언급은 그 실시예와 관련하여 설명된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 본 명세서 내의 여러 곳에 나오는 문구 "하나의 실시예에서"는 반드시 모두 동일한 실시예를 언급하는 것은 아니다. 뒤따르는 도면들에 묘사된 프로세스들은 하드웨어(예를 들어, 회로부, 전용 로직), (비일시적 기계 판독가능 저장 매체 상의 명령어들과 같은) 소프트웨어, 또는 하드웨어와 소프트웨어 둘 모두의 조합을 포함하는 프로세싱 로직에 의해 수행된다. 이제, 실시예들이 상세하게 참조될 것이며, 그 실시예들의 예들이 첨부 도면들에 예시된다. 하기의 상세한 설명에서, 많은 구체적인 상세사항들이 본 발명의 완전한 이해를 제공하기 위해 기재된다. 그러나, 본 발명이 이들 구체적인 상세사항들 없이 실시될 수 있다는 것은 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에게 명백할 것이다. 다른 예들에서, 잘 알려진 방법들, 절차들, 컴포넌트들, 회로들, 및 네트워크들은 실시예들의 양태들을 불필요하게 모호하게 하지 않기 위해 상세히 설명되지 않았다.
용어들 "제1", "제2" 등이 다양한 요소들을 설명하기 위해 본 명세서에서 사용될 수 있지만, 이들 요소들은 이들 용어들에 의해 제한되어서는 안 된다는 것이 또한 이해될 것이다. 이러한 용어들은 하나의 요소를 다른 요소와 구별하는 데에만 사용된다. 예를 들어, 본 발명의 범주로부터 벗어남이 없이, 제1 접촉이 제2 접촉으로 지칭될 수 있고, 유사하게, 제2 접촉이 제1 접촉으로 지칭될 수 있다. 제1 접촉 및 제2 접촉은 둘 다 접촉이지만, 그들이 동일한 접촉인 것은 아니다.
본 명세서에서 본 발명의 설명에 사용되는 용어는 특정 실시예들을 설명하기 위한 목적이며, 본 발명을 제한하려는 의도는 아니다. 본 발명의 설명 및 첨부된 특허청구범위에 사용되는 바와 같이, 단수의 형태("a", "an" 및 "the")는 문맥상 명백히 다르게 나타나지 않는다면 복수의 형태들도 마찬가지로 포함하려는 것으로 의도된다. 또한, 본 명세서에서 사용되는 바와 같은 용어 "및/또는"은 열거되는 연관된 항목들 중 하나 이상의 항목들의 임의의 그리고 모든 가능한 조합들을 나타내고 그들을 포괄하는 것임이 이해될 것이다. 본 명세서에서 사용될 때 "포함한다(include)", 및/또는 포함하는(comprising)"이라는 용어들은 진술되는 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 컴포넌트들의 존재를 특정하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다는 것이 추가로 이해될 것이다.
본 명세서에서 사용되는 바와 같이, 용어 "~는 경우(if)"는 문맥에 따라 "~할 때(when)" 또는 "~할 시(upon)" 또는 "결정하는 것에 응답하여(in response to determining)" 또는 "검출하는 것에 응답하여(in response to detecting)"를 의미하는 것으로 해석될 수 있다. 유사하게, 문구 "결정되는 경우" 또는 "[진술된 상태 또는 이벤트가] 검출되는 경우"는 문맥에 따라 "결정 시" 또는 "결정하는 것에 응답하여" 또는 "[진술된 상태 또는 이벤트] 검출 시" 또는 "[진술된 상태 또는 이벤트를] 검출하는 것에 응답하여"를 의미하는 것으로 해석될 수 있다.
컴퓨팅 디바이스들, 그러한 디바이스들을 위한 사용자 인터페이스들, 및 그러한 디바이스들을 사용하기 위한 연관된 프로세스들의 실시예들이 설명된다. 일부 실시예들에서, 컴퓨팅 디바이스는 PDA 및/또는 음악 재생기 기능들과 같은 다른 기능들을 또한 포함하는, 이동 전화기와 같은 휴대용 통신 디바이스이다. 휴대용 다기능 디바이스들의 예시적인 실시예들은 미국 캘리포니아주 쿠퍼티노 소재의 애플 컴퓨터 인크.(Apple Computer, Inc.)로부터의 아이폰(iPhone)®, 아이패드(iPad®), 및 아이팟 터치(iPod Touch)® 디바이스들을 제한 없이 포함한다.
본 개시내용의 일부는 저작권 보호의 대상이 되는 자료를 포함한다. 저작권 소유자는 특허청 특허 파일들 또는 기록들에 나타나는 것과 같은, 누군가에 의한 특허 문헌 또는 특허 개시내용의 팩시밀리 복제에 이의가 없지만, 그 이외에는 그게 무엇이든 모든 저작권 권한들을 보유한다. 저작권 2018 애플 인크.
이하의 논의에서, 터치 감응형 디스플레이를 포함하는 컴퓨팅 디바이스가 설명된다. 그러나, 컴퓨팅 디바이스가 별개의 디스플레이, 물리적 키보드, 마우스, 및/또는 조이스틱과 같은 하나 이상의 다른 물리적 사용자 인터페이스 디바이스들을 포함할 수 있다는 것이 이해되어야 한다. 본 명세서에 설명된 전자 디바이스들은 다음 중 하나 이상과 같은 다양한 애플리케이션들을 지원한다: 메모하기 애플리케이션, 그리기 애플리케이션, 프레젠테이션 애플리케이션, 워드 프로세싱 애플리케이션, 웹사이트 제작 애플리케이션, 디스크 저작 애플리케이션, 스프레드시트 애플리케이션, 게임 애플리케이션, 전화 애플리케이션, 화상 회의 애플리케이션, 이메일 애플리케이션, 인스턴트 메시징 애플리케이션, 피트니스 애플리케이션, 사진 관리 애플리케이션, 디지털 카메라 애플리케이션, 디지털 비디오 카메라 애플리케이션, 웹 브라우징 애플리케이션, 디지털 음악 재생기 애플리케이션, 디지털 비디오 재생기 애플리케이션, 및/또는 홈 자동화 애플리케이션.
디바이스 상에서 실행될 수 있는 다양한 애플리케이션들은 터치 감응형 표면과 같은 적어도 하나의 보편적인 물리적 사용자 인터페이스 디바이스를 사용할 수 있다. 터치 감응형 표면의 하나 이상의 기능들뿐만 아니라 디바이스 상에 디스플레이되는 대응하는 정보는 조정될 수 있고 그리고/또는 하나의 애플리케이션으로부터 다음 애플리케이션으로 그리고/또는 개별 애플리케이션 내에서 변화될 수 있다. 이러한 방식으로, 디바이스의 (터치 감응형 표면과 같은) 보편적인 물리적 아키텍처는 직관적이고 명료한 사용자 인터페이스들을 이용하여 다양한 애플리케이션들을 지원할 수 있다.
일부 프로세스들은 일부 순차적 동작들의 관점들에서 아래에서 설명된다. 그러나, 설명된 동작들 중 일부가 상이한 순서들로 수행될 수 있다는 것을 인식해야 한다. 또한, 일부 동작들은 순차적인 대신에 동시에 수행될 수 있다.
도 1은 일 실시예에 따른, 모바일 디바이스들에 대한 예시적인 네트워크 동작 환경(100)의 블록도이다. 모바일 디바이스(102A) 및 모바일 디바이스(102B)는, 예를 들어, 데이터 통신을 수행하기 위해 하나 이상의 유선 및/또는 무선 네트워크들(110)을 통해 통신할 수 있다. 예를 들어, 무선 네트워크(112), 예를 들어 셀룰러 네트워크가 게이트웨이(116)의 사용에 의해 인터넷과 같은 광역 네트워크(WAN)(114)와 통신할 수 있다. 마찬가지로, 모바일 핫스팟 무선 액세스 디바이스와 같은 액세스 디바이스(118)가 광역 네트워크(114)에 대한 통신 액세스를 제공할 수 있다.
일부 구현예들에서, 음성 및 데이터 통신들 둘 모두가 무선 네트워크(112) 및/또는 액세스 디바이스(118)를 통해 확립될 수 있다. 예를 들어, 모바일 디바이스(102A)는 (예를 들어, VoIP 프로토콜들을 사용하여) 전화들을 걸고 받을 수 있고, (예를 들어, POP3을 사용하여) 이메일 메시지들을 전송 및 수신할 수 있고, (예를 들어, TCP/IP 또는 UDP를 사용하여) 무선 네트워크(112), 게이트웨이(116), 및 광역 네트워크(114)를 통해 웹 페이지들, 사진들, 및 비디오들과 같은 전자 문서들 및/또는 스트림들을 검색할 수 있다. 일부 구현예들에서, 모바일 디바이스(102A)는 전화들을 걸고 받을 수 있고, 이메일 메시지들을 전송 및 수신할 수 있고, 액세스 디바이스(118) 및 광역 네트워크(114)를 통해 전자 문서들을 검색할 수 있다. 일부 구현예들에서, 모바일 디바이스(102A) 또는 모바일 디바이스(102B)는, 예를 들어, 하나 이상의 케이블들을 사용하여 액세스 디바이스(118)에 물리적으로 연결될 수 있으며, 여기서, 액세스 디바이스(118)는 개인용 컴퓨터이다. 이러한 구성에서, 모바일 디바이스(102A) 또는 모바일 디바이스(102B)는 "테더링된(tethered)" 디바이스로 지칭될 수 있다. 일 실시예에서, 모바일 디바이스(102A)는 무선 피어-투-피어 연결(120)을 통해 모바일 디바이스(102B)와 통신할 수 있다. 무선 피어-투-피어 연결(120)은 디바이스들 사이에서 데이터를 동기화시키는 데 사용될 수 있다.
모바일 디바이스(102A) 또는 모바일 디바이스(102B)는 하나 이상의 유선 및/또는 무선 네트워크들(110)을 통해 전화통신 서비스(130), 메시징 서비스(140), 미디어 서비스(150), 및 저장 서비스(160)와 같은 하나 이상의 서비스들과 통신할 수 있다. 예를 들어, 전화통신 서비스(130)는 모바일 디바이스(102A)와 모바일 디바이스(102B) 사이, 또는 모바일 디바이스와 유선 전화 디바이스 사이의 전화 통신을 가능하게 할 수 있다. 전화통신 서비스(130)는 광역 네트워크(114)를 통해 VoIP(voice over IP) 통화들을 라우팅할 수 있거나, 셀룰러 보이스 네트워크(예를 들어, 무선 네트워크(112))에 액세스할 수 있다. 메시징 서비스(140)는 예를 들어, 이메일 및/또는 다른 메시징 서비스들을 제공할 수 있다. 미디어 서비스(150)는 예를 들어, 노래 파일들, 오디오 북들, 영화 파일들, 비디오 클립들, 및 다른 미디어 데이터와 같은 미디어 파일들에 대한 액세스를 제공할 수 있다. 저장 서비스(160)는 문서들 및 미디어 파일들을 저장하기 위해 모바일 디바이스(102A) 및 모바일 디바이스(102B)에 네트워크 저장 능력들을 제공할 수 있다. 운영 체제 소프트웨어 또는 모바일 디바이스들 상의 클라이언트 소프트웨어를 업데이트하기 위한 소프트웨어 업데이트 서비스를 포함한 다른 서비스들이 또한 제공될 수 있다. 일 실시예에서, 메시징 서비스(140), 미디어 서비스(150), 및 저장 서비스(160)는 각각 클라우드 서비스 제공자와 연관될 수 있다.
도 2는 일 실시예에 따른, 동기화를 위한 데이터 항목들을 안전하게 저장하기 위한 시스템(200)을 예시하는 도면이다. 시스템(200)은 제1 디바이스(202), 제2 디바이스(204), 제3 디바이스(206), 및 원격 저장 위치(208)를 포함한다. 제1 디바이스(202), 제2 디바이스(204), 제3 디바이스(206), 및 원격 저장 위치(208)는 하나 이상의 네트워크들(210)을 사용하여 함께 통신가능하게 커플링된다. 하나 이상의 네트워크들(210)은 유선 및 무선 네트워크들 둘 모두를 포함할 수 있다. 네트워크(210)는, 예를 들어, 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷의 일부일 수 있다.
제1 디바이스(202), 제2 디바이스(204), 및 제3 디바이스(206)는, 예를 들어, 데스크톱 또는 랩톱 컴퓨팅 디바이스들, 모바일 디바이스들, 태블릿 디바이스들, 개인 데이터 어시스턴트들, 웨어러블 디바이스들, 텔레비전 또는 텔레비전 셋톱 박스들, 스마트 스피커 디바이스들, 또는 다른 컴퓨팅 디바이스들을 포함할 수 있다. 특히, 제1 디바이스(202) 및 제2 디바이스(204) 각각은 제1 사용자 또는 사용자 계정(212)과 연관될 수 있다. 유사하게, 제3 디바이스(206), 및 도시되지 않은 하나 이상의 다른 디바이스들은 제2 사용자 또는 사용자 계정(214)과 연관될 수 있다. 원격 저장 위치(208)는 하나 이상의 상이한 사용자들 또는 상이한 사용자 계정들과 연관되는, 도시되지 않은 많은 다른 디바이스들에 부가적으로 커플링될 수 있다.
일 실시예에서, 디바이스들은 각각의 계정에 대한 고유 또는 준-고유 계정 키 또는 계정 식별자와 각각의 디바이스에 대한 고유 또는 준-고유 디바이스 키 또는 디바이스 식별자 사이의 연관성을 형성함으로써 개개의 사용자들 또는 사용자 계정들과 연관될 수 있다. 예를 들어, 제1 디바이스(202) 및 제2 디바이스(204)에 대한 키 또는 디바이스 식별자는 사용자 또는 사용자 계정(212)에 대한 키 또는 계정 식별자와 연관될 수 있다. 제3 디바이스(206)에 대한 키 또는 디바이스 식별자는 사용자 또는 사용자 계정(214)에 대한 키 또는 사용자 계정 식별자와 연관될 수 있다. 그러한 연관성은 원격 저장 위치(208) 상의 계정-기반 저장소에 대한 인증된 액세스를 가능하게 하는 데 사용될 수 있다.
원격 저장 위치(208)는 단일 저장 위치 또는 다수의 저장 위치들일 수 있다. 예를 들어, 서버, 네트워크 어드레싱된 저장 위치, 컴퓨팅 디바이스들의 집합, 또는 가상화된 네트워크 저장을 제시하는 클라우드 저장 시스템의 일부로서 이루어진다. 원격 저장 위치(208)는 상이한 사용자들/사용자 계정들 및 애플리케이션 조합들로부터의 데이터를 저장하기 위한 별개의 로직 컨테이너들을 포함한다. 일부 예들에서, 로직 컨테이너는 파일 시스템에서의 디렉토리, 데이터 구조, 데이터베이스, 또는 다른 종류의 데이터 조직 유닛일 수 있다. 예를 들어, 제1 사용자 또는 사용자 계정(212)은 사용자 또는 사용자 계정과 연관된 각각의 개별 애플리케이션에 대해 하나씩, 원격 저장 위치(208) 상의 컨테이너(216)를 가질 수 있다. 유사하게, 제2 사용자 또는 사용자 계정(214)은 개개의 애플리케이션들에 대한 컨테이너(218)들을 가질 수 있다. 개별 디바이스들(예를 들어, 제1 디바이스(202))로부터 수신된 애플리케이션 데이터 항목들은 그 애플리케이션에 대한 개개의 컨테이너들에 저장된다. 원격 저장 위치(208)는 컨테이너를 생성 및 관리할 뿐만 아니라 디바이스들에 대한 통지들을 생성할 수 있는 저장 관리자를 포함할 수 있다.
제1 디바이스(202)는 하나 이상의 애플리케이션들(220), 동기화 관리자(222), 및 액세스 관리자(224)를 포함한다. 하나 이상의 애플리케이션들(220)은 생산성 애플리케이션들, 시스템 애플리케이션들, 게임들 등과 같은 다양한 유형들의 애플리케이션들을 포함할 수 있다. 각각의 애플리케이션은 애플리케이션을 식별하고 그 애플리케이션의 특정 액세스 허가들을 식별하는 데 사용될 수 있는 고유 키 또는 다른 식별자와 연관될 수 있다. 일부 구현예들에서, 하나 이상의 애플리케이션들(220)은 각각의 애플리케이션이 서로 다른 애플리케이션으로부터 격리되도록 샌드박싱된다.
동기화 관리자(222)는 원격 저장 위치(208)로 데이터 항목들을 전송하는 것, 및 원격 저장 위치(208)로부터 정보(예를 들어, 데이터 항목들 또는 통지들)를 수신하는 것을 관리한다. 액세스 관리자(224)는 개개의 애플리케이션들로부터의 질의에 응답하여 애플리케이션들(220) 중 특정 애플리케이션들에 이용가능한 데이터 항목들을 제시한다. 액세스 관리자(224)는 애플리케이션들(220) 중 특정 애플리케이션에 어떤 데이터 항목들이 보일 것인지를 결정하기 위해 하나 이상의 액세스 정책들을 적용한다. 일부 실시예들에서, 데이터 동기화 관리자(222) 및 액세스 관리자(224)는 전자 디바이스들의 프로세서들 중 하나 이상 상에서 실행가능한 로직 명령어들의 형태로 메모리에 상주할 수 있다. 일 실시예에서, 데이터 동기화 관리자(222) 및 액세스 관리자(236)는 또한 제1 디바이스(202) 내의 내장된 마이크로제어기 상에서 실행가능한 로직으로서 구현될 수 있다.
제2 디바이스(204)는 유사하게 하나 이상의 애플리케이션들(226), 동기화 관리자(228), 및 액세스 관리자(230)를 포함한다. 애플리케이션(220) 및 애플리케이션(226)은 동일한 애플리케이션들 중 하나 이상을 포함할 수 있다. 제3 디바이스(206)는 유사하게 하나 이상의 애플리케이션들(232), 동기화 관리자(234), 및 액세스 관리자(236)를 포함한다. 제2 디바이스(204) 및 제3 디바이스(206)의 예시된 요소들은 제1 디바이스(202)에 관해 설명된 요소들과 유사한 방식으로 기능할 수 있다.
도 3은 일 실시예에 따른, 다수의 디바이스들에 걸친 데이터 동기화가 구현될 수 있는 아키텍처에서의 컴포넌트들의 개략도이다. 일 실시예는 메모리(330) 및 통신 인터페이스(340)에 통신가능하게 커플링된 하나 이상의 프로세서들(320)을 포함하는 통신 장치(310)를 제공한다. 통신 장치(310)는 디바이스들 사이의 전자 통신을 용이하게 하기 위해 본 명세서에 설명된 전자 디바이스들 중 임의의 것에 포함될 수 있다. 일 실시예에서, 데이터 동기화 관리자(332)는 메모리(330)에 상주할 수 있고, 하나 이상의 프로세서들(320)에 의해 실행될 수 있다. 통신 인터페이스(340)는 하나 이상의 통신 채널들(350)을 통해 통신 장치(310)와 하나 이상의 원격 디바이스들(360) 사이의 통신 연결을 제공하도록 구성될 수 있다. 일 실시예에서, 연결 채널들(350)은 네트워크 중심 통신 채널(352) 또는 피어-투-피어 통신 채널(354)을 포함하는 것을 포함할 수 있다. 일부 실시예들에서, 통신 장치(310)는 집적 회로 디바이스 또는 그의 일부로서 구현될 수 있다.
일 실시예에서, 하나 이상의 프로세서들(320)은 애플리케이션 프로세서를 대신하여 원격 디바이스들(360)과의 통신 채널(350)을 확립할 수 있는 무선 기저대역 프로세서들일 수 있다. 통신 장치(310)는, 전자 디바이스의 애플리케이션 프로세서들이 저전력 또는 슬립 상태에 있는 동안 원격 디바이스들(360)과의 통신 채널들(350)들을 유지할 수 있다. 일부 구성들에서, 전자 디바이스는, 디바이스의 하나 이상의 컴포넌트들이 저전력 상태로 진입하는 웨이크 온 무선(wake on wireless) 상태로 진입할 수 있는 반면, 하나 이상의 프로세서들(320)은 하나 이상의 원격 디바이스들(360)에 의해 송신된 메시지들을 수신하기 위해 적어도 부분적으로 활성 상태를 유지할 수 있다. 하나 이상의 프로세서들(320)은, 수신된 데이터 또는 메타데이터에 기초하여, 디바이스를 활성 상태로 웨이크하거나 또는 디바이스에 대한 저전력 상태를 유지할 수 있다.
도 4는 일부 실시예들에 따른, 다수의 디바이스들에 걸친 데이터 동기화가 구현될 수 있는 네트워크 환경(400)의 개요의 개략도이다. 도 4를 참조하면, 네트워크 환경(400)은 태블릿 컴퓨터(402A), 데스크톱 컴퓨터(402B), 텔레비전 또는 셋톱 박스(402C), 모바일 폰(402E), 웨어러블 디바이스(402F), 및/또는 랩톱 컴퓨터(402G)와 같은 하나 이상의 전자 디바이스들을 포함할 수 있으며, 이들은 총괄하여 전자 디바이스들(402)로 지칭될 수 있다. 서로의 범위 내의 전자 디바이스들(402)은 직접 통신 링크(예를 들어, 블루투스 링크, 적외선(IR) 링크 등)를 통해 피어-투-피어 통신 채널을 확립할 수 있다. 추가로, 전자 디바이스들(402)은 직접적으로 또는 기지국(430)에 대한 연결을 통해 네트워크(420)에 연결될 수 있다. 기지국(430)은, 예를 들어, 네트워크 액세스를 전자 디바이스들(402)에 제공하는 네트워크 액세스 디바이스(예를 들어, 라우터, 셀룰러 기지국 등)일 수 있다.
네트워크(420)는 로컬 영역 네트워크(LAN), 광역 네트워크(WAN), 또는 이들의 조합과 같은 임의의 적합한 유형의 유선 또는 무선 네트워크일 수 있다. LAN은 이더넷, 무선 LAN(예를 들어, Wi-Fi), 및/또는 무선 개인 영역 네트워크들(WPAN)과 같은(그러나 이에 제한되지 않음) 다양한 네트워크 연결 기술들을 사용하여 구현될 수 있다. 네트워크(420)를 통한 LAN 통신은 송신 제어 프로토콜(TCP) 및 인터넷 프로토콜(IP)과 같은(그러나 이에 제한되지 않음) 네트워크 프로토콜을 사용하여 수행될 수 있다. WAN은 동기식 광학 네트워킹(SONET) 및 동기식 디지털 계층구조(SDH)와 같은(그러나 이에 제한되지 않음) 프로토콜들을 사용하여 광섬유 및 구리 케이블링을 포함하는 다양한 물리 계층 유형들에 걸쳐 구현될 수 있다.
다양한 전자 디바이스들(402)은 하나 이상의 서버들(440) 상에 위치된 원격 저장 위치와의 연결을 확립할 수 있다. 원격 저장 위치는, 예를 들어 도 2의 원격 저장 위치(208)일 수 있다. 하나 이상의 서버들(440) 상의 원격 저장 위치는 전자 디바이스들(402) 사이의 데이터를 동기화시키는 데 사용될 수 있다. 동기화된 데이터 저장소에 부가하여, 전자 디바이스들(402)은, 하나 이상의 서버들 상의 계정 또는 계정들의 패밀리와 연관되면, 디바이스 거동 및/또는 디바이스들 사이의 활동 정보를 동기화시킬 수 있다. 동기화된 디바이스 거동 또는 활동 정보는, 예를 들어, 디바이스 이동 데이터, 사용자 건강 데이터, 및/또는 특정 애플리케이션을 사용하여 소비된 시간의 양을 포함할 수 있다. 동기화될 수 있는 다른 유형들의 디바이스 거동 또는 사용자 정보가 아래에서 설명된다.
디바이스 거동 동기화는 사용자가 디바이스로부터 디바이스로 전환함에 따라 디바이스들 사이의 끊김없는 전환을 용이하게 할 수 있다. 예를 들어, 태블릿 컴퓨터(402A) 상에서 수행되는 사용자 액션들 또는 활동은 사용자가 태블릿 컴퓨터(402A)의 사용으로부터 모바일 폰(402E)으로 전환할 때 사용자의 모바일 폰(402E)과 동기화될 수 있다. 일 실시예에서, 디바이스 거동 또는 활동 정보는 환경(400) 내의 예시된 전자 디바이스들(402) 중 임의의 것 사이에서 전환될 수 있다. 동기화는 하나 이상의 서버들(440)을 사용하여 네트워크(420)를 통해 수행될 수 있거나, 전자 디바이스들(402) 사이의 피어-투-피어 연결을 통해 수행될 수 있다.
피어-투-피어 통신 채널이 전자 디바이스들(402) 사이에 확립되기 전에, 피어 발견 및 페어링 프로세스가 디바이스들 사이에서 수행된다. 피어 발견 프로세스는, 데이터가 전자 디바이스들(402) 사이에서 동기화되기 위해 이용가능하기 전에 전자 디바이스들(402)이 그들 사이의 연결들을 발견하고 선제적으로 확립할 수 있게 한다. 일부 경우들에서, 피어 발견 프로세스는 또한, 전자 디바이스들(402)의 통신이 발생해야 한다는 사용자 검증을 포함할 수 있다. 일부 실시예들에서, 피어 발견은, 무선 또는 다른 네트워크 상에서 디바이스들 및/또는 서비스들을 위치파악하는 것을 용이하게 하는 기존의 서비스 발견 프로토콜들, 예컨대 UPnP 포럼에 의해 개발된 SSDP(Simple Service Discovery Protocol) 또는 애플 인크.에 의해 개발된 Bonjour 네트워킹 기술(IETF RFC 6762 및 IETF RFC 6763으로서 공개되고, 본 명세서에서 "Bonjour"로 지칭됨)을 활용할 수 있다. 디바이스 발견 서비스에서, 디바이스는 그것의 존재, 주소, 및 선택적으로 그것의 능력들에 대한 부가적인 정보를 표시하는 정보를 광고할 수 있다. 다른 디바이스들은 광고들을 브라우징하고, 브로드캐스트 정보에 기초하여 관심있는 디바이스들을 식별할 수 있다. 광고된 주소를 사용하여, 브라우징 디바이스는 광고자와의 통신을 개시할 수 있다.
네트워크 및 발견 서비스에 따라, 광고는, 선택적으로, (예를 들어, 멀티캐스트 또는 비콘 신호를 통한) 정보의 실시간 브로드캐스팅, 및/또는 다른 디바이스들이 정보를 검색할 수 있는 중앙 저장소(예를 들어, 네트워크 액세스 포인트에 있음)에 광고 정보를 제공하는 것을 포함할 수 있다. 광고들의 브라우징은 브로드캐스트 광고들을 검출하는 것 및/또는 중앙 저장소로부터 광고 정보를 검색하는 것을 포함할 수 있다. 일부 실시예들에서, 전기 콘센트와 같은 전원에 부착된 전자 디바이스들은 피어-투-피어 연결 서비스에 대한 광고 및 발견을 계속 수행할 수 있다. 모바일 사용자 디바이스들은 사용자 디바이스의 위치에 기초하여 피어-투-피어 연결 서비스의 발견을 가능하게 할 수 있다. 예를 들어, 그리고 일 실시예에서, 지오-펜스 트리거가 모바일 디바이스 상에서 인에이블되어, 모바일 디바이스가 사용자 디바이스의 홈 위치로서 지정된 위치에 지리학적으로 근접해 있을 때 피어-투-피어 연결 발견이 인에이블되도록 한다.
전자 디바이스들(402) 중 하나가 전자 디바이스들(402) 중 다른 하나에 의해 발견될 때, 네트워크 데이터 연결(예를 들어, TCP, UDP 등)이 디바이스들 사이에서 확립될 수 있다. 광고 및 발견 둘 모두를 수행하고 있는 디바이스들 사이의 연결 경쟁들을 피하기 위해, 사전 편집 순으로 더 낮은 영구 식별자(persistent identifier)를 갖는 디바이스가 디바이스들 사이의 연결을 개시한다. 디바이스의 영구 식별자는 발견 서비스를 통해 광고되는 익명화된 식별자로부터 도출된다. 일 실시예에서, 광고된 정보에 기초하여 영구 식별자를 도출하는 것은 이전에 수행된 페어링 프로세스를 통해 교환되는 데이터를 이용한다. 그러한 실시예에서, 예를 들어 디바이스들이 서로의 무선 라디오 범위 내에 있는 경우와 같이, 디바이스들 사이에서 일부 형태의 데이터 교환이 수행될 때까지 디바이스들 사이에 데이터 연결이 확립될 수 없다. 대안적으로, 디바이스들은 각각, 공유된 비밀 데이터를 소유하게 되며, 이는, 디바이스들이 각각 사용자 계정들의 패밀리의 사용자 계정과 연관되면 디바이스들에 분산될 수 있다. 이러한 사전 연결 데이터 교환은 전자 디바이스들(402)이 피어-투-피어 연결을 확립하는 데 사용될 수 있는 각각의 디바이스에 대한 영구 식별자를 습득할 수 있게 할 수 있다. 일단 데이터 연결이 확립되면, 보안 통신 세션이 공동 스마트 홈 디바이스와 컴패니언 디바이스 사이에 확립될 수 있다. 이어서, 공동 스마트 홈 디바이스 및 연결된 컴패니언 디바이스는 존재 및 도달가능성 정보를 교환할 수 있다. 일단 상호연결되면, 데이터가 피어-투-피어 연결을 통해 교환되고 있지 않을 때, 전자 디바이스들(402)은 필요에 따라 웨이크-온-무선(WoW) 상태로 진입할 수 있다. 일 실시예에서, 전원에 연결되는 전자 디바이스는 제1 메시지 레이턴시를 감소시키기 위해 활성으로 유지될 수 있다.
전자 디바이스들(402) 사이에서 연결성이 손실되는 경우, 발견 서비스는 재인에이블되고 로컬 네트워크 상에서 디바이스를 검색하는 데 사용될 수 있다. 없어진 디바이스가 재발견되면, 디바이스들 사이의 데이터 연결이 재확립될 수 있다. 없어진 디바이스가 발견될 수 없으면, 없어진 디바이스의 레코드들에서의 상태 발견 서비스 정보가 재확인되고 정리된다. 이어서, 검색 디바이스는 보안 인터넷 세션을 통해 없어진 디바이스와의 통신을 확립하려고 시도할 수 있다. 일 실시예에서, 데이터 연결을 확립할 때 교환되는 존재 및 도달가능성 정보의 일부는 디바이스 식별자, 식별자 토큰, 중계 식별자, 또는 예를 들어 피어-투-피어 또는 중계된 인터넷 연결을 통해 없어진 디바이스와의 메시지 교환을 가능하게 하거나 그에 도달하는 데 사용될 수 있는 다른 형태의 식별 토큰을 포함한다. 보안 인터넷 연결이 이전에 없어진 디바이스와 네트워크(420)를 통해 성공적으로 확립될 수 있으면, 피어-투-피어 연결 메시지들이 보안 인터넷 연결을 통해 교환될 수 있다.
상호연결된 전자 디바이스들(402)이 네트워크(420) 위에 (예를 들어, 인터넷 기반 연결을 통해) 연결되고, 로컬 연결이 이용가능하게 되는 경우, 피어-투-피어 연결이 전자 디바이스들(402)을 통해 확립될 수 있다. 예를 들어, 모바일 폰(402E)이 지오-펜스 경계를 가로질렀다면, 모바일 폰(402E)은 검색 프로토콜(예를 들어, SSDP, Bonjour 등)이 다른 전자 디바이스들(402)을 검색할 수 있게 할 수 있다. 일 실시예에서, 연결된 전자 디바이스들(402) 사이에서 연결이 손실될 때마다 또는 디바이스들이 더 나은 연결이 이용가능하다고 결정하면, 연결 스위칭이 수행될 수 있다. 로컬 연결들은, 로컬 연결들이 아마도 더 낮은 레이턴시이기 때문에, 인터넷 연결들보다 선호될 수 있다. 부가적으로, 인터넷 연결 대신에 로컬 연결을 유지하는 것은 디바이스 및 인프라구조 관점에서 덜 리소스 집약적일 수 있다. 예를 들어, 디바이스 거동 또는 활동 동기화가 네트워크(420)를 통하여 하나 이상의 서버들(440)을 통해 전자 디바이스들(402) 사이에서 발생하는 경우, 전자 디바이스들(402) 사이의 데이터 교환의 레이트는 서버 요구로 인해 스로틀링될 수 있다. 일 실시예에서, 전자 디바이스(402)는 전자 디바이스(402)에 대한 특정된 업데이트 간격 동안에만 하나 이상의 서버들(440)에 소정 유형들의 데이터에 대한 업데이트들을 제공할 수 있다. 추가적인 업데이트들은 다음 업데이트 간격까지 지연될 수 있다. 그러나, 전자 디바이스들(402) 사이의 로컬 데이터 교환은 디바이스들 사이의 피어-투-피어 연결을 사용하여 스로틀링되지 않게 더 낮은 레이턴시로 발생할 수 있다. 일 실시예에서, 전자 디바이스들이 확립된 신뢰 관계를 갖는다면, 다양한 피어-투-피어 연결은 메시-의존(mesh-rely)으로서 사용되어 전자 디바이스들(402)의 세트에 걸쳐 디바이스 활동 업데이트들을 전파할 수 있다.
일 실시예에서, 웨어러블 디바이스(402F)(예를 들어, 전자 시계 디바이스 또는 다른 웨어러블 전자 액세서리)와 같은 일부 디바이스들은 피어-투-피어 채널(354)을 통해 다른 디바이스(예를 들어, 모바일 폰 디바이스(402E))와 데이터를 동기화시키면서, 또한 네트워크(420)를 통해 네트워크 중심 채널(352)을 통하여 연결을 통해 데이터를 동기화시킬 수 있다. 예를 들어, 웨어러블 디바이스(402F)는 모바일 폰 디바이스(402E)와 같은 컴패니언 전자 디바이스와의 1차 동기화 채널을 가질 수 있다. 웨어러블 디바이스(402F)는 또한, 예를 들어, 웨어러블 디바이스(402F)가 충전하고 있는 동안 네트워크 중심 채널(352)을 통해 동기화 데이터를 수신할 수 있다. 일 실시예에서, 웨어러블 디바이스(402F)와 동기화될 일부 데이터는 모바일 폰 디바이스(402E) 또는 다른 컴패니언 디바이스와 동기화될 수 있다. 웨어러블 디바이스(402F)와 모바일 폰(402E) 사이에 동기화 업무들을 분할하는 것은 웨어러블 디바이스(402F)의 전력 및 성능에 부정적으로 영향을 주지 않으면서, 풍부한 데이터가 시기적절한 방식으로 웨어러블 디바이스(402F)에 전달될 수 있게 할 수 있다. 일 실시예에서, 웨어러블 디바이스(402F) 상에 저장된 데이터는, 그러한 데이터가 다른 디바이스들과 즉시 동기화되지 않을 것이더라도, 백업 데이터로서 서버들(440)의 원격 저장소에 주기적으로 저장될 수 있다.
도 5는 본 명세서에 설명된 실시예들에 따른, 전자 디바이스들을 발견하고 이들을 연결시키는 데 사용되는 발견 프로세스(500)의 동작들의 흐름도이다. 예시된 발견 프로세스(500)는 전자 디바이스(502) 및 전자 디바이스(504) 상에서 수행되는 동작들을 포함한다. 전자 디바이스(502) 및 전자 디바이스(504)는 각각, 예를 들어 도 4에서와 같은 태블릿 컴퓨터(402A), 데스크톱 컴퓨터(402B), 텔레비전 또는 셋톱 박스(402C), 모바일 폰(402E), 웨어러블 디바이스(402F) 또는 랩톱 컴퓨터(402G)일 수 있다. 일 실시예에서, 전자 디바이스(502)와 전자 디바이스(504) 사이에 확립된 피어-투-피어 연결은 컴패니언 링크 연결로 지칭될 수 있고, 연결된 피어들은 컴패니언 디바이스들로 지칭될 수 있다. 본 명세서에 설명된 바와 같은 피어-투-피어 연결을 형성할 수 있는 디바이스들은 컴패니언 서비스에 대한 지원을 광고할 수 있다.
일 실시예에서, 블록(510)에 도시된 바와 같이, 전자 디바이스(502)는, 디바이스가 현재 페어링되어 있지 않거나 또는 다른 방식으로 페어링할 컴패니언 디바이스를 찾고 있다는 것을 표시하도록 상태 비트를 설정할 수 있다. 상태 비트는 전자 디바이스(502)에 의해 광고된 상태 정보에 열거된 상태 플래그 표시자 내의 비트일 수 있다. 블록(512)에서, 전자 디바이스(502)는 컴패니언 링크 서비스에 대한 지원을 갖는 것으로서 발견 프로토콜(예를 들어, SSDP, Bonjour 등)을 통해 자신의 존재를 광고할 수 있다. 예를 들어, Bonjour를 사용하여, 전자 디바이스(502)는 이름 및 서비스 유형으로 자신을 광고할 수 있다. 이름은 컴패니언 발견을 위한 사용자가 읽을 수 있는 이름일 수 있고; 일부 경우들에서, 광고된 이름은 디바이스 정의 레코드의 컴패니언 발견 정보 서비스 인스턴스에 특정된 이름일 수 있다. 서비스 유형은 균일한 액세서리 프로토콜에 대해 정의될 수 있다(예를 들어, 서비스 유형 "_companion-link._tcp"). 광고는 또한 부가적인 정보를 포함할 수 있다. 유사한 정보가 다른 서비스 발견 프로토콜들 및 기법들을 사용하여 분배될 수 있다. 예를 들어, SSDP를 사용하여, 컴패니언 발견은 멀티캐스트 HTTP NOTIFY 메시지를 사용하여 이름 및 서비스 유형 URI를 광고하는 것을 포함할 수 있다. URI는 전자 디바이스(504)에 의해, 전자 디바이스(502)에 대한 유니캐스트 요청을 통해 부가적인 정보를 검색하는 데 사용될 수 있다.
전자 디바이스(502)가 서비스 발견 프로토콜을 통해 컴패니언 링크 서비스를 광고하기 시작한 이후, 전자 디바이스(504)는, 블록(514)에 도시된 바와 같이, 페어링되지 않은 디바이스들을 브라우징할 때 전자 디바이스(502)를 발견할 수 있다. 광고의 시작과 서비스 브라우징의 시작 사이에 어떠한 특정 타이밍도 요구되지는 않지만, 전자 디바이스(504)는, 전자 디바이스(504)가 브라우징할 때 전자 디바이스(502) 발견 광고가 검출가능하지 않는 한, 전자 디바이스(502)를 발견할 수 없을 것이다.
일 실시예에서, 전자 디바이스(504)는 전자 디바이스(504) 상의 애플리케이션 실행에 의해 제공되는 트리거와 같은 트리거에 응답하여 페어링되지 않은 디바이스들을 브라우징할 수 있다. 일 실시예에서, 전자 디바이스(504)가 페어링되지 않은 디바이스에 물리적으로 근접하게 배치될 때, 전자 디바이스(504)는 페어링되지 않은 디바이스들을 브라우징할 수 있다. 예를 들어, 전자 디바이스(502)에 대한 아웃오브박스(out-of-box) 근접 셋업은 (예를 들어, 블루투스 및/또는 BLE(Bluetooth Low Energy), NFC(Near-Field Communication) 등을 사용하는) 단거리 무선 통신 메커니즘을 통한 데이터 교환을 포함할 수 있으며, 이는 전자 디바이스(504)가 페어링되지 않은 디바이스들을 브라우징하도록 트리거할 수 있다. 일 실시예에서, 전자 디바이스(505)는 클라우드 서비스 계정, 클라우드 서비스 계정들의 패밀리, 또는 전자 디바이스(504)의 사용자의 친구의 클라우드 서비스 계정과 연관된 다른 디바이스들에 대한 식별자들을 저장하는 디바이스 레지스트리를 통해 다른 디바이스들의 발견을 시도할 수 있다.
블록(516)에서, 개인 디바이스(504)는, 예를 들어, 블록(512)에서 수행된 광고를 검출함으로써, 발견 서비스 광고를 통해 디바이스를 찾을 수 있다. 블록(518)에서, 전자 디바이스(504)는, 광고에 기초하여, 발견된 디바이스가 페어링되지 않은 전자 디바이스(502)와 같은 연결 후보인지 여부를 결정할 수 있다. 일 실시예에서, 전자 디바이스(504)는 발견된 디바이스가 컴패니언 링크 서비스를 광고하고 있을 때 발견된 디바이스가 연결 후보라고 결정할 수 있다. 전자 디바이스(504)는 전자 디바이스(502)와의 피어 연결이 확립될 수 있는지 여부를 결정하기 위해 검색 상태 플래그들을 체크할 수 있다. 예를 들어, 전자 디바이스(504)는 전자 디바이스(502)의 컴패니언 링크 프로토콜 버전이 전자 디바이스(504)에 의해 지원되는 컴패니언 링크 프로토콜과 호환가능한지 여부를 결정하기 위해, 광고된 프로토콜 버전을 체크할 수 있다. 전자 디바이스(502)가 컴패니언 링크를 확립하도록 광고하고 있지 않다고 전자 디바이스(504)가 결정하면, 전자 디바이스(504)는 블록(514)으로 복귀하여 계속해서 브라우징할 수 있다.
블록(522)에서, 전자 디바이스(504)는 전자 디바이스(504)의 디스플레이 디바이스와 같은 사용자 인터페이스를 통해 전자 디바이스(502)에 관한 정보를 사용자에게 제시할 수 있다. 블록(524)에서, 개인 디바이스(504)는 검출된 디바이스로 수행할 액션들에 관한 입력을 사용자 인터페이스를 통해 사용자로부터 수신할 수 있다. 예를 들어, 사용자는 전자 디바이스(504)가 전자 디바이스(502)와 페어링을 확립해야 하는지 여부를 표시하는 입력을 제공할 수 있다. 전자 디바이스(504)는 전자 디바이스(502)에 의해 제공된 광고 데이터로부터 획득된 정보 중 임의의 것 또는 전부를 제시할 수 있고, 전자 디바이스(504)가 전자 디바이스(502)에 연결해야 하는지 여부를 표시하도록 사용자에게 프롬프트할 수 있다. 사용자 확인을 요청하는 것은 디바이스들 사이의 스퓨리어스(spurious) 또는 원하지 않는 페어링들을 피하는 것을 도울 수 있다.
블록(526)에서, 전자 디바이스(504)는 블록(524)에서 수신된 사용자 입력을 해석하고, 전자 디바이스(502)와 페어링할지 여부를 결정할 수 있다. 페어링 동작을 개시하기 위한 사용자 승인에 부가하여, 전자 디바이스(504)의 정당한 소유자/조작자의 승인 없이 발생하는 페어링의 위험을 최소화하도록 페어링 동작을 완료하기 위해 다른 동작들이 수행될 수 있는데, 그 이유는 페어링 절차를 완료하는 것은 전자 디바이스(502)가 전자 디바이스(504)의 사용자에 관한 개인 특성의 질의들을 수용하게 허용할 수 있기 때문이다. 예를 들어, 전자 디바이스(504) 및/또는 전자 디바이스(502)는 전자 디바이스(504)의 사용자에게 알려진 패스코드의 입력을 요청할 수 있다. 일 실시예에서, 블록(526)에서 페어링 동작을 완료하기 위해 생체측정 검증(예를 들어, 지문, 안면 인식 등)이 전자 디바이스(502) 및/또는 전자 디바이스(504)에 의해 요청될 수 있다.
사용자가 전자 디바이스(504)에게 페어링을 거절하도록 지시하거나 사용자 검증 동작이 실패하면, 전자 디바이스(504)는 다른 액세서리들 또는 디바이스들을 찾기 위해 블록(514)으로 복귀할 수 있다. 전자 디바이스(504) 및 전자 디바이스(502)가 페어링해야 하면, 블록(528) 및 블록(530)에서, 전자 디바이스(504) 및 전자 디바이스(502)는 페어 셋업 프로세스를 각각 실행할 수 있다. 일부 실시예들에서, 페어 셋업 프로세스는 전자 디바이스(504)와 전자 디바이스(502) 사이의 보안 통신을 용이하게 하기 위해 암호화 키들을 확립하는 데 사용될 수 있다. 일부 실시예들에서, 사용자 확인은 페어 셋업 프로세스에 통합될 수 있고, 페어 셋업을 개시하기 이전에 별도의 사용자 확인은 요구되지 않는다. 일 실시예에서, 페어 셋업 프로세스는 전자 디바이스(502)와 전자 디바이스(504) 사이의 신뢰된 관계의 확립을 가능하게 한다. 확립된 신뢰 관계는 보안 통신 세션의 셋업 동안 나중에 검증될 수 있다.
페어 셋업 프로세스가 성공적으로 완료되면, 블록(531)에서, 전자 디바이스(502)는, 예를 들어, 광고된 디바이스 데이터 내의 상태 플래그 표시자를 업데이트함으로써, 액세서리와 통신하기 위해 이제 인가가 요구된다는 것 및/또는 액세서리가 이제 전자 디바이스(504)의 적어도 하나의 인스턴스와 페어링되어 있다는 것을 표시하도록 디바이스 상태 정보를 업데이트할 수 있다.
블록(532)에서, 전자 디바이스(504)는 전자 디바이스(502)로부터 디바이스 정의 레코드를 획득하고 캐싱(cach)할 수 있으며, 전자 디바이스(502)는 블록(534)에서 요청 시 레코드를 제공할 수 있다. 디바이스 정의 레코드는 디바이스에 의해 지원되는 서비스들의 세트 및/또는 다른 전자 디바이스(504) 뿐만 아니라 다른 연결된 디바이스들이 어떻게 전자 디바이스(502)를 제어하는지, 그와 연결하는지, 그렇지 않으면 그와 상호작용하는지를 결정할 수 있게 하는 다른 관련 특성들을 포함할 수 있다. 전자 디바이스(404)가 디바이스 정의 레코드를 캐싱하는 경우, 정보는 전자 디바이스(502) 내의 상태 변화들을 검출하는 것을 용이하게 하기 위해 사용될 수 있다. 일부 실시예들에서, 전자 디바이스(504)는 또한 전자 디바이스(502)에 의해 제공되는 광고 데이터로부터 정보를 캐싱할 수 있는데, 이는 또한 전자 디바이스 내의 상태 변화들을 검출하는 데 사용될 수 있다.
블록들(536 및 538)에서, 전자 디바이스(504) 및 전자 디바이스(502)는 보안 통신 채널을 확립하는 데 사용되는 데이터를 교환하기 시작할 수 있다. 데이터 교환은 디바이스들 사이의 키 또는 인증서 교환을 포함할 수 있다. 키 교환은 디바이스들 사이에서 교환되는 공유 비밀을 통해 보호될 수 있으며, 여기서 공유 비밀은 대역외 통신 방법을 사용하여 교환될 수 있다. 부가적으로, 데이터 교환은 디바이스들 사이의 하나 이상의 장기 키들의 교환을 포함할 수 있으며, 이는 자체적으로 하나 이상의 단기 키들에 의해 보호될 수 있다. 페어링이 확립되면, 페어링은 단-대-단 메시지 암호화를 제공하기 위해 활용되어, 페어링된 디바이스들만이 디바이스들 사이에서 교환되는 메시지들을 판독할 수 있게 한다. 일 실시예에서, 보안 통신 채널은 양방향 채널이며, 이는 채널 상에서 통신하는 어느 하나의 디바이스가 메시지 교환을 개시할 수 있게 한다. 메시지 교환 동안, 통신 세션을 개시하는 어느 디바이스이든 클라이언트 디바이스로 지칭되는 반면, 세션을 수용하는 디바이스는 서버 디바이스로 지칭된다. 일 실시예에서, 디바이스들 사이에서 교환되는 첫 번째 메시지는 정보 교환 메시지이다. 클라이언트 디바이스는 특징부 플래그들 또는 다른 디바이스 정보를 포함하는 초기 정보 메시지를 전송할 수 있다. 이어서, 서버 디바이스는 지원된 특징부들에 대한 정보 메시지로 응답할 수 있다. 일단 보안 통신 채널이 확립되고 정보 교환이 발생하면, 통신하는 디바이스들은 계류중인 즉각적인 동작들이 없는 경우 유휴 상태로 진입할 수 있다.
일 실시예에서, 전자 디바이스(502)는 연결된 개인 디바이스(504)를 컴패니언 디바이스로서 유효성 확인하기 위해 블록(540)에서 부가적인 동작을 수행할 수 있다. 이러한 실시예에서, 발견 프로세스(500)는 다수의 디바이스들로 수행될 수 있지만, 일부 유형들의 데이터는 특정 디바이스들과만 교환될 수 있다.
본 명세서에서 설명되는 발견 및 페어링 프로세스는 예시적이며, 변형들 및 수정들이 가능하다는 것이 이해될 것이다. 순차적인 것으로서 설명되는 동작들은 병렬로 실행될 수 있고, 단계들의 순서가 변할 수 있으며, 단계들이 수정, 조합, 추가 또는 생략될 수 있다. 또한, SSDP 및 Bonjour 서비스들이 디바이스 발견 서비스의 예들로서 사용되지만, 유사한 개념들이 다른 디바이스 발견 서비스들의 컨텍스트에서 적용될 수 있다. 일부 실시예들에서, 전자 디바이스(502) 또는 임의의 다른 발견된 디바이스와 페어링할지 여부를 결정하기 전에, 전자 디바이스(504)는 페어링 후보 디바이스로부터 정의 레코드(또는 그의 일부)를 요청할 수 있는데, 이는 예를 들어, HTTP 요청을 통해 요청될 수 있다.
일부 실시예들에서, 발견 프로세스(500), 또는 유사한 프로세스가 페어링된 디바이스들에서의 상태 변화들을 검출하는데 사용될 수 있다. 예를 들어, 디바이스에 의해 광고되는 상태 번호 값은 디바이스 상태가 변화할 때 증분될 수 있다. 디바이스가 상태 변화를 광고할 때, 다른 페어링된 디바이스들은, 예를 들어, 업데이트된 Bonjour TXT 레코드를 브로드캐스팅함으로써 상태 변화를 광고할 수 있고, 이전에 디바이스 레코드를 캐싱한 페어링된 디바이스는 상태 번호의 브로드캐스트 값들을 캐싱된 값과 비교함으로써 변화를 검출할 수 있다.
블록(536) 및 블록(538)에서 디바이스들 사이에 확립된 보안 통신 채널은 컴패니언 링크 메시지들을 교환하는 데 사용될 수 있다. 일 실시예에서, 컴패니언 링크 메시지들이 컴패니언 링크를 통해 교환되기 전에, 전자 디바이스(502)와 전자 디바이스(504) 사이에 보안 세션이 확립되거나 재확립된다. 일 실시예에서, 세션을 확립하는 것은 디바이스들 사이의 페어링을 검증하기 위해 페어-검증 프로세스를 수행하는 것을 포함한다. 페어-검증 프로세스는 전자 디바이스(502)와 전자 디바이스(504) 사이의 이전에 확립된 페어링 관계에 의존한다. 예를 들어, 그리고 일 실시예에서, 디바이스들 사이에 컴패니언 링크 세션을 확립하는 것은 디바이스들의 영구 식별자를 요구할 수 있는데, 이는 발견 서비스를 통해 광고되는 익명화된 식별자로부터 도출될 수 있다. 그러나, 광고된 정보에 기초하여 영구 식별자를 도출하는 것은 디바이스들 사이의 페어링 프로세스 동안 교환된 데이터의 하나 이상의 요소들을 이용할 수 있다. 일 실시예에서, 페어-검증 프로세스는 검증 프로세스 동안 교환되는 메시지들을 암호화 또는 서명하는 데 사용되는 단기 공개 키 쌍들의 생성뿐만 아니라, 디바이스들의 초기 페어링 동안 교환되었던 이전에 교환된 장기 키 쌍들의 검증을 포함할 수 있다. 페어-검증 프로세스는 컴패니언 링크 연결을 사용하여 디바이스들 사이에 보안 세션이 확립될 때마다 수행될 수 있다.
전자 디바이스들 사이에서 데이터 동기화를 구현하도록 구성될 수 있는 전자 디바이스의 다양한 구조들 및 디바이스들 사이에 확립될 수 있는 다양한 유형들의 데이터 연결들을 설명하였지만, 통신 채널 선택의 동작 양태들은, 실시예들에 따른 다수의 디바이스들 사이에서 데이터 동기화를 구현하는 방법에서의 동작들을 예시하는 흐름도들인 도 6 및 도 7을 참조하여 설명될 것이다. 도 8a 내지 도 8d는 디바이스들 사이에서 동기화될 수 있는 디바이스 활동 정보를 설명한다. 도 9는 디바이스 활동 동기화의 흐름도를 예시한다.
도 6을 참조하면, 데이터 동기화 관리자(222)는 전자 디바이스로부터 애플리케이션 데이터를 수집하기 위한 프로세스를 개시할 수 있다. 예로서, 동작(610)에서, 데이터 동기화 관리자(222)는 환경 조건에 응답하여 애플리케이션 데이터를 수집하기 위한 프로세스를 개시할 수 있다. 일부 예들에서, 애플리케이션 데이터는, 사용자가 주어진 시간 기간에서 애플리케이션과 관여된 시간의 양, 세션 데이터, 연결 데이터 등을 포함하는(그러나 이에 제한되지 않음) 전자 디바이스(102) 상에서 실행되는 하나 이상의 애플리케이션들과 연관된 컨텍스트 데이터를 포함할 수 있다. 애플리케이션 데이터가 수집될 수 있는 환경 조건들은 전자 디바이스 또는 전자 디바이스 상에서 실행되는 하나 이상의 애플리케이션들과 연관된 동기화 시간 기간의 경과를 포함한다. 일부 예들에서, 시간 기간은 정적일 수 있다. 다른 예들에서, 시간 기간은 시간 기간이 동작 조건에 응답하여 변할 수 있다는 의미에서 동적일 수 있다. 예를 들어, 특정 애플리케이션 상의 특정 사용자에 대한 시간 제한이 정의되면, 시간 기간은 사용자가 시간 제한에 접근함에 따라 감소할 수 있다. 대안적으로 또는 부가적으로, 데이터 동기화 관리자(222)는, 전자 디바이스가 지리적 위치 임계치를 가로지르거나 특정 지리적 구역으로 진입하는 것과 같은 하나 이상의 환경 조건들에 응답하여 또는 시간 기반 파라미터 또는 활동 기반 파라미터에 응답하여 동기화 프로세스를 개시할 수 있다.
동작(615)에서, 데이터 동기화 관리자(222)는 비휘발성 저장 디바이스 또는 휘발성 저장 디바이스일 수 있는 저장 디바이스, 예컨대 시스템 메모리에 애플리케이션 데이터를 저장한다. 동작(620)에서, 데이터 동기화 관리자(222)는 동기화 이벤트를 검출한다. 일부 예들에서, 동기화 이벤트는, 사용자가 제1 전자 디바이스로부터 제1 전자 디바이스와는 상이한 제2 전자 디바이스로 스위칭하는 것일 수 있다. 다른 예들에서, 동기화 이벤트는 동기화 시간 기간 또는 활동 기반 파라미터일 수 있다. 예를 들어, 동기화 시간 기간은 전자 디바이스가 광범위하게 사용되지 않는 시간 기간들 동안 비교적 긴 시간 기간으로 설정될 수 있다. 반대로, 동기화 시간 기간은 전자 디바이스가 광범위하게 사용되는 시간 기간들 동안 비교적 짧은 시간 기간으로 설정될 수 있다. 동기화 프로세스를 개시하기 위해 다른 이벤트들이 사용될 수 있다는 것을 인식할 것이다. 일 실시예에서, 전자 디바이스는, 디바이스가 다른 연결된 디바이스들로부터 데이터 업데이트를 요청하고 있다는 것을 표시하는, 연결된 디바이스의 광고 데이터에서 설정된 비트 또는 플래그를 검출할 수 있다. 일 실시예에서, 전자 디바이스가 네트워크 중심 채널을 통해 데이터를 동기화할 수 있는 클라우드 저장 서비스는 업데이트된 데이터가 요청된다는 것을 표시하는 비트를 설정할 수 있다.
동작(625)에서, 동기화 이벤트에 응답하여, 동기화 관리자(222)는 동기화 데이터 세트를 생성한다. 일부 예들에서, 동기화 데이터 세트는 동작(615)에서 저장 디바이스에 저장된 애플리케이션 데이터 및 하나 이상의 애플리케이션 식별자들, 타임 스탬프들, 위치 데이터 등과 같은 보완 데이터를 포함할 수 있다. 일부 예들에서, 동기화 데이터 세트는, 동기화 프로세스 동안 다른 디바이스들로 전달되는 데 요구되는 데이터의 양을 감소시키도록 압축될 수 있다. 동작(630)에서, 동기화 관리자는 메모리, 예컨대 도 3에 예시된 메모리(330) 또는 다른 메모리 디바이스에 동기화 데이터 세트를 저장한다.
동작(635)에서, 동기화 관리자(222)는 동기화 프로세스를 개시한다. 동기화 프로세스의 상세사항들은 도 7을 참조하여 설명된다. 도 7에 도시된 다이어그램에서, 동기화 프로세스 동안 실행되는 동작들은, 단독으로 또는 전자 디바이스(202)의 다른 컴포넌트들과 조합하여, 데이터 동기화 관리자(222)에 의해 구현될 수 있다.
도 7을 참조하면, 동작(710)에서, 데이터 동기화 관리자(222)는 동작(630)에서 메모리에 저장된 동기화 데이터 세트를 검색하는데, 이 데이터는 동기화 데이터 세트로 지칭된다. 동작(715)에서, 데이터 동기화 관리자(222)는 동기화 데이터 세트가 피어-투-피어 데이터 연결을 통한 원격 디바이스로의 송신에 적합한지 여부를 표시하는 다양한 파라미터들을 결정하기 위해 동기화 데이터 세트를 평가한다. 예를 들어, 데이터 동기화 관리자(222)는 동기화 데이터 세트의 크기, 동기화 데이터 세트 내의 데이터와 연관된 데이터 유형, 또는 동기화 데이터 세트가 시간-민감 데이터를 포함하는지 여부를 결정할 수 있다.
동작(720)에서, 데이터 동기화 관리자(222)는 전자 디바이스(202)에 근접한 하나 이상의 원격 디바이스들과의 통신 연결들의 이용가능성을 평가하여, 통신 연결들이 동기화 데이터 세트를 전자 디바이스(202)에 근접한 원격 디바이스(들)로 송신하기에 적합한지 여부를 결정한다. 예를 들어, 도 3에 도시된 실시예에서, 데이터 동기화 관리자(222)는 네트워크 중심 통신 채널(352) 및/또는 피어-투-피어 통신 채널(354)을 통한 통신에 이용가능한 대역폭에 관한 정보를 통신 인터페이스(340)로부터 수신할 수 있다.
동작(725)에서, 데이터 동기화 관리자(222)는 동기화 데이터 세트가 직접(예를 들어, 피어-투-피어) 통신 연결을 통한 원격 디바이스로의 송신에 적합한지 여부를 결정한다. 일부 예들에서, 데이터 동기화 관리자(222)는 피어-투-피어 통신 연결을 통해 이용가능한 대역폭의 양을 표시하는 대역폭 정보를 통신 인터페이스(340)로부터 수신할 수 있다. 이어서, 데이터 동기화 관리자(222)는 대역폭 정보 및 동기화 데이터 세트의 사이즈로부터, 동기화 데이터 세트를 원격 디바이스로 전달하는 데 요구되는 대략적인 시간량을 결정할 수 있다. 동기화 데이터 세트를 송신할 데 요구되는 시간이 임계 전달 시간 파라미터보다 작으면, 데이터 동기화 관리자(222)는 동기화 데이터 세트가 피어-투-피어 통신 채널(354)을 통한 전달에 적합하다고 결정한다. 반대로, 동기화 데이터 세트를 송신할 데 요구되는 시간이 임계 전달 시간 파라미터보다 작지 않으면, 데이터 동기화 관리자(222)는 동기화 데이터 세트가 피어-투-피어 통신 채널(354)을 통한 전달에 적합하지 않다고 결정한다.
전달 시간 파라미터는 정적 파라미터, 예를 들어, 임계 수의 밀리초일 수 있거나, 또는 전자 디바이스들의 동작 조건들 또는 동기화 데이터의 특성들에 응답하여 동적으로 설정될 수 있다. 예를 들어, 스트리밍 비디오 데이터는 짧은 전달 시간 파라미터를 요구할 수 있다. 반대로, 정적 데이터는 더 긴 전달 시간 파라미터들을 허용할 수 있다.
동작(725)에서, 동기화 데이터 세트가 피어-투-피어 통신 연결을 통한 송신에 적합하지 않으면, 제어가 동작(740)으로 넘어가며, 데이터 동기화 관리자(222)는 동기화 데이터 세트를 수신하도록 지정된 원격 디바이스(들)(360)와의 네트워크-기반 통신 채널(352)을 확립한다. 동작(745)에서, 데이터 동기화 관리자(222)는 동기화 데이터를 네트워크-기반 통신 채널(352)을 통해 원격 디바이스(들)로 송신한다.
반대로, 동작(725)에서, 동기화 데이터 세트가 피어-투-피어 통신 채널(354)을 통한 송신에 적합하다면, 제어는 동작(730)으로 넘어가며, 그 결과, 데이터 동기화 관리자(222)는 원격 디바이스(들)(360)와의 직접(예를 들어, 피어-투-피어) 연결이 이용가능한지 여부를 결정한다. 일부 예들에서, 데이터 동기화 관리자(222)는 동기화 데이터 세트가 송신될 원격 디바이스(360)의 슬립 상태를 결정할 수 있다. 예를 들어, 통신 인터페이스(340)는 원격 디바이스(360)와의 통신 연결을 개시하려고 시도할 수 있다. 통신 인터페이스(340)가 원격 디바이스(360)로부터 "노 웨이크(no wake)" 신호를 수신하면(예를 들어, 원격 디바이스(360) 내의 애플리케이션 프로세서가 슬립 상태에 있는 경우), "노 웨이크" 신호에 응답하여, 직접 전송 채널이 이용가능하지 않다고 결정할 수 있다. 반대로, 통신 인터페이스(340)가 원격 디바이스(360)로부터 적합한 응답을 수신하면, 데이터 동기화 관리자(222)는 직접(예를 들어, 피어-투-피어) 통신 채널이 이용가능하다고 결정할 수 있다.
동작(730)에서, 데이터 동기화 관리자(222)가 직접(예를 들어, 피어-투-피어) 통신 채널이 이용가능하지 않다고 결정하면, 제어가 동작(740)으로 넘어가며, 데이터 동기화 관리자(222)는 동기화 데이터 세트를 수신하도록 지정된 원격 디바이스(들)(360)와의 네트워크-기반 통신 채널(352)을 확립한다. 동작(745)에서, 데이터 동기화 관리자(222)는 동기화 데이터를 네트워크-기반 통신 채널(352)을 통해 원격 디바이스(들)로 송신한다.
반대로, 동작(730)에서, 데이터 동기화 관리자(222)가 직접(예를 들어, 피어-투-피어) 통신 채널(352)이 이용가능하다고 결정하면, 제어는 동작(735)으로 넘어가며, 데이터 동기화 관리자(222)는 원격 디바이스(들)(360)와의 직접(예를 들어, 피어-투-피어) 데이터 채널(354)을 확립한다. 일 실시예에서, 동작(735)에서, 데이터 동기화 관리자(222)는, 피어 디바이스가 무선 범위에 들어오자마자 피어 디바이스와의 직접 데이터 채널(354)을 미리 확립하여 제1 메시지 레이턴시를 감소시킬 수 있다. 동작(745)에서, 데이터 동기화 관리자(222)는 직접(예를 들어, 피어-투-피어) 통신 채널(354)을 통해 동기화 데이터를 원격 디바이스(들)로 송신한다.
동작(750)에서, 원격 디바이스(들)(360)는 선택된 통신 채널을 통해 동기화 데이터 세트를 수신하고, 동작(755)에서, 원격 디바이스(들)(360)는 원격 디바이스(들)(360)를 전자 디바이스(202)와 동기화시키기 위해 동기화 데이터 세트를 사용할 수 있다.
원격 디바이스와의 피어-투-피어 통신 채널이 확립될 수 있는지 여부를 결정하기 위해 노 웨이크 신호의 사용이 설명되지만, 본 명세서에 설명된 실시예들은 디바이스 웨이크들을 최소화시키기 위한 다른 기법들을 제공한다. 예를 들어, 데이터 동기화 관리자(222)는, 원격 디바이스와 통신하려고 시도할 때, 원격 디바이스의 애플리케이션 프로세서가 저전력 상태에 있다면 원격 디바이스가 응답하지 않아야 한다는 것을 표시할 수 있다.
일부 실시예들에서, 전자 디바이스는 특정 웨이크 패턴의 사용을 통해 피어 전자 디바이스만을 웨이크시킬 수 있다. 디바이스가 저전력 상태로 전환할 때, 디바이스는, 펌웨어가 특정 웨이크 데이터 패턴을 갖는 광고를 수신하는 경우에만 메인 CPU를 웨이크시키도록 디바이스의 BLE 펌웨어를 구성할 수 있다. 일 실시예에서, 디바이스에 대한 웨이크 데이터 패턴은 디바이스에 대한 아이덴티티 분석 키(identity resolving key)를 사용하여 도출될 수 있다. 예를 들어, 웨이크 패턴은, 아이덴티티 분석 키를 키로서 사용하여, 프리픽스(prefix) 스트링 및 BLE 어드레스의 키형 해시를 포함할 수 있다. 일 실시예에서, 아이덴티티 분석 키는 BLE 연결들을 가능하게 하는 데 사용되는 아이덴티티 분석 키와는 상이한 키이지만, 디바이스 식별 및 인증 목적들을 위해 사용되는 대안적인 아이덴티티 분석 키이다. 전자 디바이스가 원격 디바이스를 웨이크시키도록 의도할 때, 전자 디바이스는 광고 패킷으로부터의 원격에 대한 현재의 BLE 어드레스를 찾기 위해 BLE를 사용하여 원격 디바이스를 스캔할 수 있다. 이어서, 전자 디바이스는 웨이크 데이터 패턴을 생성하기 위해 BLE 어드레스 및 대안적인 아이덴티티 분석 키를 사용할 수 있다. 원격 디바이스가 광고된 웨이크 패턴을 수신하면, 원격 디바이스는 원격 디바이스의 CPU의 하나 이상의 코어들을 웨이크시킬 수 있다.
다수의 디바이스들 사이의 데이터 동기화를 가능하게 하는 통신 채널 로직은 다양한 상황들에 대해 다양한 디바이스 데이터를 동기화시키는 데 사용될 수 있다. 일 실시예에서, 로직은 개인 정보 데이터로 고려될 수 있는 동일한 계정 또는 계정들의 패밀리와 연관된 디바이스들 사이의 활동을 동기화시키는 데 사용될 수 있다. 본 개시내용은 본 기술에서의 그러한 개인 정보 데이터의 사용이 사용자들에게 이득을 주기 위해 사용될 수 있다는 것을 인식한다. 예를 들어, 사용자의 건강 활동은 사용자가 디바이스로부터 디바이스로 전환함에 따라 다양한 디바이스들 사이에서 동기화될 수 있다. 사용자들 사이의 디바이스 활동의 동기화는 각각의 디바이스가 임의의 주어진 시간에 사용자의 요구들 또는 관심들을 예측하는 데 있어서 더 사전행동적(proactive)일 수 있게 할 수 있다. 아동들에 의해 사용되는 디바이스들에 대한 스크린 시간은 부모들에 의해 제한될 수 있고, 그러한 스크린 시간 제한들은 다수의 디바이스들에 걸쳐 적용될 수 있다. 추가로, 사용자에게 이득을 주는 개인 정보 데이터에 대한 다른 사용들이 또한 본 개시내용에 의해 고려된다.
본 개시내용은 그러한 개인 정보 데이터의 수집, 분석, 공개, 전달, 저장, 또는 다른 이용을 책임지고 있는 엔티티들이 잘 확립된 프라이버시 정책들 및/또는 프라이버시 관례들을 준수할 것이라는 것을 추가로 고려한다. 특히, 그러한 엔티티들은, 대체로 개인 정보 데이터를 사적이고 안전하게 유지시키기 위한 산업적 또는 행정적 요건들을 충족시키거나 넘어서는 것으로 인식되는 프라이버시 정책들 및 관례들을 구현하고 지속적으로 사용해야 한다. 예를 들어, 사용자들로부터의 개인 정보는 엔티티의 적법하며 적정한 사용들을 위해 수집되어야 하고, 이들 적법한 사용들을 벗어나서 공유되거나 판매되지 않아야 한다. 또한, 그러한 수집은 단지 사용자들의 고지에 입각한 동의를 수신한 후에만 발생해야 한다. 부가적으로, 그러한 엔티티들은 그러한 개인 정보 데이터에 대한 액세스를 보호하고 안전하게 하며 개인 정보 데이터에 대한 액세스를 갖는 다른 사람들이 그들의 프라이버시 정책들 및 절차들을 고수한다는 것을 보장하기 위한 임의의 필요한 단계들을 취할 것이다. 추가로, 그러한 엔티티들은 널리 인정된 프라이버시 정책들 및 관례들에 대한 그들의 고수를 증명하기 위해 제3자들에 의해 그들 자신들이 평가를 받을 수 있다.
전술한 것에도 불구하고, 본 개시내용은 또한 사용자들이 개인 정보 데이터의 사용, 또는 그에 대한 액세스를 선택적으로 차단하는 실시예들을 고려한다. 즉, 본 발명은 그러한 개인 정보 데이터에 대한 액세스를 방지하거나 차단하기 위해 하드웨어 및/또는 소프트웨어 요소들이 제공될 수 있다는 것을 고려한다. 예를 들어, 광고 전달 서비스들의 경우에, 본 기술은 사용자들이 서비스를 위한 등록 중에 개인 정보 데이터의 수집 시의 참여의 "동의함(opt in)" 또는 "동의하지 않음(opt out)"을 선택하는 것을 허용하도록 구성될 수 있다. 다른 예에서, 사용자들은 타깃 콘텐츠 전달 서비스들을 위한 위치 정보를 제공하지 않도록 선택할 수 있다. 또 다른 예에서, 사용자들은 정확한 위치 정보를 제공하지 않지만 위치 구역 정보의 전달을 허용하도록 선택할 수 있다.
도 8a 내지 도 8c는 실시예들에 따른, 디바이스 활동 동기화를 예시하는 블록도들이다. 도 8a는 디바이스에서 수집되고 디바이스들에 걸쳐 동기화될 수 있는 디바이스 활동(800)의 예시적인 세트를 예시한다. 도 8b는, 대안적인 또는 다수의 통신 채널들이 디바이스들 사이에서의 풍부한 데이터의 전달을 용이하게 하기 위해 사용될 수 있는 것을 예시한다. 도 8c는 디바이스들 사이의 네트워크-기반 원격 동기화 및 피어-투-피어 동기화를 사용하는 디바이스 사용 동기화를 예시한다.
도 8a에 도시된 바와 같이, 다양한 디바이스 활동(800)이 디바이스들에 걸쳐 동기화될 수 있다. 일 실시예에서, 다양한 유형들의 이벤트 데이터(810)가 동기화될 수 있다. 이벤트 데이터(810)는 사용자에 대한 다수의 디바이스들로부터 수집되어 집계 사용자 데이터로 조합될 수 있다. 이벤트 데이터(810)는 웨어러블 전자 디바이스들, 모바일 디바이스들, 예컨대 스마트폰들 및 태블릿 컴퓨팅 디바이스들, 랩톱 컴퓨팅 디바이스들, 및 데스크톱 컴퓨팅 디바이스들을 포함하는 다양한 사용자 디바이스들로부터 수집될 수 있다. 이벤트 데이터(810)는 사용자 액션 데이터(812), 컨텍스트 데이터(814), 및 디바이스 상태 데이터(816)를 포함한다(그러나 이에 제한되지 않음).
사용자 액션 데이터(812)는, 예를 들어, 디바이스 모션 데이터, 인앱 액션들, 및 앱인 포커스(app in focus) 데이터를 포함한다. 모션 데이터는 디바이스에 대한 원시 가속도계 데이터뿐만 아니라, 사용자에 의해 취해진 단계들의 수, 이동된 거리, 운동 데이터, 취해진 계단 이동들(flights of stairs), 서 있기 대 앉아 있기 메트릭들 등과 같은 정보를 표시하는 프로세싱된 가속도계 데이터를 포함할 수 있다. 인앱 액션들은, 애플리케이션 내에서 수행되는 활동들, 예컨대 온라인 앱 스토어 또는 미디어 스토어에서 이루어진 구매들, 애플리케이션 내에서 이루어진 인앱 구매들, 웹 브라우저에 의해 방문된 웹사이트들, 카메라 애플리케이션에 의해 촬영된 사진들, 및 주어진 애플리케이션 내의 다른 사용자 활동들을 포함한다. 앱인 포커스 데이터는 어느 애플리케이션들이 활성인지 그리고 사용자가 이들 애플리케이션들을 이용하는 지속기간에 관한 정보를 포함한다.
컨텍스트 데이터(814)는 사용자 액션들(812) 또는 디바이스 상태(816)와 같은 다른 이벤트들(810)과 연관된 컨텍스트 정보를 포함한다. 예를 들어, 각각의 사용자 액션(812)에 대해, 컨텍스트 데이터(814)는 이들 액션들에 관한 부가적인 정보를 제공하도록 수집될 수 있다. 예를 들어, 사용자가 운동을 위해 규칙적으로 달리면, 이들 달리기들의 시간 및 위치는 달리기 동안 사용자의 활성 디바이스에 의해 컨텍스트 데이터(814)로서 기록될 수 있다. 달리기 동안, 다른 사용자들의 디바이스들에 대한 또는 사용자를 위한 지리적 관심 지점들에 대한 활성 디바이스의 근접도와 같은 근접 정보가 또한 기록될 수 있다.
이벤트 데이터(810)는 또한, 신호 강도 분석 및 디바이스에 대한 이용가능한 액세스 포인트들을 포함하는 Wi-Fi 디바이스 상태와 같은 디바이스 상태(816)를 포함할 수 있다. 디바이스 상태(816)는 또한, 현재 및 이력 배터리 에너지 레벨, 충전 상태, 및 특정 활동들 또는 애플리케이션들에 충당되는 배터리 사용의 백분율을 포함하는 배터리 정보를 포함할 수 있다.
다양한 이벤트들(810) 및 다른 디바이스 활동(800)은 본 명세서에 설명된 통신 채널 선택 기법들을 사용하여 활성 사용자 디바이스들 사이에서 동기화될 수 있다. 디바이스 활동(800)은 활성 디바이스로부터 수집될 수 있고, 사용자가 디바이스로부터 디바이스로 전환함에 따라 다른 활성 디바이스들 사이에서 동기화될 수 있다. 디바이스 활동(800)은 사용자로의 정보 그래프들 또는 디스플레이들, 예를 들어 활동 또는 건강 디스플레이, 또는 웨어러블 전자 디바이스에 대한 활동 기반 시계 화면들을 생성하는 데 사용될 수 있다.
도 8b에 도시된 바와 같이, 모바일 폰(402E)과 웨어러블 디바이스(402F) 사이에서의 풍부한 데이터의 전달을 용이하게 하기 위해 대안적인 또는 다수의 통신 채널들이 사용될 수 있다. 웨어러블 디바이스(402F)는, 일 실시예에서, 스마트워치 디바이스이지만, 본 명세서에 설명된 개념들은 시계 디바이스들로 제한되지 않는다. 웨어러블 디바이스(402F)는 모바일 폰(402E) 또는 본 명세서에 설명된 전자 디바이스들 중 다른 전자 디바이스와 페어링될 수 있다. 또한 본 명세서에 설명된 바와 같이, 모바일 폰(402E)은 도 4에 추가로 예시된 바와 같이, 네트워크(420)를 통하여 네트워크 중심 채널(352)을 통해 또는 피어-투-피어 채널(354)을 통해 피어 디바이스들(836)과 교대로 동기화될 수 있다.
일 실시예에서, 웨어러블 디바이스(402F)는 모바일 폰(402E)을 프록시로서 사용하여 피어 디바이스들(836)과의 피어-투-피어 동기화를 수행할 수 있다. 웨어러블 디바이스(402F)는 또한, 예를 들어 웨어러블 디바이스(402F)가 외부 전원에 부착되어 웨어러블 디바이스(402F)의 내부 배터리를 충전하고 있을 때, 네트워크(420)를 통해 네트워크 중심 채널(352)을 사용하여 동기화될 수 있다.
일 실시예에서, 스마트폰 애플리케이션(834)은 모바일 폰(402E) 상에서 이용가능한 API를 사용하여, 웨어러블 디바이스(402F)와 모바일 폰(402E) 사이의 피어-투-피어 통신 채널(354)을 통해 웨어러블 디바이스(402F)에 단축키 데이터를 제공할 수 있다. 스마트폰 애플리케이션(834)은 또한, 단축키 정보의 디스플레이가 사용자에게 관련있을 때에 대해 웨어러블 디바이스(402F)에 통지하기 위한 컨텍스트 정보를 제공할 수 있다. 일 실시예에서, 스마트폰 애플리케이션은 또한 단축키의 외양을 특정하는 템플릿 정보를 제공할 수 있다. 웨어러블 디바이스(402F)에 제공되는 단축키는 시계 화면(832) 상에 디스플레이될 수 있고, 스마트폰 애플리케이션(834)에 의해 정의되는 외양을 가질 수 있다. 선택될 때, 단축키는 사용자가 스마트폰 애플리케이션(834)과 관련된 일부 액션을 수행하게 허용한다. 일 실시예에서, 단축키는 사용자를 직접 애플리케이션의 내부 스크린으로 안내하는 개시 컨텍스트를 이용하여 웨어러블 디바이스(402F) 또는 모바일 폰(402E) 상에서 애플리케이션을 개시하게 허용한다. 대안적으로, 단축키는 사용자에 대한 특정 백그라운드 액션을 수행할 수 있다. 예를 들어, 단축키는 사용자를 직접 소셜 미디어 애플리케이션의 뉴스 피드로 또는 뉴스 애플리케이션의 특정 스토리로 안내하도록 시계 화면(832)을 통해 디스플레이될 수 있다. 사용자에 대한 특정 백그라운드 액션을 수행하는 단축키가 또한 디스플레이될 수 있다. 예를 들어, 사용자가 스마트폰 애플리케이션(834)을 통해 음식 또는 음료를 주문할 수 있게 하기 위한 단축키가 디스플레이될 수 있다.
일 실시예에서, 웨어러블 디바이스(402F)에 제공되는 단축키는 단축키가 웨어러블 디바이스의 착용자에게 관련있을 시간 및/또는 위치에서 시계 화면(832) 상에 디스플레이될 수 있다. 단축키가 웨어러블 디바이스(402F)의 착용자에게 관련있을 시간 및/또는 위치는 웨어러블 디바이스(402F)와 모바일 폰(402E) 사이의 피어-투-피어 통신 채널(354)을 통해 동기화된 컨텍스트 정보에 기초하여 뿐만 아니라 네트워크(420)를 통해 확립된 네트워크 중심 채널(352)을 통해 웨어러블 디바이스(402F)에 동기화된 이력 정보에 기초하여 웨어러블 디바이스에 의해 결정될 수 있다. 단축키에 관한 이력 정보가 제공될 수 있는데, 이는 단축키와 연관된 액션이 웨어러블 디바이스(402F)의 착용자에 의해 수행되었던 과거 시간들 및/또는 위치들을 표시한다. 그러한 이력 정보는 네트워크(420)를 통해 확립된 네트워크 중심 채널(352)을 통해 웨어러블 디바이스(402F)에 제공될 수 있는데, 그 이유는 그러한 정보가 웨어러블 디바이스(402F)가 외부 전원을 갖는 동안 가장 잘 동기화될 그러한 볼륨을 가질 수 있기 때문이다. 예를 들어, 사용자가 특정 시간 또는 특정 위치에서 스마트폰 애플리케이션(834)을 통해 음식 또는 음료를 규칙적으로 주문하는 것으로 결정되었던 경우, 스마트폰 애플리케이션(834)은 사용자의 활동 이력에 기초하여 관련 시간 및/또는 위치에서 시계 화면(832)을 통해 사용자에게 단축키를 디스플레이하라고 웨어러블 디바이스(402F)에게 요청할 수 있다. 관련 단축키를 디스플레이하라는 요청은 모바일 폰(402E)과 웨어러블 디바이스(402F) 사이에 확립된 피어-투-피어 채널(354)을 통해 스마트폰 애플리케이션(834)으로부터 웨어러블 디바이스(402F)로 중계될 수 있다. 웨어러블 디바이스(402F)의 시계 화면(832) 상에 디스플레이된 관련 단축키를 구성하는데 사용되는 데이터는 클라우드 서비스 제공자와 연관된 저장 위치와 같은 원격 저장 위치와 함께, 네트워크(420)를 통해 확립된 네트워크 중심 채널(352)을 통해 웨어러블 디바이스에 동기화될 수 있다.
일 실시예에서, 웨어러블 디바이스(402F) 및 모바일 폰(402E) 각각은 시계 화면(832)을 통해 사용자에게 단축키들을 디스플레이하도록 가장 관련있는 시간들을 결정하기 위해 거동 데이터에 기초하여 훈련될 수 있는 기계 학습 모델들을 갖는다. 기계 학습 모델들은 각각, 웨어러블 디바이스(402F) 및 모바일 폰(402E)이 각각 외부 전원에 부착되어 있는 동안 훈련될 수 있다. 디바이스들을 훈련시키는 데 사용되는 데이터는 네트워크(420)를 통하여 네트워크 중심 채널(352)을 통해 검색될 수 있다. 더욱이, 단축키들과 함께 스마트폰 애플리케이션(834)에 의해 디스플레이로 제공되는 그래픽 데이터는, 웨어러블 디바이스(402F)가 외부 전원에 연결될 때 웨어러블 디바이스(402F)에 의해 네트워크(420)를 통하여 확립된 네트워크 중심 채널(352)을 통해 제공될 수 있다. 일 실시예에서, 웨어러블 디바이스(402F)는 주어진 시간 기간 동안 시계 화면(832)을 통해 다수의 단축키들을 디스플레이할 기회를 가질 수 있다. 네트워크(420)를 통해 확립된 네트워크 중심 채널(352)을 통하여 웨어러블 디바이스(402F)와 동기화된 데이터는 로컬 기계 학습 모델을 훈련시키는 데 사용될 수 있으며, 이는 이어서 어느 단축키들이 주어진 시간 기간 내에 사용자에게 가장 관련있는지를 결정할 수 있다. 이어서, 가장 관련있는 단축키들이 시계 화면을 통해 디스플레이될 수 있다. 일 실시예에서, 웨어러블 디바이스(402F) 상에서 기계 학습 모델을 훈련시키는 데 사용되는 데이터는 또한 모바일 폰(402E)과 동기화될 수 있으며, 이는 또한, 웨어러블 디바이스(402F)의 임의의 관련있는 단축키들의 디스플레이가 요청되어야 하는지를 모바일 폰(402E)이 결정할 수 있게 하기 위해 기계 학습 모델을 훈련시킬 수 있다.
도 8c에 도시된 바와 같이, 사용자가 그들의 전자 디바이스들을 사용하여 개인적으로 소비된 시간의 양을 관리하거나 제한하도록 허용하기 위해 거동 데이터의 서브세트가 사용될 수 있다. 부가적으로, 부모는 전체 사용 제한들 또는 애플리케이션 사용 제한들과 같은 사용 제한들을 클라우드 서비스 계정들의 패밀리 내의 아동 계정과 연관된 디바이스들에 적용할 수 있다.
일 실시예에서, 사용 데이터는, 아동 사용자로서 지정된 클라우드 서비스 계정과 연관된 디바이스들인 아동 디바이스들(842A 내지 842C)의 세트 사이에서 동기화될 수 있다. 아동 디바이스들(842A 내지 842C)은 개별적으로 본 명세서에 설명된 임의의 전자 디바이스일 수 있다. 본 명세서에 설명된 사용 데이터의 다양한 요소들은 피어-투-피어 또는 네트워크-기반을 사용하여 디바이스들 사이에서 동기화될 수 있고, 동기화는 피어-투-피어 또는 네트워크-기반(예를 들어, 클라우드) 데이터 동기화를 사용하여 수행될 수 있다. 제한들은 특정 카테고리들의 애플리케이션들/웹사이트들, 및/또는 특정 디바이스 기능들(예를 들어, 전화 시간, 일반적인 스크린 시간, 오디오 시간)에 대해 설정될 수 있다. 제한들은 또한 전체 디바이스 사용 시간에 대해 설정될 수 있다. 아동 디바이스들(842A 내지 842C) 각각 상의 활동은 집계되어 아동 클라우드 데이터(843)에 저장될 수 있다. 제1 세트의 액션들이 아동 디바이스(842A) 상에서 수행되고, 그 후에 제2 세트의 액션들이 아동 디바이스(842B) 상에서 수행되면, 아동 디바이스(842A)와 아동 디바이스(842B) 사이의 피어-투-피어 연결을 통해, 또는 아동 디바이스(842A)가 활동 데이터를 아동 클라우드 데이터(843)에 제공함으로써, 아동 디바이스(842A) 상에서 수행된 액션들에 대한 업데이트된 데이터가 아동 디바이스(842B)에 제공될 수 있다. 아동 디바이스(842B) 상에서 수행되는 활동은 또한, 예를 들어, 아동 디바이스(842B)가 아동 클라우드 데이터(843)에 업데이트들을 제공하도록 허용되는 업데이트 간격 동안, 아동 클라우드 데이터(843)에 제공될 수 있다.
일 실시예에서, 아동 클라우드 데이터(843)는 부모 디바이스(845)가 부과된 제한들에 대한 집계 및/또는 개별화된 활동을 관찰할 수 있게 하기 위해 부모 클라우드 데이터(844)와 선택적으로 동기화될 수 있다. 부모 디바이스(845)가 스마트폰 디바이스로서 예시되지만, 부모 디바이스(845)는 본 명세서에 설명된 임의의 전자 디바이스일 수 있다. 일 실시예에서, 아동 디바이스들(842A 내지 842C) 상의 활동 데이터는 피어-투-피어 연결을 사용하여 부모 디바이스(845)와 동기화된다. 일 실시예에서, 부모 디바이스(845)는 또한 아동 디바이스들(842A 내지 842C)에 의해 수집된 건강 데이터(예를 들어, 심박수 등)를 수신할 수 있다. 건강 데이터는 다양한 아동 디바이스들(842A 내지 842C) 사이에서 동기화될 수 있고, 집계 데이터가 부모 디바이스(845)로 송신될 수 있다. 아동 디바이스들(842A 내지 842C)의 세트가 각각 동기화되어 집계 데이터의 일관적 세트를 유지할 수 있기 때문에, 부모 디바이스(845)가 아동 디바이스들(842A 내지 842C) 중 임의의 하나의 피어-투-피어 무선 범위 내에 들어오기만 하면, 부모 디바이스(805)는 피어-투-피어 연결을 통해, 업데이트된 활동 데이터를 수신할 수 있다.
도 9는 일 실시예에 따른, 디바이스 활동 동기화의 방법(900)의 흐름도를 예시한다. 방법(900)은 디바이스 활동을 동일한 클라우드 서비스 계정 또는 계정들의 패밀리와 연관된 다른 전자 디바이스와 동기화시키도록 본 명세서에 설명된 전자 디바이스에 의해 수행될 수 있다.
블록(905)에 도시된 바와 같이, 방법(900)은 제1 디바이스에서 사용자에 대한 활동 데이터를 수신하는 것을 포함한다. 제1 디바이스는 본 명세서에 설명된 바와 같은 전자 디바이스(예를 들어, 모바일 디바이스(102A, 102B 등))일 수 있다. 예를 들어, 데이터 제공자는 다른 디바이스들과 동기화되기 위해 원시 또는 이산화된 데이터를 업데이트 풀(update pool)에 제공할 수 있다. 제공된 데이터는 도 3에서와 같은 메모리(330)와 같은 메모리에 저장될 수 있다. 이어서, 블록(910)에 도시된 바와 같이, 제1 사용자 디바이스는 제1 디바이스에서 업데이트된 데이터의 존재를 표시하는 플래그를 설정할 수 있다. 예를 들어, 전자 디바이스는 업데이트된 정보가 디바이스 상에서 이용가능하다는 것을 표시하는 비트를 광고 데이터 내에서 설정할 수 있다. 일 실시예에서, 방법(900)은 블록(915)에 도시된 바와 같이, 선택적으로 제1 디바이스에서 활동을 중단하는 것을 포함한다.
블록(920)에 도시된 바와 같이, 방법(900)은 제2 디바이스에서 활동의 시작을 검출하기 위한 활동 동기화 로직을 추가로 포함한다. 블록(925)에 도시된 바와 같이, 활동이 제2 디바이스에서 시작될 때, 제2 디바이스는 제2 디바이스가 인식하고 있는 다른 디바이스들과 연관된 업데이트 플래그들을 검색할 수 있다. 다른 디바이스들은 클라우드 서비스 계정 또는 클라우드 서비스 계정들의 패밀리와 연관된 디바이스들일 수 있다. 다른 디바이스들은 제1 디바이스를 포함하는(그러나 이에 제한되지 않음) 제2 디바이스의 무선 라디오 범위 내에 있는 디바이스들일 수 있다.
이어서, 블록(930)에 도시된 바와 같이, 제2 디바이스는 업데이트된 디바이스 활동을 검색하기 위해 사용할 통신 채널을 선택할 수 있다. 통신 채널은 본 명세서에 설명된 바와 같은 채널 선택 로직을 사용하여 선택될 수 있다. 이어서, 블록(935)에 도시된 바와 같이, 제2 디바이스는 선택된 통신 채널을 통해, 업데이트된 디바이스 활동을 검색할 수 있다.
예시적인 프레임워크들 및 애플리케이션 프로그래밍 인터페이스들
본 명세서에 설명된 실시예들은, 호출 프로그램 코드가 하나 이상의 프로그래밍 인터페이스들을 통해 호출되는 다른 프로그램 코드와 상호작용하는 환경에서의 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)들을 포함한다. 다양한 종류의 파라미터들을 추가로 포함할 수 있는 다양한 함수 호출들, 메시지들 또는 다른 유형들의 인보케이션(invocation)들은 API들을 통해 호출 프로그램과 호출되는 코드 사이에서 전달될 수 있다. 또한, API는, API에서 정의되고, 호출된 프로그램 코드에서 구현되는 데이터 유형들 또는 클래스들을 사용하는 능력을 호출 프로그램 코드에 제공할 수 있다.
API는 API 호출 컴포넌트의 개발자(제3자의 개발자일 수 있음)가 API 구현 컴포넌트에 의해 제공되는 특정된 특징들을 레버리징하게 한다. 하나의 API 호출 컴포넌트가 있을 수 있거나, 하나 초과의 그러한 컴포넌트가 있을 수 있다. API는 애플리케이션으로부터의 서비스 요청을 지원하기 위하여 컴퓨터 시스템 또는 프로그램 라이브러리가 제공하는 소스 코드 인터페이스일 수 있다. 운영 체제(OS)는 다수의 API들을 가져서 OS 상에서 실행되는 애플리케이션이 그 API들 중 하나 이상을 호출하게 할 수 있으며, (프로그램 라이브러리와 같은) 서비스는 다수의 API들을 가져서 그 서비스를 사용하는 애플리케이션이 그 API들 중 하나 이상을 호출하게 할 수 있다. API는 애플리케이션이 구축될 때 인터프리팅(interpreting)되거나 컴파일링(compiling)될 수 있는 프로그래밍 언어에 의해 규정될 수 있다.
일부 실시예들에서, API 구현 컴포넌트는 하나 초과의 API를 제공할 수 있고, API는 각각 API 구현 컴포넌트에 의해 구현되는 기능성의 상이한 양태들에 액세스하는 상이한 양태들의 상이한 뷰 또는 상이한 양태들을 갖는 상이한 뷰를 제공한다. 예를 들어, API 구현 컴포넌트 중 하나의 API는 제1 기능 세트를 제공할 수 있고 제3자의 개발자에게 노출될 수 있으며, API 구현 컴포넌트 중 다른 API는 숨겨질(노출되지 않을) 수 있고 제1 기능 세트의 서브세트를 제공하고 또한 제1 기능 세트에는 없는 테스팅 및 디버깅 기능과 같은 다른 기능 세트를 제공할 수 있다. 다른 실시예들에서, API 구현 컴포넌트 자체는 기본 API를 통해 하나 이상의 다른 컴포넌트들을 호출할 수 있고, 따라서 API 호출 컴포넌트와 API 구현 컴포넌트 둘 모두가 될 수 있다.
API는 API 호출 컴포넌트들이 API 구현 컴포넌트의 특정된 특징들에 액세스하여 이를 사용할 때 API 호출 컴포넌트가 사용하는 언어와 파라미터를 정의한다. 예를 들면, API 호출 컴포넌트는 API에 의해 노출된 하나 이상의 API 호출들 또는 (예를 들면, 기능 또는 메소드 호출들에 의하여 구현된) 인보케이션들을 통해 API 구현 컴포넌트의 특정된 특징들에 액세스하고, API 호출들 또는 인보케이션들을 통해 파라미터들을 사용하여 데이터 및 제어 정보를 전달한다. API 구현 컴포넌트는 API 호출 컴포넌트로부터의 API 호출에 응답하여 API를 통해 값을 반환할 수 있다. API는 API 호출의 신택스(syntax) 및 결과(예를 들어, API 호출을 어떻게 작동시키는지 그리고 API 호출이 무엇을 하는지)를 정의하지만, API는 API 호출이 API 호출에 의하여 특정된 기능을 어떻게 성취하는지 드러내지 않을 수 있다. 호출(API 호출 컴포넌트)과 API 구현 컴포넌트 사이에서 하나 이상의 애플리케이션 프로그래밍 인터페이스들을 통해 다양한 API 호출들이 전달된다. API 호출들을 전달하는 것은 함수 호출 또는 메시지를 발행, 개시, 작동, 호출, 수신, 반환, 또는 그에 대해 응답하는 것을 포함할 수 있다. 다시 말하면, 전달은 API 호출 컴포넌트 또는 API 구현 컴포넌트 중 어느 하나에 의한 작용들을 설명할 수 있다. API의 함수 호출들 또는 다른 인보케이션들은 파라미터 리스트 또는 다른 구조를 통하여 하나 이상의 파라미터들을 주고 받을 수 있다. 파라미터는 상수, 키(key), 데이터 구조, 객체, 객체 클래스, 변수, 데이터 유형, 포인터, 배열, 리스트 또는 함수 또는 메소드에 대한 포인터, 또는 API를 통해 전달될 데이터 또는 다른 항목을 참조하기 위한 다른 방법일 수 있다.
또한, 데이터 유형 또는 클래스가 API에 의하여 제공되고 API 구현 컴포넌트에 의하여 구현될 수 있다. 따라서, API 호출 컴포넌트는 API에서 제공되는 정의들을 사용함으로써 그러한 유형들 또는 클래스들의 변수들을 선언하거나, 이들에 대한 포인터들을 사용하거나, 이들의 상수 값을 사용 또는 인스턴스화할(instantiate) 수 있다.
일반적으로, API를 사용하여 API 구현 컴포넌트에 의하여 제공되는 서비스 또는 데이터에 액세스하거나 API 구현 컴포넌트에 의하여 제공되는 동작 또는 연산의 수행을 개시할 수 있다. 예로서, API 구현 컴포넌트 및 API 호출 컴포넌트는 각각 운영 체제, 라이브러리, 디바이스 드라이버, API, 애플리케이션 프로그램, 또는 다른 모듈 중에서 임의의 것일 수 있다(API 구현 컴포넌트 및 API 호출 컴포넌트가 서로 동일하거나 상이한 유형의 모듈일 수 있음이 이해되어야 한다). API 구현 컴포넌트들은 일부 경우에 적어도 부분적으로 펌웨어, 마이크로코드 또는 다른 하드웨어 로직으로 구현될 수 있다. 일부 실시예들에서, API는 클라이언트 프로그램이 소프트웨어 개발 키트(Software Development Kit, SDK) 라이브러리에 의해 제공된 서비스들을 사용하도록 허용할 수 있다. 다른 실시예들에서, 애플리케이션 또는 다른 클라이언트 프로그램은 애플리케이션 프레임워크에 의해 제공되는 API를 사용할 수 있다. 이 실시예들에서, 애플리케이션 또는 클라이언트 프로그램은 SDK에 의해 제공되고 API에 의해 제공되는 함수들 또는 메소드들에 대한 호출들을 통합시킬 수 있거나, SDK에서 정의되고 API에 의해 제공되는 데이터 유형들 또는 객체들을 사용할 수 있다. 애플리케이션 프레임워크는 이 실시예들에서, 프레임워크에 의해 정의된 다양한 이벤트들에 응답하는 프로그램에 대한 메인 이벤트 루프(main event loop)를 제공할 수 있다. API는 애플리케이션이 애플리케이션 프레임워크를 사용하여 이벤트들 및 이벤트들에 대한 응답들을 특정하게 할 수 있다. 일부 구현예들에서, API 호출은 입력 능력들 및 상태, 출력 능력들 및 상태, 프로세싱 능력, 전원 상태, 저장 용량 및 상태, 통신 능력 등과 같은 측면들에 관계되는 것들을 포함하는 하드웨어 디바이스의 능력 또는 상태를 애플리케이션에 보고할 수 있고, API는 펌웨어, 마이크로코드, 또는 하드웨어 컴포넌트 상에서 부분적으로 실행되는 다른 저레벨 로직에 의하여 부분적으로 구현될 수 있다.
API 호출 컴포넌트는 로컬 컴포넌트(즉, API 구현 컴포넌트와 동일한 데이터 프로세싱 시스템 상의) 또는 네트워크를 통해 API를 통하여 API 구현 컴포넌트와 통신하는 원격 컴포넌트(즉, API 구현 컴포넌트와 상이한 데이터 프로세싱 시스템 상의)일 수 있다. API 구현 컴포넌트가 또한 API 호출 컴포넌트로서의 역할을 할 수도 있고(즉, 그것은 상이한 API 구현 컴포넌트에 의해 노출된 API에 API 호출을 행할 수 있다), 상이한 API 호출 컴포넌트에 노출되는 API를 구현함으로써 API 호출 컴포넌트가 또한 API 구현 컴포넌트로서의 역할을 할 수 있음이 이해되어야 한다.
API는 상이한 프로그래밍 언어들로 기록된 다수의 API 호출 컴포넌트들이 API 구현 컴포넌트와 통신하도록 허용할 수 있지만(따라서, API는 API 구현 컴포넌트와 API 호출 컴포넌트 사이에서 호출과 반환을 변환시키기 위한 특징부들을 포함할 수 있음); API는 특정 프로그래밍 언어의 관점에서 구현될 수 있다. 일 실시예에서, API 호출 컴포넌트는 OS 공급자로부터의 API 세트, 플러그인 공급자로부터의 다른 API 세트, 다른 API 세트의 다른 공급자(예를 들어, 소프트웨어 라이브러리의 공급자) 또는 생성자로부터의 다른 API 세트와 같은, 상이한 공급자들로부터의 API들을 호출할 수 있다.
도 10은 본 발명의 일부 실시예들에서 사용될 수 있는 예시적인 API 아키텍처를 예시하는 블록도이다. 도 10에 도시된 바와 같이, API 아키텍처(1000)는 API(1020)를 구현하는 API 구현 컴포넌트(1010)(예를 들어, 운영 체제, 라이브러리, 디바이스 드라이버, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)를 포함한다. API(1020)는 하나 이상의 함수들, 메소드들, 클래스들, 객체들, 프로토콜들, 데이터 구조들, 포맷들, 및/또는 API 호출 컴포넌트(1030)에 의해 사용될 수 있는 API 구현 컴포넌트의 다른 특징들을 특정한다. API(1020)는 API 구현 컴포넌트 내의 함수가 어떻게 API 호출 컴포넌트로부터 파라미터들을 받는지, 그리고 이 함수가 어떻게 API 호출 컴포넌트로 결과를 반환하는지를 특정하는 적어도 하나의 호출 규약(calling convention)을 특정할 수 있다. API 호출 컴포넌트(1030)(예를 들어, 운영 체제, 라이브러리, 디바이스 드라이버, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)는 API(1020)를 통해 API 호출을 행하여, API(1020)에 의해 특정되는 API 구현 컴포넌트(1010)의 특징들에 액세스하고 이를 사용한다. API 구현 컴포넌트(1010)는 API 호출에 응답하여 API(1020)를 통해 API 호출 컴포넌트(1030)로 값을 반환할 수 있다.
API 구현 컴포넌트(1010)가 API(1020)를 통해 특정되지 않고 API 호출 컴포넌트(1030)에 의해 이용가능하지 않은 부가적인 함수들, 메소드들, 클래스들, 데이터 구조들, 및/또는 다른 특징들을 포함할 수 있음이 이해될 것이다. API 호출 컴포넌트(1030)가 API 구현 컴포넌트(1010)와 동일한 시스템 상에 있을 수 있거나, 원격으로 위치되어 네트워크를 통해 API(1020)를 사용하여 API 구현 컴포넌트(1010)에 액세스할 수 있다는 것을 이해해야 한다. 도 10이 API(1020)와 상호작용하는 단일 API 호출 컴포넌트(1030)를 예시하지만, API 호출 컴포넌트(1030)와는 상이한 언어(또는 동일한 언어)로 작성될 수 있는 다른 API 호출 컴포넌트들이 API(1020)를 사용할 수 있다는 것을 이해해야 한다.
API 구현 컴포넌트(1010), API(1020) 및 API 호출 컴포넌트(1030)는 기계(예를 들어, 컴퓨터 또는 다른 데이터 프로세싱 시스템)에 의해 판독가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함하는 기계 판독가능 매체에 저장될 수 있다. 예를 들어, 기계 판독가능 매체는 자기 디스크, 광 디스크, 랜덤 액세스 메모리; 판독 전용 메모리, 플래시 메모리 디바이스 등을 포함한다.
도 11a 및 도 11b는 실시예들에 따른 예시적인 API 소프트웨어 스택들(1100, 1110)의 블록도들이다. 도 11a는 애플리케이션들(1102)이 서비스 API를 사용하여 서비스 A 또는 서비스 B로의 호출을 행하고 OS API를 사용하여 운영 체제(1104)로의 호출을 행할 수 있는 예시적인 API 소프트웨어 스택(1100)을 도시한다. 부가적으로, 서비스 A 및 서비스 B는 여러 OS API들을 사용하여 운영 체제(1104)에 대한 호출을 행할 수 있다.
도 11b는 애플리케이션 1, 애플리케이션 2, 서비스 1, 서비스 2, 및 운영 체제(1104)를 포함하는 예시적인 소프트웨어 스택(1110)을 도시한다. 도시된 바와 같이, 서비스 2는 2개의 API들을 갖는데, 그 중 하나(서비스 2 API 1)는 애플리케이션 1로부터 호출을 수신하고 그것에 값을 반환하며, 다른 것(서비스 2 API 2)은 애플리케이션 2로부터 호출을 수신하고 그것에 값을 반환한다. 서비스 1(예를 들어, 소프트웨어 라이브러리일 수 있음)은 OS API 1로의 호출을 행하고 그로부터 반환 값을 수신하며, 서비스 2(예를 들어, 소프트웨어 라이브러리일 수 있음)는 OS API 1 및 OS API 2 둘 모두로의 호출을 행하고 그들로부터 반환 값을 수신한다. 애플리케이션 2는 OS API 2로의 호출을 행하고 그로부터 반환 값을 수신한다.
부가적 예시적인 컴퓨팅 디바이스들
도 12는 일 실시예에 따른, 모바일 또는 임베디드 디바이스에 대한 디바이스 아키텍처(1200)의 블록도이다. 디바이스 아키텍처(1200)는 메모리 인터페이스(1202), 하나 이상의 데이터 프로세서들을 포함하는 프로세싱 시스템(1204), 이미지 프로세서들 및/또는 그래픽 프로세싱 유닛들, 및 주변기기 인터페이스(1206)를 포함한다. 본 명세서에 사용되는 바와 같이, 용어 "프로세서"는 마이크로프로세서, 마이크로제어기, 복합 명령어 세트 컴퓨팅(CISC) 마이크로프로세서, 감소된 명령어 세트(RISC) 마이크로프로세서, 매우 긴 명령어 워드(VLIW) 마이크로프로세서, 또는 임의의 다른 유형의 프로세서 또는 프로세싱 회로와 같은(그러나 이로 제한되지 않음) 임의의 유형의 계산 요소를 의미한다. 다양한 컴포넌트들은 하나 이상의 통신 버스들 또는 신호 라인들에 의해 커플링될 수 있다. 다양한 컴포넌트들은 별개의 논리 컴포넌트들 또는 디바이스들일 수 있거나, 시스템 온 칩 집적 회로에서와 같이 하나 이상의 집적 회로들 내에 통합될 수 있다. 메모리 인터페이스(1202)는 메모리(1250)에 커플링될 수 있는데, 메모리(1250)는 정적 랜덤 액세스 메모리(SRAM) 또는 동적 랜덤 액세스 메모리(DRAM)와 같은 고속 랜덤 액세스 메모리 및/또는 플래시 메모리(예를 들어, NAND 플래시, NOR 플래시 등)와 같은(그러나 이로 제한되지 않음) 비휘발성 메모리를 포함할 수 있다.
센서들, 디바이스들 및 서브시스템들은 다수의 기능들을 용이하게 하기 위해 주변기기 인터페이스(1206)에 커플링될 수 있다. 예를 들어, 모션 센서(1210), 광 센서(1212) 및 근접 센서(1214)는 모바일 디바이스 기능을 용이하게 하기 위하여 주변기기 인터페이스(1206)에 커플링될 수 있다. 지문 인식을 위한 지문 스캐너 또는 얼굴 인식을 위한 이미지 센서와 같은 하나 이상의 생체측정 센서(들)(1215)가 또한 존재할 수 있다. 다른 센서들(1216)이 또한 위치확인 시스템(예를 들어, GPS 수신기), 온도 센서, 또는 다른 감지 디바이스와 같은 주변기기 인터페이스(1206)에 연결되어 관련 기능들을 용이하게 할 수 있다. 카메라 서브시스템(1220) 및 광학 센서(1222), 예를 들어, CCD(charged coupled device) 또는 CMOS(complementary metal-oxide semiconductor) 광학 센서는, 사진들 및 비디오 클립들을 레코딩하는 것과 같은, 카메라 기능들을 용이하게 하기 위해 이용될 수 있다.
통신 기능들은, 원격 소스로부터의 데이터 패킷들 및/또는 데이터 스트림들을 수신 또는 송신하도록 구성될 수 있는 라디오 주파수 수신기들 및 송신기들 및/또는 광학(예를 들어, 적외선) 수신기들 및 송신기들을 포함할 수 있는 하나 이상의 무선 통신 서브시스템들(1224)을 통해 용이하게 될 수 있다. 무선 통신 서브시스템들(1224)의 구체적인 설계 및 구현은 모바일 디바이스가 동작하도록 의도되어 있는 통신 네트워크(들)에 의존할 수 있다. 예를 들어, 도시된 디바이스 아키텍처(1200)를 포함하는 모바일 디바이스는 GSM 네트워크, CDMA 네트워크, LTE 네트워크, Wi-Fi 네트워크, 블루투스 네트워크, 또는 임의의 다른 무선 네트워크를 통해 동작하도록 설계된 무선 통신 서브시스템들(1224)을 포함할 수 있다. 특히, 무선 통신 서브시스템들(1224)은 통신 메커니즘을 제공할 수 있으며, 이를 통해 미디어 재생 애플리케이션이 원격 미디어 서버로부터 리소스들을 검색하거나 또는 원격 캘린더 또는 이벤트 서버로부터 스케줄링된 이벤트들을 검색할 수 있다.
오디오 서브시스템(1226)은 음성 인식, 음성 복제, 디지털 녹음, 및 전화통신 기능들과 같은 음성 지원 기능들을 용이하게 하기 위해 스피커(1228) 및 마이크로폰(1230)에 커플링될 수 있다. 본 명세서에 설명된 스마트 미디어 디바이스들에서, 오디오 서브시스템(1226)은 가상 서라운드 사운드를 위한 지원을 포함하는 고품질 오디오 시스템일 수 있다.
I/O 서브시스템(1240)은 터치 스크린 제어기(1242) 및/또는 다른 입력 제어기(들)(1245)를 포함할 수 있다. 디스플레이 디바이스를 포함하는 컴퓨팅 디바이스들의 경우, 터치 스크린 제어기(1242)는 터치 감응형 디스플레이 시스템(1246)(예를 들어, 터치 스크린)에 커플링될 수 있다. 터치 감응형 디스플레이 시스템(1246)과 터치 스크린 제어기(1242)는, 예를 들어, 용량성, 저항성, 적외선, 및 표면 탄성파(surface acoustic wave) 기술들 뿐만 아니라, 터치 감응형 디스플레이 시스템(1246)과의 하나 이상의 접촉점들을 결정하기 위한 다른 근접 센서 어레이들 또는 다른 요소들을 포함하는(그러나 이에 제한되지 않음) 복수의 터치 및 압력 감응성 기술들 중 임의의 기술을 사용하여 접촉 및 이동 및/또는 압력을 검출할 수 있다. 터치 감응형 디스플레이 시스템(1246)에 대한 디스플레이 출력은 디스플레이 제어기(1243)에 의해 생성될 수 있다. 일 실시예에서, 디스플레이 제어기(1243)는 터치 감응형 디스플레이 시스템(1246)에 가변 프레임 레이트로 프레임 데이터를 제공할 수 있다.
일 실시예에서, 모션 센서(1210), 광 센서(1212), 근접 센서(1214), 또는 다른 센서들(1216) 중 하나 이상으로부터 수신된 데이터를 모니터링, 제어, 및/또는 프로세싱하도록 센서 제어기(1244)가 포함된다. 센서 제어기(1244)는 센서들로부터의 센서 데이터의 분석에 의해 하나 이상의 모션 이벤트들 또는 활동들의 발생을 결정하도록 센서 데이터를 해석하기 위한 로직을 포함할 수 있다.
일 실시예에서, I/O 서브시스템(1240)은 다른 입력/제어 디바이스들(1248), 예를 들어 하나 이상의 버튼들, 로커 스위치(rocker switch)들, 지동륜(thumb-wheel)들, 적외선 포트, USB 포트, 및/또는 스타일러스와 같은 포인터 디바이스, 또는 스피커(1228) 및/또는 마이크로폰(1230)의 볼륨 제어를 위한 업/다운 버튼과 같은 제어 디바이스들에 커플링될 수 있는 다른 입력 제어기(들)(1245)를 포함한다.
일 실시예에서, 메모리 인터페이스(1202)에 커플링된 메모리(1250)는 휴대용 운영 체제 인터페이스(portable operating system interface, POSIX) 호환 및 비-호환 운영 체제 또는 임베디드 운영 체제를 포함하는 운영 체제(1252)에 대한 명령어들을 저장할 수 있다. 운영 체제(1252)는 기본 시스템 서비스들을 취급하고 하드웨어 의존형 태스크들을 수행하기 위한 명령어들을 포함할 수 있다. 일부 구현예들에서, 운영 체제(1252)는 커널일 수 있다.
메모리(1250)는 또한 예를 들어, 원격 웹 서버들로부터 웹 리소스들을 검색하기 위해 하나 이상의 부가적인 디바이스들, 하나 이상의 컴퓨터들 및/또는 하나 이상의 서버들과의 통신을 용이하게 하는 통신 명령어들(1254)을 저장할 수 있다. 메모리(1250)는 또한 그래픽 사용자 인터페이스 프로세싱을 용이하게 하는 그래픽 사용자 인터페이스 명령어들을 포함하는 사용자 인터페이스 명령어들(1256)을 포함할 수 있다.
부가적으로, 메모리(1250)는 센서 관련 프로세싱 및 기능들을 용이하게 하기 위한 센서 프로세싱 명령어들(1258); 전화 관련 프로세스들 및 기능들을 용이하게 하기 위한 전화통신 명령어들(1260); 전자 메시징 관련 프로세스들 및 기능들을 용이하게 하기 위한 메시징 명령어들(1262); 웹 브라우징 관련 프로세스들 및 기능들을 용이하게 하기 위한 웹 브라우저 명령어들(1264); 미디어 프로세싱-관련 프로세스들 및 기능들을 용이하게 하기 위한 미디어 프로세싱 명령어들(1266); 위치 기반 기능성을 용이하게 하기 위한 GPS 및/또는 내비게이션 명령어들(1268) 및 Wi-Fi 기반 위치 명령어들을 포함하는 위치 서비스 명령어들; 카메라 관련 프로세스들 및 기능들을 용이하게 하기 위한 카메라 명령어들(1270); 및 다른 프로세스들 및 기능들, 예를 들어, 보안 프로세스들 및 기능들, 및 시스템들에 관련된 프로세스들 및 기능들을 용이하게 하기 위한 다른 소프트웨어 명령어들(1272)을 저장할 수 있다. 메모리(1250)는 또한 기타 소프트웨어 명령어들, 예를 들어 웹 비디오 관련 프로세스들 및 기능들을 용이하게 하기 위한 웹 비디오 명령어들; 및/또는 웹 쇼핑 관련 프로세스들 및 기능들을 용이하게 하기 위한 웹 쇼핑 명령어들을 저장할 수 있다. 일부 구현예들에서, 미디어 프로세싱 명령어들(1266)은 오디오 프로세싱 명령어들 및 비디오 프로세싱 명령어들로 나뉘어져서, 오디오 프로세싱-관련 프로세스들 및 기능들 그리고 비디오 프로세싱-관련 프로세스들 및 기능들을 각각 용이하게 한다. IMEI(International Mobile Equipment Identity)(1274)와 같은 모바일 장비 식별자 또는 유사한 하드웨어 식별자가 또한 메모리(1250)에 저장될 수 있다.
위에 식별된 명령어들 및 애플리케이션들 각각은 위에서 설명된 하나 이상의 기능들을 수행하기 위한 명령어들의 세트에 대응할 수 있다. 이들 명령어들은 별개의 소프트웨어 프로그램들, 절차들, 또는 모듈들로서 구현될 필요는 없다. 메모리(1250)는 부가적인 명령어들 또는 더 적은 수의 명령어들을 포함할 수 있다. 또한, 다양한 기능들은, 하나 이상의 신호 프로세싱 및/또는 ASIC(application specific integrated circuit)들을 포함하여, 하드웨어로 그리고/또는 소프트웨어로 구현될 수 있다.
도 13은 일 실시예에 따른, 컴퓨팅 시스템(1300)의 블록도이다. 예시된 컴퓨팅 시스템(1300)은, 예를 들어, 데스크톱 컴퓨터 시스템, 랩톱 컴퓨터 시스템, 태블릿 컴퓨터 시스템, 셀룰러 전화기, 셀룰러-가능 PDA를 포함하는 개인 휴대 정보 단말기(PDA), 셋톱 박스, 엔터테인먼트 시스템 또는 다른 소비자 전자 디바이스들, 스마트 기기 디바이스, 또는 스마트 미디어 재생 디바이스의 하나 이상의 구현예들을 포함하는 다양한 컴퓨팅 시스템들(유선 또는 무선 중 어느 하나임)을 표현하도록 의도된다. 대안적인 컴퓨팅 시스템들은 더 많은, 더 적은 그리고/또는 상이한 컴포넌트들을 포함할 수 있다. 컴퓨팅 시스템(1300)은 컴퓨팅 디바이스 및/또는 컴퓨팅 디바이스가 연결될 수 있는 서버 디바이스를 제공하는 데 사용될 수 있다.
컴퓨팅 시스템(1300)은, 정보를 통신하기 위한 버스(1335) 또는 다른 통신 디바이스, 및 버스(1335)에 커플링되고 정보를 프로세싱할 수 있는 프로세서(들)(1310)를 포함한다. 컴퓨팅 시스템(1300)이 단일 프로세서를 갖는 것으로 예시되지만, 컴퓨팅 시스템(1300)은 다수의 프로세서들 및/또는 코프로세서들을 포함할 수 있다. 컴퓨팅 시스템(1300)은 랜덤 액세스 메모리(1320)(RAM) 또는 버스(1335)에 커플링된 다른 동적 저장 디바이스를 추가로 포함할 수 있다. 메모리(1320)는 프로세서(들)(1310)에 의해 실행될 수 있는 정보 및 명령어들을 저장할 수 있다. 메인 메모리(1320)는 또한, 프로세서(들)(1310)에 의한 명령어들의 실행 동안 임시 변수들 또는 다른 중간 정보를 저장하는 데 사용될 수 있다.
컴퓨팅 시스템(1300)은 또한, 버스(1335)에 커플링되고, 프로세서(들)(1310)에 대한 정보 및 명령어들을 저장할 수 있는 판독 전용 메모리(ROM)(1330) 및/또는 다른 데이터 저장 디바이스(1340)를 포함할 수 있다. 데이터 저장 디바이스(1340)는 플래시 메모리 디바이스, 자기 디스크, 또는 광학 디스크와 같은 다양한 저장 디바이스들일 수 있거나 그를 포함할 수 있고, 버스(1335)를 통해 또는 원격 주변기기 인터페이스를 통해 컴퓨팅 시스템(1300)에 커플링될 수 있다.
컴퓨팅 시스템(1300)은 또한 버스(1335)를 통해 디스플레이 디바이스(1350)에 커플링되어, 사용자에게 정보를 디스플레이할 수 있다. 컴퓨팅 시스템(1300)은 또한, 정보 및 커맨드 선택들을 프로세서(들)(1310)에 통신하도록 버스(1335)에 커플링될 수 있는 영숫자 및 다른 키들을 포함하는 영숫자 입력 디바이스(1360)를 포함할 수 있다. 다른 유형의 사용자 입력 디바이스는 방향 정보 및 커맨드 선택들을 프로세서(들)(1310)에 통신하고 디스플레이 디바이스(1350) 상에서의 커서 움직임을 제어하기 위한 터치패드, 마우스, 트랙볼, 또는 커서 방향 키들과 같은 커서 제어(1370) 디바이스를 포함한다. 컴퓨팅 시스템(1300)은 또한 하나 이상의 네트워크 인터페이스들(1380)을 통해 통신가능하게 커플링되는 원격 디바이스로부터 사용자 입력을 수신할 수 있다.
컴퓨팅 시스템(1300)은 로컬 영역 네트워크와 같은 네트워크에 대한 액세스를 제공하기 위한 하나 이상의 네트워크 인터페이스(들)(1380)를 추가로 포함할 수 있다. 네트워크 인터페이스(들)(1380)는, 예를 들어, 하나 이상의 안테나(들)를 표현할 수 있는 안테나(1385)를 갖는 무선 네트워크 인터페이스를 포함할 수 있다. 컴퓨팅 시스템(1300)은 Wi-Fi, 블루투스®, 근거리 통신(NFC), 및/또는 셀룰러 전화 인터페이스들의 조합과 같은 다수의 무선 네트워크 인터페이스들을 포함할 수 있다. 예를 들어, 네트워크 인터페이스(들)(1380)는 또한, 예를 들어, 이더넷 케이블, 동축 케이블, 광섬유 케이블, 직렬 케이블, 또는 병렬 케이블일 수 있는 네트워크 케이블(1387)을 통해 원격 디바이스들과 통신하기 위한 유선 네트워크 인터페이스를 포함할 수 있다.
일 실시예에서, 네트워크 인터페이스(들)(1380)는, 예를 들어, IEEE 802.11 표준들을 준수함으로써 로컬 영역 네트워크에 대한 액세스를 제공할 수 있고, 그리고/또는, 무선 네트워크 인터페이스는, 예를 들어, 블루투스 표준들을 준수함으로써 개인 영역 네트워크에 대한 액세스를 제공할 수 있다. 다른 무선 네트워크 인터페이스들 및/또는 프로토콜들이 또한 지원될 수 있다. 무선 LAN 표준들을 통한 통신에 부가하여 또는 그 대신, 네트워크 인터페이스(들)(1380)는, 예를 들어, 시분할 다중 액세스(TDMA) 프로토콜들, 모바일 통신들을 위한 글로벌 시스템(GSM) 프로토콜들, 코드 분할 다중 액세스(CDMA) 프로토콜들, 롱 텀 에볼루션(LTE) 프로토콜들, 및/또는 임의의 다른 유형의 무선 통신 프로토콜을 사용하여 무선 통신들을 제공할 수 있다.
컴퓨팅 시스템(1300)은 하나 이상의 에너지원들(1305) 및 하나 이상의 에너지 측정 시스템들(1345)을 추가로 포함할 수 있다. 에너지원들(1305)은 외부 전원에 커플링된 AC/DC 어댑터, 하나 이상의 배터리들, 하나 이상의 전하 저장 디바이스들, USB 충전기, 또는 다른 에너지원을 포함할 수 있다. 에너지 측정 시스템들은 미리 결정된 기간 동안 컴퓨팅 시스템(1300)에 의해 소비된 에너지를 측정할 수 있는 적어도 하나의 전압 또는 암페어수 측정 디바이스를 포함한다. 부가적으로, 예를 들어, 디스플레이 디바이스, 냉각 서브시스템, WiFi 서브시스템, 또는 다른 자주 사용되거나 높은-에너지 소비 서브시스템에 의해 소비된 에너지를 측정하는 하나 이상의 에너지 측정 시스템들이 포함될 수 있다.
일부 실시예들에서, 본 명세서에 설명된 해시 함수들은 시스템(클라이언트 디바이스 또는 서버)의 특수화된 하드웨어 회로부(또는 펌웨어)를 이용할 수 있다. 예를 들어, 함수는 하드웨어 가속 함수일 수 있다. 부가적으로, 일부 실시예들에서, 시스템은 특수화된 명령어 세트의 일부인 함수를 사용할 수 있다. 예를 들어, 특정 유형의 마이크로프로세서들에 대한 명령어 세트 아키텍처로의 확장일 수 있는 명령어 세트를 사용할 수 있다. 따라서, 일 실시예에서, 시스템은 이들 명령어 세트들을 사용하여 본 명세서에 설명된 기능들을 수행하는 속도를 개선시키기 위해 암호화 동작들을 수행하기 위한 하드웨어 가속 메커니즘을 제공할 수 있다.
부가적으로, 하드웨어 가속 엔진들/기능들은, 별개의 프로세서로서 SoC로 통합되거나, 또는 특수 목적 CPU(또는 코어)로서 포함되거나, 또는 회로 기판 상에 코프로세서로 통합되거나, 또는 외부 회로 기판의 칩 등 상에 포함되는 하드웨어/펌웨어를 포함할 수 있는 다양한 구성들을 포함하여, 하드웨어, 펌웨어, 또는 이들의 조합 내의 임의의 구현들을 포함하는 것으로 고려된다.
용어 "대략" 또는 "실질적으로"가 본 명세서에 사용될 수 있으며, "거의 실시가능한", "기술적 제한들 내" 등으로 해석될 수 있음에 유의하여야 한다. 부가적으로, 용어 "또는"의 사용은 달리 명시되지 않는 한 포괄적인 또는(예를 들어 및/또는)을 표시한다.
전술한 설명에서, 본 개시내용의 예시적인 실시예들이 설명되었다. 본 개시내용의 더 넓은 사상 및 범주를 벗어나지 않으면서 다양한 수정들이 본 개시내용에 행해질 수 있다는 것은 명백할 것이다. 명세서 및 도면들은, 그에 따라, 제한적 의미보다는 오히려 예시적 의미에서 고려되어야 한다. 제공된 설명들 및 예들의 세부 사항은 하나 이상의 실시예들에서 어디에서나 사용될 수 있다. 상이한 실시예들 또는 예들의 다양한 특징들은 포함된 일부 특징들과 다양하게 조합될 수 있고, 다른 특징들은 다양한 상이한 응용들에 적합하도록 배제될 수 있다. 예들은 방법, 방법의 동작들을 수행하기 위한 수단, 기계에 의해 수행될 때 기계로 하여금 방법의 동작들을 수행하게 명령어들을 포함하는 적어도 하나의 기계 판독가능 매체, 또는 본 명세서에 설명된 실시예들 및 예들에 따른 장치 또는 시스템과 같은 주제를 포함할 수 있다. 부가적으로, 본 명세서에 설명된 다양한 컴포넌트들은 본 명세서에 설명된 동작들 또는 기능들을 수행하기 위한 수단일 수 있다.
본 실시예들의 다른 특징들이 첨부 도면 및 상기 상세한 설명으로부터 자명할 것이다. 따라서, 실시예들의 진정한 범주는 도면, 명세서, 및 하기의 청구범위의 연구 시에 당업자에게 자명해질 것이다.

Claims (22)

  1. 전자 디바이스로서,
    컴퓨터-실행가능한 명령어들 및 상기 전자 디바이스와 하나 이상의 애플리케이션들 사이의 상호작용과 연관된 동기화 데이터의 세트를 저장하도록 구성되는 메모리; 및
    상기 메모리에 커플링되는 하나 이상의 프로세서들을 포함하고, 상기 하나 이상의 프로세서들은
    상기 전자 디바이스 또는 또 다른 전자 디바이스와 연관된 복수의 상이한 유형들의 이벤트 데이터를 획득하고 - 상기 복수의 상이한 유형들의 이벤트 데이터는 상기 하나 이상의 애플리케이션들과 관련된 액션 데이터, 컨텍스트 데이터, 또는 디바이스 상태 데이터를 포함함 -;
    상기 복수의 상이한 유형들의 이벤트 데이터를 상기 전자 디바이스와 상기 하나 이상의 애플리케이션들 사이의 상호작용과 연관된 상기 동기화 데이터의 세트로 집계하고 - 상기 동기화 데이터의 세트는 상기 전자 디바이스로부터 송신되도록 구성됨 -;
    상기 동기화 데이터의 세트의 하나 이상의 특성들을 결정하고;
    피어-투-피어 채널 또는 네트워크-기반 채널 중 적어도 하나를 포함하는 전송 채널들의 세트 각각에 대한 대역폭 정보를 수신하고;
    상기 대역폭 정보 및 상기 동기화 데이터의 세트의 상기 하나 이상의 특성들에 적어도 부분적으로 기초하여 상기 피어-투-피어 채널 또는 상기 네트워크-기반 채널의 이용가능성을 결정하고;
    상기 결정된 이용가능성에 적어도 부분적으로 기초하여 상기 동기화 데이터의 세트를 송신하기 위한 상기 피어-투-피어 채널 또는 상기 네트워크-기반 채널을 선택함으로써, 상기 전송 채널들의 세트로부터 전송 채널을 선택하고;
    상기 전송 채널이 선택된 이후에, 상기 선택된 전송 채널을 통해 상기 전자 디바이스로부터 상기 하나 이상의 애플리케이션들을 포함하는 하나 이상의 원격 디바이스들로 상기 하나 이상의 애플리케이션들을 위한 상기 동기화 데이터의 세트를 송신 - 상기 하나 이상의 원격 디바이스들은 상기 동기화 데이터의 상태 변경을 나타내는, 상기 전자 디바이스로부터의 광고에 적어도 부분적으로 기초하여 선택됨 - 하는 하나 이상의 상기 명령어들을 실행하도록 구성되는, 전자 디바이스.
  2. 제1항에 있어서,
    상기 하나 이상의 특성들은, 상기 동기화 데이터의 세트의 크기, 상기 동기화 데이터의 세트와 연관된 시간 파라미터, 또는 상기 동기화 데이터 내의 데이터 유형 중 적어도 하나를 포함하는, 전자 디바이스.
  3. 제2항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 동기화 데이터의 세트의 상기 하나 이상의 특성들 중 적어도 하나에 적어도 부분적으로 기초하여, 상기 동기화 데이터의 세트 내의 데이터가 피어-투-피어 연결을 통한 상기 하나 이상의 원격 디바이스들 중의 원격 디바이스로의 직접적인 전송에 적합한지 여부를 결정하고, 상기 데이터가 상기 피어-투-피어 연결을 통한 상기 원격 디바이스로의 직접적인 전송에 적합하지 않다는 결정에 응답하여, 네트워크-기반 통신 연결을 확립하는 상기 하나 이상의 명령어들을 실행하도록 추가로 구성되는, 전자 디바이스.
  4. 제3항에 있어서,
    상기 하나 이상의 프로세서들은, 네트워크-기반 통신 연결을 통해 상기 동기화 데이터의 세트를 송신하는 상기 하나 이상의 명령어들을 실행하도록 추가로 구성되며,
    상기 동기화 데이터의 세트를 송신하는 것은, 상기 네트워크-기반 통신 연결을 통해 상기 동기화 데이터의 세트를 원격 저장 위치로 송신하고, 업데이트된 데이터가 상기 원격 저장 위치 상에서 이용가능하다는 것을 상기 하나 이상의 원격 디바이스들에게 표시하는 것을 포함하는, 전자 디바이스.
  5. 제3항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 동기화 데이터의 세트 내의 상기 데이터가 상기 피어-투-피어 연결을 통한 상기 원격 디바이스로의 직접적인 전송에 적합한지 여부를 결정하고, 상기 데이터가 상기 피어-투-피어 연결을 통한 상기 원격 디바이스로의 직접적인 전송에 적합하다는 결정에 응답하여, 상기 원격 디바이스와의 상기 피어-투-피어 연결이 이용가능한지 여부를 결정하는 상기 하나 이상의 명령어들을 실행하도록 추가로 구성되는, 전자 디바이스.
  6. 제5항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 원격 디바이스와의 상기 피어-투-피어 연결이 이용가능하지 않다는 결정에 응답하여, 네트워크-기반 통신 연결을 확립하는 상기 하나 이상의 명령어들을 실행하도록 추가로 구성되는, 전자 디바이스.
  7. 제6항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 원격 디바이스의 슬립 상태의 결정에 적어도 부분적으로 기초하여 상기 원격 디바이스와의 상기 피어-투-피어 연결이 이용가능하지 않다고 결정하는 상기 하나 이상의 명령어들을 실행하도록 추가로 구성되는, 전자 디바이스.
  8. 제6항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 네트워크-기반 통신 연결을 통해 상기 동기화 데이터의 세트를 송신하는 상기 하나 이상의 명령어들을 실행하도록 추가로 구성되는, 전자 디바이스.
  9. 제8항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 원격 디바이스와의 상기 피어-투-피어 연결이 이용가능하다는 결정에 응답하여, 피어-투-피어 통신 연결을 확립하는 상기 하나 이상의 명령어들을 실행하도록 추가로 구성되는, 전자 디바이스.
  10. 제9항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 피어-투-피어 통신 연결을 통해 상기 동기화 데이터의 세트를 송신하는 상기 하나 이상의 명령어들을 실행하도록 추가로 구성되는, 전자 디바이스.
  11. 명령어들을 저장하는 비일시적 기계 판독가능 매체로서,
    상기 명령어들은, 전자 디바이스와 하나 이상의 애플리케이션들 사이의 상호작용과 연관된 동기화 데이터의 세트로 구성되는 상기 전자 디바이스의 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하고, 상기 동작들은,
    상기 전자 디바이스 또는 또 다른 전자 디바이스와 연관된 복수의 상이한 유형들의 이벤트 데이터를 획득하는 것 - 상기 복수의 상이한 유형들의 이벤트 데이터는 상기 하나 이상의 애플리케이션들과 관련된 액션 데이터, 컨텍스트 데이터, 또는 디바이스 상태 데이터를 포함함 -;
    상기 복수의 상이한 유형들의 이벤트 데이터를 상기 전자 디바이스와 상기 하나 이상의 애플리케이션들 사이의 상호작용과 연관된 상기 동기화 데이터의 세트로 집계하는 것 - 상기 동기화 데이터의 세트는 상기 전자 디바이스로부터 하나 이상의 원격 디바이스들로 송신되도록 구성됨 -;
    상기 동기화 데이터의 세트의 하나 이상의 특성들을 결정하는 것;
    피어-투-피어 채널 또는 네트워크-기반 채널 중 적어도 하나를 포함하는 전송 채널들의 세트 각각에 대한 대역폭 정보를 수신하는 것;
    상기 대역폭 정보 및 상기 동기화 데이터의 세트의 상기 하나 이상의 특성들에 적어도 부분적으로 기초하여 상기 피어-투-피어 채널 또는 상기 네트워크-기반 채널의 이용가능성을 결정하는 것;
    상기 결정된 이용가능성에 적어도 부분적으로 기초하여 상기 동기화 데이터의 세트를 송신하기 위한 상기 피어-투-피어 채널 또는 상기 네트워크-기반 채널을 선택함으로써, 상기 전송 채널들의 세트로부터 전송 채널을 선택하는 것; 및
    상기 전송 채널이 선택된 이후에, 상기 선택된 전송 채널을 통해 상기 전자 디바이스로부터 상기 하나 이상의 애플리케이션들을 포함하는 상기 하나 이상의 원격 디바이스들로 상기 하나 이상의 애플리케이션들을 위한 상기 동기화 데이터의 세트를 송신 - 상기 하나 이상의 원격 디바이스들은 상기 동기화 데이터의 상태 변경을 나타내는, 상기 전자 디바이스로부터의 광고에 적어도 부분적으로 기초하여 선택됨 - 하는 것을 포함하는, 비일시적 기계 판독가능 매체.
  12. 제11항에 있어서,
    상기 동작들은, 상기 동기화 데이터의 세트의 상기 하나 이상의 특성들을 결정하는 것을 추가로 포함하며,
    상기 하나 이상의 특성들은 상기 동기화 데이터의 세트의 크기, 상기 동기화 데이터의 세트와 연관된 시간 파라미터, 또는 상기 동기화 데이터 내의 데이터 유형을 포함하는, 비일시적 기계 판독가능 매체.
  13. 제12항에 있어서,
    상기 동작들은, 상기 동기화 데이터의 세트의 상기 하나 이상의 특성들 중 적어도 하나에 적어도 부분적으로 기초하여, 상기 동기화 데이터의 세트 내의 데이터가 피어-투-피어 연결을 통한 상기 하나 이상의 원격 디바이스들 중의 원격 디바이스로의 직접적인 전송에 적합한지 여부를 결정하고, 상기 데이터가 상기 피어-투-피어 연결을 통한 상기 원격 디바이스로의 직접적인 전송에 적합하지 않다는 결정에 응답하여, 네트워크-기반 통신 연결을 확립하는 것을 추가로 포함하는, 비일시적 기계 판독가능 매체.
  14. 제13항에 있어서,
    상기 동작들은, 상기 네트워크-기반 통신 연결을 통해 상기 동기화 데이터의 세트를 송신하는 것을 추가로 포함하며,
    상기 동기화 데이터의 세트를 송신하는 것은, 상기 네트워크-기반 통신 연결을 통해 상기 동기화 데이터의 세트를 원격 저장 위치로 송신하고, 업데이트된 데이터가 상기 원격 저장 위치 상에서 이용가능하다는 것을 상기 하나 이상의 원격 디바이스들에게 표시하는 것을 포함하는, 비일시적 기계 판독가능 매체.
  15. 제13항에 있어서,
    상기 동작들은, 상기 동기화 데이터의 세트 내의 상기 데이터가 상기 피어-투-피어 연결을 통한 상기 원격 디바이스로의 직접적인 전송에 적합한지 여부를 결정하고, 상기 데이터가 상기 피어-투-피어 연결을 통한 상기 원격 디바이스로의 직접적인 전송에 적합하다는 결정에 응답하여, 상기 원격 디바이스와의 상기 피어-투-피어 연결이 이용가능한지 여부를 결정하는 것을 추가로 포함하는, 비일시적 기계 판독가능 매체.
  16. 제15항에 있어서,
    상기 동작들은, 상기 원격 디바이스와의 상기 피어-투-피어 연결이 이용가능하지 않다는 결정에 응답하여, 네트워크-기반 통신 연결을 확립하는 것을 추가로 포함하는, 비일시적 기계 판독가능 매체.
  17. 제16항에 있어서,
    상기 동작들은, 상기 원격 디바이스의 슬립 상태의 결정에 적어도 부분적으로 기초하여 상기 원격 디바이스와의 상기 피어-투-피어 연결이 이용가능하지 않다고 결정하는 것을 추가로 포함하는, 비일시적 기계 판독가능 매체.
  18. 제16항에 있어서,
    상기 동작들은, 상기 네트워크-기반 통신 연결을 통해 상기 동기화 데이터의 세트를 송신하는 것을 추가로 포함하는, 비일시적 기계 판독가능 매체.
  19. 제11항에 있어서,
    상기 동작들은, 원격 디바이스와의 피어-투-피어 연결이 이용가능하다는 결정에 응답하여, 피어-투-피어 통신 연결을 확립하는 것을 추가로 포함하는, 비일시적 기계 판독가능 매체.
  20. 방법으로서,
    전자 디바이스 또는 또 다른 전자 디바이스와 연관된 복수의 상이한 유형들의 이벤트 데이터를 획득하는 단계 - 상기 복수의 상이한 유형들의 이벤트 데이터는 하나 이상의 애플리케이션들과 관련된 액션 데이터, 컨텍스트 데이터, 또는 디바이스 상태 데이터를 포함함 -;
    상기 전자 디바이스와 상기 하나 이상의 애플리케이션들 사이의 상호작용과 연관된 동기화 데이터의 세트를 저장하는 단계;
    상기 복수의 상이한 유형들의 이벤트 데이터를 상기 전자 디바이스와 상기 하나 이상의 애플리케이션들 사이의 상호작용과 연관된 상기 동기화 데이터의 세트로 집계하는 단계 - 상기 동기화 데이터의 세트는 상기 전자 디바이스로부터 하나 이상의 원격 디바이스들로 송신되도록 구성됨 -;
    상기 동기화 데이터의 세트의 하나 이상의 특성들을 결정하는 단계;
    피어-투-피어 채널 또는 네트워크-기반 채널 중 적어도 하나를 포함하는 전송 채널들의 세트 각각에 대한 대역폭 정보를 수신하는 단계;
    상기 대역폭 정보 및 상기 동기화 데이터의 세트의 상기 하나 이상의 특성들에 적어도 부분적으로 기초하여 상기 피어-투-피어 채널 또는 상기 네트워크-기반 채널의 이용가능성을 결정하는 단계;
    상기 결정된 이용가능성에 적어도 부분적으로 기초하여 상기 동기화 데이터의 세트를 송신하기 위한 상기 피어-투-피어 채널 또는 상기 네트워크-기반 채널을 선택함으로써, 상기 전송 채널들의 세트로부터 전송 채널을 선택하는 단계; 및
    상기 전송 채널이 선택된 이후에, 상기 선택된 전송 채널을 통해 상기 전자 디바이스로부터 상기 하나 이상의 애플리케이션들을 포함하는 상기 하나 이상의 원격 디바이스들로 상기 하나 이상의 애플리케이션들을 위한 상기 동기화 데이터의 세트를 송신하는 단계 - 상기 하나 이상의 원격 디바이스들은 상기 동기화 데이터의 상태 변경을 나타내는, 상기 전자 디바이스로부터의 광고에 적어도 부분적으로 기초하여 선택됨 - 를 포함하는 방법.
  21. 제1항에 있어서,
    상기 전자 디바이스에 의해 송신된 광고는 상기 전자 디바이스가 원격 디바이스를 찾고 있다는 것을 나타내는 상태 비트를 포함하는, 전자 디바이스.
  22. 삭제
KR1020207033396A 2018-06-03 2019-05-30 다수의 디바이스들에 걸친 데이터 동기화 KR102612883B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862679854P 2018-06-03 2018-06-03
US62/679,854 2018-06-03
US16/420,892 2019-05-23
US16/420,892 US11799955B2 (en) 2018-06-03 2019-05-23 Data synchronization across multiple devices
PCT/US2019/034682 WO2019236380A1 (en) 2018-06-03 2019-05-30 Data synchronization across multiple devices

Publications (2)

Publication Number Publication Date
KR20200143487A KR20200143487A (ko) 2020-12-23
KR102612883B1 true KR102612883B1 (ko) 2023-12-11

Family

ID=68692539

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207033396A KR102612883B1 (ko) 2018-06-03 2019-05-30 다수의 디바이스들에 걸친 데이터 동기화

Country Status (5)

Country Link
US (2) US11799955B2 (ko)
EP (2) EP3782356B1 (ko)
KR (1) KR102612883B1 (ko)
CN (1) CN112166591B (ko)
WO (1) WO2019236380A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10721219B2 (en) 2018-06-28 2020-07-21 Nxp B.V. Method for establishing a secure communication session in a communications system
US10721061B2 (en) 2018-06-28 2020-07-21 Nxp B.V. Method for establishing a secure communication session in a communications system
US10659228B2 (en) * 2018-06-28 2020-05-19 Nxp B.V. Method for establishing a secure communication session in a communications system
US10997278B2 (en) * 2018-12-28 2021-05-04 Avast Software, S.R.O. Computing device use restriction system
KR20190107621A (ko) * 2019-09-02 2019-09-20 엘지전자 주식회사 상황 인식에 기반한 어플리케이션 추천을 위한 장치 및 제어 방법
US20220057854A1 (en) * 2020-08-19 2022-02-24 Intel Corporation Techniques for sleep management in computer system
US20220138307A1 (en) * 2020-11-02 2022-05-05 Zebra Technologies Corporation Automated Mobile Device Staging System
WO2021077142A2 (en) * 2021-02-25 2021-04-22 Innopeak Technology, Inc. Screen time management across multiple distributed devices
IL288088A (en) * 2021-11-14 2023-06-01 Babyark Ltd Publishing and identifying the availability of information in a wireless network
KR20230128913A (ko) * 2022-02-28 2023-09-05 주식회사 플루이즈 로컬 서버가 주변 클라이언트들로 ui 화면 정보를 전송하는 방법
KR20230128916A (ko) * 2022-02-28 2023-09-05 주식회사 플루이즈 사용자 기기간에 ui 화면을 송수신하는 방법
US12032987B2 (en) * 2022-04-19 2024-07-09 Strolid, Inc. System and method for proxy-based communications for a plurality of mobile computing devices
CN115277580B (zh) * 2022-07-25 2024-02-13 Oppo广东移动通信有限公司 数据传输方法、装置、电子设备、业务系统及存储介质
CN115941612B (zh) * 2022-11-14 2024-05-17 中国联合网络通信集团有限公司 数据处理方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130007499A1 (en) * 2011-06-28 2013-01-03 Amazon Technologies, Inc. Transferring state information between electronic devices
US20130286942A1 (en) * 2005-06-29 2013-10-31 Jumpstart Wireless Corporation System and method for dynamic automatic communication path selection, distributed device synchronization and task delegation
US20150373132A1 (en) * 2014-06-19 2015-12-24 Samsung Electronics Co., Ltd. Sequential behavior-based content delivery
US20170027008A1 (en) * 2015-07-21 2017-01-26 Qualcomm Incorporated Efficient application synchronization using out-of-band device-to-device communication
US20170078962A1 (en) * 2015-09-16 2017-03-16 Microsoft Technology Licensing, Llc Application Specific Internet Access

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7809682B2 (en) 2004-05-24 2010-10-05 Apple Inc. Data synchronization between multiple devices
EP1895713B1 (en) * 2006-08-31 2012-10-03 LG Electronics Inc. Apparatus and method of optimizing the power saving in a handset with WLAN and Bluetooth
US20080059656A1 (en) 2006-08-31 2008-03-06 Saliba Bassam A Content synchronization among associated computing devices
US7761414B2 (en) 2007-01-07 2010-07-20 Apple Inc. Asynchronous data synchronization amongst devices
US20090006194A1 (en) * 2007-06-27 2009-01-01 Microsoft Corporation Location, destination and other contextual information-based mobile advertisements
US8595834B2 (en) 2008-02-04 2013-11-26 Samsung Electronics Co., Ltd Detecting unauthorized use of computing devices based on behavioral patterns
US7984161B2 (en) 2009-06-16 2011-07-19 Microsoft Corporation Optimizing mobile device synchronization with multiple data sources
US20110010737A1 (en) * 2009-07-10 2011-01-13 Nokia Corporation Method and apparatus for notification-based customized advertisement
US8805646B2 (en) * 2010-09-30 2014-08-12 Fitbit, Inc. Methods, systems and devices for linking user devices to activity tracking devices
CN102546779B (zh) 2011-12-27 2014-12-10 Tcl集团股份有限公司 一种跨设备间应用数据的同步方法及装置
CN103856993B (zh) * 2012-12-06 2016-08-31 腾讯科技(深圳)有限公司 一种无线通信方法和装置
WO2015023774A1 (en) * 2013-08-13 2015-02-19 John Tapley Applications for wearable devices
US11990019B2 (en) * 2014-02-27 2024-05-21 Fitbit, Inc. Notifications on a user device based on activity detected by an activity monitoring device
US9679125B2 (en) 2014-04-29 2017-06-13 PEGRight, Inc. Characterizing user behavior via intelligent identity analytics
CN104168667A (zh) 2014-09-05 2014-11-26 北京奇虎科技有限公司 数据获取的方法、装置及系统
CN105530602B (zh) * 2014-09-30 2019-02-26 丰田汽车(中国)投资有限公司 无线通信设备、远程控制中心、监视控制系统及方法
US20160259857A1 (en) 2015-03-06 2016-09-08 Microsoft Technology Licensing, Llc User recommendation using a multi-view deep learning framework
US10701067B1 (en) * 2015-04-24 2020-06-30 Microstrategy Incorporated Credential management using wearable devices
US10318154B2 (en) 2015-05-31 2019-06-11 Apple Inc. Dynamic group membership for devices
EP3320727B1 (en) 2015-07-06 2021-01-06 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus for determining synchronisation references
US9854529B2 (en) * 2015-12-03 2017-12-26 Google Llc Power sensitive wireless communication radio management
US9912799B2 (en) * 2016-01-10 2018-03-06 Apple Inc. Switching between watches or other accessories
CN106354462B (zh) * 2016-08-30 2019-03-15 青岛海信电器股份有限公司 一种文档在多个设备中同步显示的方法、设备及系统
KR20180052429A (ko) 2016-11-10 2018-05-18 삼성전자주식회사 데이터 전송 방법 및 이를 지원하는 전자 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130286942A1 (en) * 2005-06-29 2013-10-31 Jumpstart Wireless Corporation System and method for dynamic automatic communication path selection, distributed device synchronization and task delegation
US20130007499A1 (en) * 2011-06-28 2013-01-03 Amazon Technologies, Inc. Transferring state information between electronic devices
US20150373132A1 (en) * 2014-06-19 2015-12-24 Samsung Electronics Co., Ltd. Sequential behavior-based content delivery
US20170027008A1 (en) * 2015-07-21 2017-01-26 Qualcomm Incorporated Efficient application synchronization using out-of-band device-to-device communication
US20170078962A1 (en) * 2015-09-16 2017-03-16 Microsoft Technology Licensing, Llc Application Specific Internet Access

Also Published As

Publication number Publication date
CN112166591A (zh) 2021-01-01
EP3782356A1 (en) 2021-02-24
EP4311205A3 (en) 2024-05-01
EP3782356B1 (en) 2023-12-27
KR20200143487A (ko) 2020-12-23
CN112166591B (zh) 2024-01-05
WO2019236380A1 (en) 2019-12-12
US20190373058A1 (en) 2019-12-05
US11799955B2 (en) 2023-10-24
EP4311205A2 (en) 2024-01-24
US20230344903A1 (en) 2023-10-26

Similar Documents

Publication Publication Date Title
KR102612883B1 (ko) 다수의 디바이스들에 걸친 데이터 동기화
KR102361376B1 (ko) 보안 디바이스 투 디바이스 통신 채널
EP3841500B1 (en) Media intercom over a secure device to device communication channel
US11582579B2 (en) Secure streaming of real-time location data between electronic devices
US11070676B2 (en) Embedded audio passcode in ringtone to establish secure connection for arbitrary phone relay
US11177955B2 (en) Device-to-device messaging protocol
US20200380984A1 (en) Synchronization of remote context data
JP2024520688A (ja) アクセサリグループのペアリング
US11388767B2 (en) Network connection method, device and apparatus
Chen et al. A resource-aware pairing device framework for ubiquitous cloud applications
Kumar et al. Bluetooth
Thaiprayoon et al. Towards design and implementation of the breakthrough web
JP2014209341A (ja) アンサンブルコンピューティング
Han et al. Secure SocialAware: A Security Framework for Mobile Social Networking Applications; CU-CS-1054-09
Berberoglu Social-Aware Applications-Study on Social Context Aware Applications: Exploring Potential Usages, Defining Requirements and Understanding Issues

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant