KR101604606B1 - 간헐적으로 접속되는 오프라인-가능한 모바일 웹 애플리케이션에서의 메시지 프리페칭을 위한 메커니즘 - Google Patents
간헐적으로 접속되는 오프라인-가능한 모바일 웹 애플리케이션에서의 메시지 프리페칭을 위한 메커니즘 Download PDFInfo
- Publication number
- KR101604606B1 KR101604606B1 KR1020137015644A KR20137015644A KR101604606B1 KR 101604606 B1 KR101604606 B1 KR 101604606B1 KR 1020137015644 A KR1020137015644 A KR 1020137015644A KR 20137015644 A KR20137015644 A KR 20137015644A KR 101604606 B1 KR101604606 B1 KR 101604606B1
- Authority
- KR
- South Korea
- Prior art keywords
- message
- conversation
- list
- threads
- identifier
- Prior art date
Links
- 230000007246 mechanism Effects 0.000 title description 2
- 238000000034 method Methods 0.000 claims description 93
- 238000004891 communication Methods 0.000 claims description 24
- 230000003993 interaction Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 description 17
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000012546 transfer Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/216—Handling conversation history, e.g. grouping of messages in sessions or threads
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/50—Business processes related to the communications industry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/23—Reliability checks, e.g. acknowledgments or fault reporting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/12—Messaging; Mailboxes; Announcements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/58—Message adaptation for wireless communication
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Marketing (AREA)
- Tourism & Hospitality (AREA)
- General Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
대화들의 목록을 업데이트하기 위한 요청이 서버에 송신된다. 대화들의 목록에서의 각 대화의 적어도 일부분은 클라이언트 상에 저장된다. 복수의 업데이트들은 서버로부터 수신된다. 복수의 업데이트들은 대화들의 목록에서의 개개의 대화들에 대응하는 메시지들을 포함한다.
Description
본 발명은 일반적으로 컴퓨터 네트워크 시스템들 내의 통신들에 관한 것으로, 특히 모바일 이메일 클라이언트들 상의 대화들을 업데이팅하기 위한 방법 및 시스템에 관한 것이다.
다수의 모바일 디바이스들은 무선 네트워크를 통해 이메일 서버들로부터 대화들 및 스레드들을 검색하고 저장할 수 있다. 모바일 디바이스 상의 대화 또는 스레드를 업데이팅하는 것은 종종 무선 네트워크들의 전송 능력들로 인해 느릴 수 있으며 무선 네트워크들을 통해 데이터를 전송하는 것과 관련한 비용들로 인해 비쌀 수 있다.
모바일 디바이스 상의 하나 이상의 대화들 또는 메시지 스레드들을 업데이트하는 일 방식은 대화들에서의 메시지들의 서브세트만이 새롭더라도 전체 대화들을 모바일 디바이스에 전송하는 것이다. 전체 대화들을 전송하는 것은 모바일 디바이스가 업데이트들을 수신하는데 소요되는 시간을 증가시키고, 대량의 대역폭을 이용하며 모바일 디바이스의 배터리 수명을 감소시킨다.
더욱이, 대화들의 목록을 업데이트하기 위해, 모바일 디바이스는 전형적으로 목록에서의 각 대화에 대한 업데이트 요청을 송신하며, 이는 배터리 전력 및 대역폭의 비효율적인 이용을 발생시킨다.
따라서, 간헐적으로 접속되는 모바일 이메일 클라이언트들 상의 대화들을 업데이트하기 위한 더 효율적인 시스템들 및 방법들을 제공하는 것이 매우 바람직할 것이다.
모바일 디바이스들 상의 대화들을 업데이트하는데 관련된 상기 결함들 및 다른 문제점들은 개시된 방법들 및 디바이스들에 의해 감소되거나 제거된다.
일부 실시예들에 따르면, 모바일 디바이스들 상의 대화들을 효율적으로 업데이트하기 위한 시스템 및 방법이 제공된다. 대화 식별자, 제 1 메시지 식별자, 최종 메시지 식별자 및 대화 메트릭을 포함하는 업데이트 요청이 모바일 디바이스로부터 서버에 송신된다. 서버는 현재까지 모바일 디바이스 상의 대화를 발생시키는데 필요한 정보의 최소량을 결정하고 모바일 디바이스에 송신하기 위해 업데이트 요청에 포함된 정보를 이용한다. 그와 같은 시스템들 및 방법의 장점은 더 적은 데이터가 서버로부터 모바일 디바이스에 전송된다는 것이다. 특히, 주어진 대화 또는 스레드에 대해, 모바일 디바이스 상에 아직 없는 새로운 메시지들만이 모바일 디바이스에 송신된다. 그와 같은 시스템 및 방법은 더 적은 대역폭을 이용하고, 배터리 수명을 절약하며 대화를 업데이트하는데 소요되는 시간 양을 감소시킨다.
일부 실시예들에 따르면, 단일 요청으로 대화들의 목록을 업데이트하기 위한 시스템 및 방법이 제공된다. 서버는 모바일 디바이스로부터 단일 요청을 수신하는데 응답하여 복수의 업데이트들을 모바일 디바이스에 송신한다. 그와 같은 방법 및 시스템의 장점은 모바일 디바이스가 대화들의 목록에서의 각 대화에 대한 별개의 업데이트 요청을 송신할 필요가 없다는 것이다. 따라서, 단일 업데이트 요청으로 대화들의 목록을 업데이팅함으로써, 그와 같은 시스템들 및 방법들은 대역폭, 배터리 전력을 효율적으로 이용하며, 대화들의 목록을 업데이트하는데 소요되는 시간 양을 감소시킨다.
일부 실시예들에 따르면, 대화를 업데이팅하는 방법이 개시된다. 방법은 방법을 수행하기 위해 하나 이상의 프로세서들 및 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 갖는 클라이언트에서 수행된다. 방법은 대화를 업데이트하기 위한 요청을 서버에 송신하는 단계를 포함한다. 대화의 적어도 일부분은 클라이언트 상에 저장된다. 요청은 대화에 대응하는 대화 식별자, 대화에서의 제 1 메시지에 대응하는 제 1 메시지 식별자, 대화의 최종 메시지에 대응하는 최종 메시지 식별자 및 대화의 대화 메트릭을 포함한다. 방법은 또한 서버로부터 하나 이상의 업데이트들을 수신하는 단계를 포함한다. 하나 이상의 업데이트들은 대화에 대응하는 하나 이상의 메시지들을 포함한다.
일부 실시예들에 따르면, 하나 이상의 프로세서들 및 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 갖는 서버에서 수행되는 방법이 개시된다. 방법은 제 1 대화를 업데이트하기 위한 요청을 클라이언트로부터 수신하는 단계를 포함한다. 제 1 대화의 일부분은 클라이언트 상에 저장된다. 요청은 제 1 대화에 대응하는 대화 식별자, 클라이언트 상에 저장된 제 1 대화의 일부분에서의 제 1 메시지에 대응하는 제 1 메시지 식별자, 클라이언트 상에 저장된 제 1 대화의 일부분에서의 최종 메시지에 대응하는 최종 메시지 식별자 및 클라이언트 상에 저장된 제 1 대화의 일부분의 대화 메트릭을 포함한다. 방법은 대화 식별자, 제 1 메시지 식별자, 최종 메시지 식별자 및 대화 메트릭에 기초하여 제 1 대화에 대응하는 하나 이상의 업데이트들을 발생시키는 단계를 더 포함한다. 업데이트는 제 1 대화와 관련된 하나 이상의 메시지들을 포함한다. 방법은 하나 이상의 업데이트들을 클라이언트에 송신하는 단계를 더 포함한다.
일부 실시예들에 따르면, 대화를 업데이팅하는 방법이 개시된다. 방법은 방법을 수행하기 위해 하나 이상의 프로세서들 및 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 갖는 클라이언트에서 수행된다. 방법은 대화를 업데이트하기 위한 요청을 서버에 송신하는 단계를 포함한다. 대화의 적어도 일부분은 클라이언트 상에 저장된다. 요청은 대화에 대응하는 대화 식별자, 대화에서의 제 1 메시지에 대응하는 제 1 메시지 식별자, 대화의 최종 메시지에 대응하는 최종 메시지 식별자 및 대화의 대화 메트릭을 포함한다. 방법은 또한 서버로부터 하나 이상의 업데이트들을 수신하는 단계를 포함한다. 하나 이상의 업데이트들은 대화에 대응하는 하나 이상의 메시지들을 포함한다.
일부 실시예들에 따르면, 하나 이상의 프로세서들 및 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 갖는 서버에서 수행되는 방법이 개시된다. 방법은 대화들의 목록을 업데이트하기 위한 요청을 클라이언트 디바이스로부터 수신하는 단계를 포함한다. 대화들의 목록에서의 대화들 중 일부분은 클라이언트 디바이스 상에 저장된다. 방법은 또한 요청에 기초하여 복수의 업데이트들을 발생시키는 단계를 포함한다. 업데이트들은 대화들의 목록에서의 개개의 대화들에 대응하는 메시지들을 포함한다. 방법은 복수의 업데이트들을 클라이언트 디바이스에 송신하는 단계를 더 포함한다.
도 1은 일부 실시예들에 따른 클라이언트-서버 환경의 인프라구조를 도시하는 블록도이다.
도 2는 일부 실시예들에 따른 예시적인 서버 시스템의 구조를 도시하는 블록도이다.
도 3은 일부 실시예들에 따른 예시적인 클라이언트 디바이스의 구조를 도시하는 블록도이다.
도 4a, 4b, 4c 및 4d는 일부 실시예들에 따른 예시적인 데이터 구조들을 도시한다.
도 5는 일부 실시예들에 따른 대화를 업데이팅하는 프로세스를 도시하는 흐름도이다.
도 6은 일부 실시예들에 따른 대화들의 목록에 대한 업데이트들을 프리페칭하는 프로세스를 도시하는 흐름도이다.
도 7a 및 7b는 일부 실시예들에 따른 예시적인 스크린숏들(screenshots)이다.
도 8은 클라이언트에서의 요청된 대화 업데이트의 프로세스를 도시하는 흐름도이다.
도 9a, 9b 및 9c는 서버에서의 대화에 대한 업데이트를 발생시키는 프로세스를 도시하는 흐름도들이다.
도 10a 및 10b는 무슨 메시지들이 업데이트에 속하는지를 결정하는 프로세스를 도시하는 블록도들이다.
도 11a 및 11b는 클라이언트에서의 요청된 대화들의 목록의 업데이트의 프로세스를 도시한다.
도 12a, 12b 및 12c는 서버에서의 대화들의 목록에 대한 업데이트들을 발생시키는 프로세스를 도시한다.
유사한 참조 부호들은 도면들 전반의 대응하는 부분들을 지칭한다.
도 2는 일부 실시예들에 따른 예시적인 서버 시스템의 구조를 도시하는 블록도이다.
도 3은 일부 실시예들에 따른 예시적인 클라이언트 디바이스의 구조를 도시하는 블록도이다.
도 4a, 4b, 4c 및 4d는 일부 실시예들에 따른 예시적인 데이터 구조들을 도시한다.
도 5는 일부 실시예들에 따른 대화를 업데이팅하는 프로세스를 도시하는 흐름도이다.
도 6은 일부 실시예들에 따른 대화들의 목록에 대한 업데이트들을 프리페칭하는 프로세스를 도시하는 흐름도이다.
도 7a 및 7b는 일부 실시예들에 따른 예시적인 스크린숏들(screenshots)이다.
도 8은 클라이언트에서의 요청된 대화 업데이트의 프로세스를 도시하는 흐름도이다.
도 9a, 9b 및 9c는 서버에서의 대화에 대한 업데이트를 발생시키는 프로세스를 도시하는 흐름도들이다.
도 10a 및 10b는 무슨 메시지들이 업데이트에 속하는지를 결정하는 프로세스를 도시하는 블록도들이다.
도 11a 및 11b는 클라이언트에서의 요청된 대화들의 목록의 업데이트의 프로세스를 도시한다.
도 12a, 12b 및 12c는 서버에서의 대화들의 목록에 대한 업데이트들을 발생시키는 프로세스를 도시한다.
유사한 참조 부호들은 도면들 전반의 대응하는 부분들을 지칭한다.
모바일 디바이스들 상의 대화들을 업데이팅하기 위한 방법들 및 시스템들이 설명된다. 본 발명의 특정 실시예들에 대한 참조가 이루어질 것이며, 그 예들은 첨부하는 도면들에 도시된다. 본 발명은 실시예들과 함께 설명되는 한편, 이들 특정 실시예들에만 본 발명을 제한하려는 것이 아님을 이해할 것이다. 반대로, 본 발명은 첨부되는 청구범위에 의해 정의된 바와 같은 본 발명의 정신 및 범위 내에 있는 대안들, 수정들 및 등가물들을 커버하려는 것이다.
더욱이, 다음의 설명에서 본 발명의 완전한 이해를 제공하기 위해 수많은 특정 상세들이 설명된다. 그러나, 본 발명은 이들 특정 상세들 없이 실시될 수 있음이 당업자에게 명백할 것이다. 다른 예들에서, 당업자에게 잘 알려진 방법들, 절차들, 컴포넌트들 및 네트워크들은 본 발명의 양상들을 모호하게 하는 것을 회피하기 위해 상세하게 설명되지 않는다.
여러 정의들이 이하에 논의된다. 일부 실시예들에 따라 그리고 도 4a의 논의에서 더 상세하게 설명된 바와 같이, 대화는 대화 식별자, 대화 헤더 및 하나 이상의 메시지들을 포함한다. 대화의 메시지들의 각각은 메시지 헤더 및 메시지 몸체를 포함한다. 일부 실시예들에서, 메시지는 이메일 메시지이다. 대화는 응답 메시지로부터 구별되어야 한다. 응답 메시지가 더 이전의 메시지의 텍스트를 포함하는 한편, 응답 메시지는 여전히 하나의 메시지이다. 일부 실시예들에서, 대화는 메시지들의 스레드이다. 일부 실시예들에서, 대화들의 목록은 복수의 대화들이다.
체크섬(checksum)은 데이터가 에러들 없이 저장되거나 전송되는 것을 보증하기 위해 이용되는 리던던시 검사의 형태이다. 더 구체적으로, 체크섬은 데이터의 일부로부터 결정되며, 상기 데이터의 일부와 함께 저장되는, 데이터 내의 에러들을 검출하기 위해 이용되는 값이다. 데이터의 블록에서의 에러들을 검출하기 위해, 체크섬은 데이터의 블록에 대해 결정되며 데이터의 블록과 함께 저장된 체크섬과 비교된다. 일부 경우들에서 에러 검출은 데이터의 블록이 전송된 후에 발생한다. 체크섬들이 동일한 경우에는 데이터의 블록에 대한 에러들이 검출되지 않는다. 체크섬 값들의 비-매치는 데이터의 블록에서의 에러를 표시한다. 본원에 더 상세하게 논의되는 바와 같이, 본 발명의 문맥에서 체크섬들은 데이터의 2개의 피스들이 동일한지를 결정하기 위해 이용될 수 있다. 일부 실시예들에서, 일부 알고리즘을 이용하여 데이터의 블록에서 이진 값들을 계산함으로써 체크섬이 생성된다. 일부 실시예들에서, 데이터의 블록에서 바이트들을 가산함으로써 체크섬이 계산된다. 임의의 수의 알고리즘들이 이용될 수 있으며, 예를 들어 기본 체크섬은 간단하게 파일에서의 바이트들의 수일 수 있다. 체크섬들을 생성하기 위해 이용되는 알고리즘들의 다른 예들은 순환 리던던시 검사 알고리즘들, 해시 함수들 아들러-32(Adler-32) 및 플레처(Fletcher)의 체크섬을 포함한다.
본원에 이용된 바와 같이, 프리페칭하는 것은 데이터가 사용자에 의해 명시적으로 요청되기 전에 데이터를 요청하거나 로딩하는 것을 의미한다.
이제 도 1을 참조하면, 도 1은 실시예들 중 일부에 대해 구현된 클라이언트-서버 환경(100)의 인프라구조를 도시하는 블록도이다. 클라이언트-서버 환경(100)은 하나 이상의 클라이언트 디바이스들(102), 통신 네트워크(104) 및 서버 시스템(106)을 포함한다. 서버 시스템(106)은 통신 네트워크(104)에 의해 하나 이상의 클라이언트 디바이스들(102)에 커플링된다.
서버 시스템(106)은 단일 서버 시스템 또는 다수의 서버들의 분산 시스템으로서 구현될 수 있다. 그러나, 설명의 편의를 위해, 서버 시스템(106)은 단일 서버 시스템으로서 구현되는 것으로 이하에 설명된다.
통신 네트워크(들)(104)는 인트라넷, 엑스트라넷 또는 인터넷과 같은 임의의 유선 또는 무선 로컬 영역 네트워크(LAN) 및/또는 광역 네트워크(WAN)일 수 있다. 통신 네트워크(104)는 하나 이상의 클라이언트 디바이스들(102)과 서버 시스템(106) 사이의 통신 능력을 제공하는데 충분하다. 일부 실시예들에서, 통신 네트워크(104)는 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP)을 이용하여 정보를 전송하기 위해 하이퍼텍스트 전송 프로토콜(HTTP)을 이용한다. HTTP는 클라이언트 디바이스들(102)이 통신 네트워크(104)를 거쳐 이용가능한 다양한 자원들을 액세스하게 허용한다. 본 발명의 다양한 실시예들은 그러나, 임의의 특정 프로토콜의 이용에 제한되지 않는다.
일부 실시예들에서, 서버 시스템(106)은 서버 시스템(106)과 네트워크(104) 사이의 통신을 용이하게 하는 프론트 엔드(112)를 포함한다. 일부 실시예들에서, 프론트 엔드(112)는 이메일 대화들을 업데이트하기 위한 요청들 또는 이메일 대화들의 목록을 업데이트하기 위한 요청들을 수신하도록 구성된다. 일부 실시예들에서, 프론트 엔드(112)는 클라이언트 디바이스들(102)에 업데이트들을 송신하도록 구성된다. 이하에 더 상세하게 논의된 바와 같이, 업데이트들은 클라이언트 디바이스(102) 상에서의 하나 이상의 대화들에 대응하는 새로운 메시지들을 포함한다. 일부 실시예들에서, 업데이트들은 전체 대화들을 포함한다.
일부 실시예들에서, 서버 시스템(106)은 이메일 대화들 및 이메일 메시지들을 저장하는 이메일 데이터베이스(120)를 포함한다. 이메일 메시지들 및 이메일 대화들은 본원에 더 상세하게 설명된다. 일부 실시예들에서, 채팅/문서 데이터베이스(120)는 분배된 데이터베이스이다.
일부 실시예들에서, 서버 시스템(106)은 이메일 데이터베이스(120)에 저장된 정보를 관리하고 검색하는 업데이트 모듈(116)을 포함한다. 본원에 더 상세하게 논의된 바와 같이, 업데이트 모듈은 업데이트 요청에서 정보를 분석하고 클라이언트 디바이스(102)에 송신하기 위해 이메일 데이터베이스(120)에 저장된 하나 이상의 메시지들을 결정한다. 업데이트 모듈(116)은 본원에 더 상세하게 논의된다.
일부 실시예들에서, 서버 시스템(106)은 사용자 데이터베이스(122)를 포함한다. 일부 실시예들에서, 사용자 데이터베이스(122)는 사용자의 디바이스, 전송 이력 및 어느 대화들과 사용자가 관련되는지에 관한 정보를 포함한다. 사용자 데이터베이스(122)는 본원에 더 상세하게 논의된다.
일부 실시예들에서, 사용자는 클라이언트 디바이스(102)에서 서버 시스템(106)과 인터페이싱한다. 일부 실시예들에서, 클라이언트 디바이스들(102)은 휴대용 전자 디바이스들 또는 모바일 디바이스들이다. 클라이언트 디바이스들(102)은 컴퓨터들, 데스크톱 컴퓨터들, 랩톱 컴퓨터들, 태블릿 디바이스들, 넷북들, 인터넷 키오스크들, 개인 휴대 정보 단말들, 모바일 전화들, 게이밍(gaming) 디바이스들, 또는 서버 시스템(106)과 통신할 수 있는 임의의 다른 디바이스와 같은 통신 네트워크(104)에 접속할 수 있는 임의의 적합한 컴퓨터 디바이스들일 수 있다. 클라이언트 디바이스들(102)은 전형적으로 하나 이상의 프로세서들, 하드 디스크 드라이브와 같은 비-휘발성 메모리 및 디스플레이를 포함한다. 클라이언트 디바이스들(102)은 또한 (도 3에 도시된 바와 같은) 키보드 및 마우스와 같은 입력 디바이스들을 가질 수 있다.
일부 실시예들에서, 개개의 클라이언트 디바이스(102)는 하나 이상의 애플리케이션들(124)을 포함한다. 일부 실시예들에서, 하나 이상의 애플리케이션들은 개개의 사용자가 이메일 메시지들 및 이메일 대화들을 송신하고 수신하게 허용하는 이메일 애플리케이션을 포함한다.
도 2는 본 발명의 일 실시예에 따른 서버 시스템(106)을 도시하는 블록도이다. 서버 시스템(106)은 전형적으로 하나 이상의 프로세싱 유닛들(CPU들)(202), 하나 이상의 네트워크 또는 다른 통신들 인터페이스들(208), 메모리(206) 및 이들 컴포넌트들을 상호접속하기 위한 하나 이상의 통신 버스들(204)을 포함한다. 메모리(206)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함한다; 그리고 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들 또는 다른 비-휘발성 고체 상태 저장 디바이스들과 같은 비-휘발성 메모리를 포함할 수 있다. 메모리(206)는 임의선택적으로 CPU(들)(202)로부터 원격으로 위치되는 하나 이상의 저장 디바이스들을 포함할 수 있다. 메모리(206) 내에 비-휘발성 및 휘발성 메모리 디바이스(들)를 포함하는 메모리(206)는 컴퓨터 판독가능한 저장 매체를 포함한다. 일부 실시예들에서, 메모리(206) 또는 메모리(206)의 컴퓨터 판독가능한 저장 매체는 다음의 프로그램들, 모듈들 및 데이터 구조들, 또는 운영 시스템(216), 네트워크 통신 모듈(218), 업데이트 모듈(116), 이메일 데이터베이스(120) 및 사용자 데이터베이스(122)를 포함하는 그의 서브세트를 저장한다.
운영 시스템(216)은 다양한 기본 시스템 서비스들을 취급하고 하드웨어 의존 태스크들을 수행하기 위한 절차들을 포함한다.
네트워크 통신 모듈(218)은 하나 이상의 통신 네트워크 인터페이스들(208)(유선 또는 무선) 및 인터넷, 다른 광역 네트워크들, 로컬 영역 네트워크들, 대도시 영역 네트워크들 등과 같은 하나 이상의 통신 네트워크들을 거쳐 다른 디바이스들과의 통신을 용이하게 한다.
이메일 데이터베이스는 이메일 대화들(120) 및 이메일 메시지들(236)을 저장한다. 이메일 대화들(234) 및 이메일 메시지(236)는 도 4a의 논의에서 더 상세하게 논의된다.
사용자 데이터베이스(122)는 하나 이상의 사용자들에 대한 사용자 데이터(240)를 포함한다. 개개의 사용자에 대한 사용자 데이터(242)는 디바이스 정보(243), 전송 이력(244) 및 관련된 대화들 및 메시지들(245)을 포함한다. 일부 실시예들에서, 디바이스 정보(243)는 개개의 사용자에 의해 이용되는 디바이스의 타입을 식별한다. 일부 실시예들에서, 디바이스 정보(243)는 개개의 사용자의 디바이스의 모델, 제조업자, 운영 시스템 및 전송 능력들을 표시한다. 일부 실시예들에서, 디바이스 정보(243)는 디바이스의 저장 용량, 디바이스 상의 자유 저장 공간량 및 디바이스의 사용자와 관련된 데이터 전송의 비용을 포함한다. 일부 실시예들에서, 디바이스 정보(243)는 디바이스가 저장할 수 있는 파일들의 크기 또는 타입에 관한 제한들을 포함한다. 전송 능력들은 얼마나 빨리 개개의 디바이스가 데이터를 전송할 수 있는지를 표시한다. 일부 실시예들에서, 전송 이력(244)은 개개의 사용자의 디바이스와 서버 시스템(106) 사이의 전송의 이력을 포함한다. 일부 실시예들에서, 이력(244)은 전송들의 날짜들 및 시간, 전송된 항목들의 명칭 또는 식별자, 전송된 항목들의 크기, 항목들이 전송된 레이트 및 항목들이 전송되는 네트워크의 타입을 포함한다. 일부 실시예들에서, 이력(244)은 개개의 디바이스에 의한 전송들의 평균 전송 시간을 포함한다.
일부 실시예들에서, 대화들 및 메시지(245)는 사용자와 관련되는 대화들 및 메시지들에 대응하는 식별자들을 포함한다. 예를 들어, 개개의 사용자가 참가자인(즉, 메시지의 송신자 또는 수신자) 대화들 및 메시지들.
업데이트 모듈(116)은 메트릭 모듈(222), 업데이트 생성 모듈(224) 및 사전정의된 기준들(231)을 포함한다. 메트릭 모듈(222)은 메시지들 및 대화들 상의 검사들을 결정한다. 일부 실시예들에서, 메트릭 모듈(222)은 개개의 메시지 또는 대화의 임의의 부분 상의 체크섬들을 결정할 수 있다. 예를 들어, 메트릭 모듈(222)은 대화에 포함된 메시지 식별자들의 서브세트의 체크섬을 결정할 수 있다. 메트릭 모듈(222)은 체크섬들을 결정하는 임의의 특정 방법에 제한되지 않는다.
업데이트 생성 모듈(116)은 하나 이상의 업데이트들(226)을 발생시키고 저장한다. 일부 실시예들에서, 업데이트들(226)은 하나 이상의 메시지들을 포함한다. 일부 실시예들에서, 업데이트들(226)은 하나 이상의 대화들을 포함한다. 업데이트들(226)은 도 4d의 논의에서 더 상세하게 논의된다.
일부 실시예들에서, 업데이트 생성 모듈(224)은 하나 이상의 업데이트들(226)을 발생시키기 위해 개개의 사용자에 대한 사용자 데이터베이스(122)에 저장된 사용자 데이터(242)를 액세스한다. 일부 실시예들에서, 개개의 사용자에 대한 사용자 데이터베이스(122)에 저장된 디바이스 정보(243) 및/또는 전송 이력(244) 정보에 의해 개개의 사용자에 대한 하나 이상의 업데이트들의 크기 및 수가 적어도 부분적으로 결정된다. 일부 실시예들에서, 업데이트들의 크기 및 수는 클라이언트 디바이스 상의 데이터 비용들, 네트워크 지연들, 메모리 제약들 또는 그들의 임의의 조합에 기초하여 결정된다. 예를 들어, 개개의 사용자의 디바이스가 (디바이스 정보(243)에 의해 표시된 바와 같은) 대량의 데이터를 저장할 수 있는 경우에, 대규모 크기들의 수많은 업데이트들이 개개의 사용자에 대해 발생될 수 있다. 다른 예에서, 개개의 사용자의 디바이스가 소량의 데이터를 저장할 수 있는 경우에 개개의 사용자에 대해 더 적거나 더 작은 업데이트들이 발생된다. 다른 예에서, 사용자의 디바이스 정보(243)는 사용자의 디바이스가 디바이스에 의해 다운로딩된 파일들의 크기 상의 제한을 부과하여 하나 이상의 업데이트들이 크기에서 제한되는 것을 발생시킴을 표시할 수 있다. 일부 실시예들에서, 개개의 사용자에 대한 하나 이상의 업데이트들(226)의 크기는 부분적으로 사용자의 전송 이력(244)에 관하여 결정된다. 예를 들어, 사용자는 안정한 접속을 가질 수 있으며, 따라서 더 큰 업데이트들을 수용할 수 있다. 다른 한편, 사용자는 간헐적 접속을 가질 수 있으며, 여기서 사용자에게 송신될 수 있는 데이터량은 제한되며 따라서 더 작은 업데이트들이 구축된다.
일부 실시예들에서, 개개의 사용자에 대한 하나 이상의 업데이트들(226)의 구성이 업데이트 모듈(116)에 저장된 적어도 부분적으로 사전정의된 기준들(231)로 결정된다. 일부 실시예들에서, 사전정의된 기준들은 비판독 메시지들, 가장 최근에 수신된 메시지들, 대화 헤더들의 목록과 관련된 대화들 중에서 가장 활성적인 것으로 결정된 대화들로부터의 메시지들, 클라이언트 디바이스의 사용자와 동일한 도메인에서의 송신자들로부터의 메시지들 및 사용자의 어드레스 북에 정렬된 컨택트들로부터의 메시지들을 포함하는 더 높은 우선순위의 특정 메시지들을 제공한다.
일부 실시예들에서, 업데이트 모듈(116)은 사전-정의된 시간 간격들에서 하나 이상의 업데이트들(226)을 송신한다. 일부 실시예들에서, 개개의 사전-정의된 시간 간격은 개개의 사용자에 대응하는 디바이스 정보(243) 및/또는 전송 이력(244) 정보에 기초하여 결정된다. 예를 들어, 개개의 사용자에 대한 전송 이력(244)은 개개의 사용자의 디바이스가 빈번하게 데이터를 수신할 수 있음을 표시할 수 있다. 다른 예에서, 개개의 사용자의 전송 이력(244)은 시간의 특정 기간들을 표시할 수 있으며, 여기서 개개의 사용자의 모바일 디바이스는 데이터를 수신할 수 있다.
일부 실시예들에서, 업데이트 모듈(116)은 또한 클라이언트 디바이스들(102)로부터 수신된 하나 이상의 요청들을 저장한다. 요청들은 도 4b 및 4c의 논의에서 더 상세하게 논의된다.
상기 식별된 엘리먼트들의 각각은 이전에 언급된 메모리 디바이스들 중 하나 이상에 저장될 수 있으며, 모듈들 또는 프로그램들의 각각은 상술한 기능을 수행하기 위한 명령들의 세트에 대응한다. 명령들의 세트는 하나 이상의 프로세서들(예를 들어, CPU들(202))에 의해 실행될 수 있다. 상기 식별된 모듈들 또는 프로그램들(즉, 명령들의 세트)은 별개의 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없으며, 따라서 이들 모듈들의 다양한 서브세트들이 조합될 수 있거나 그렇지 않으면 다양한 실시예들에서 재배열될 수 있다. 일부 실시예들에서, 메모리(206)는 상기에 식별된 모듈들 및 데이터 구조들의 서브세트를 저장할 수 있다. 더욱이, 메모리(206)는 상술하지 않은 추가적인 모듈들 및 데이터 구조들을 저장할 수 있다.
도 2가 서버 시스템을 도시하지만, 도 2는 본원에 설명된 실시예들의 구조적 개략으로서보다 서버들의 세트에서 존재할 수 있는 다양한 피처들의 기능적 설명으로서 더 의도된다. 실제적으로, 그리고 당업자에 의해 인식되는 바와 같이, 별개로 도시된 항목들은 조합될 수 있으며 일부 항목들은 분리될 수 있다. 예를 들어, 도 2에 별개로 도시된 일부 항목들(예를 들어, 운영 시스템(216) 및 네트워크 통신 모듈(218))은 단일 서버들 상에 구현될 수 있으며 단일 항목들은 하나 이상의 서버들에 의해 구현될 수 있다. 서버 시스템(106)을 구현하기 위해 이용되는 서버들의 실제 수 및 그들 사이에 피처들이 어떻게 할당되는지는 일 구현으로부터 다른 구현으로 변화할 것이며, 시스템이 피크 이용 기간들 동안뿐 아니라 평균 이용 기간들 동안 취급해야 하는 데이터 트래픽량에 부분적으로 의존할 수 있다.
도 3은 본 발명의 일부 실시예들에 따른 클라이언트 디바이스(102)를 도시하는 블록도이다. 클라이언트 디바이스(102)는 전형적으로 (CPU의) 하나 이상의 프로세싱 유닛들(302), 하나 이상의 네트워크 또는 다른 통신들 인터페이스들(308), 메모리(306) 및 이들 컴포넌트들을 상호접속하기 위한 하나 이상의 통신 버스들(304)을 포함한다. 클라이언트 디바이스(102)는 또한 디스플레이 디바이스(313) 및 키보드 및/또는 마우스(또는 다른 포인팅 디바이스)(314)를 포함하는 사용자 인터페이스를 포함할 수 있다. 메모리(306)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함한다; 그리고 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들 또는 다른 비-휘발성 고체 상태 저장 디바이스들과 같은 비-휘발성 메모리를 포함할 수 있다. 메모리(306)는 임의선택적으로 CPU(들)(302)로부터 원격으로 위치되는 하나 이상의 저장 디바이스들을 포함할 수 있다. 메모리(306), 또는 대안적으로 메모리(306) 내의 비-휘발성 메모리 디바이스(들)는 컴퓨터 판독가능한 저장 매체를 포함한다. 일부 실시예들에서, 클라이언트 디바이스(102)는 터치 스크린 디스플레이를 갖는 휴대용 전자 디바이스이다. 일부 실시예들에서, 메모리(306) 또는 메모리(306)의 컴퓨터 판독가능한 저장 매체는 다음의 프로그램들, 모듈들 및 데이터 구조들 또는 운영 시스템(316), 네트워크 통신 모듈(318), 애플리케이션들(328), 그래픽들 모듈(320), 사용자 인터페이스 모듈(322), 애플리케이션들(328) 및 데이터(338)를 포함하는 그들의 서브세트를 저장한다.
운영 시스템(316)은 다양한 기본 시스템 서비스들을 취급하기 위한 그리고 하드웨어 종속 태스크들을 수행하기 위한 절차들을 포함한다.
네트워크 통신 모듈(318)은 하나 이상의 통신 네트워크 인터페이스들(304)(유선 또는 무선) 및 인터넷, 다른 광역 네트워크들, 로컬 영역 네트워크들, 대도시 영역 네트워크들 등과 같은 하나 이상의 통신 네트워크들을 거쳐 다른 디바이스들과의 통신을 용이하게 한다.
사용자 인터페이스 모듈(322)은 클라이언트 디바이스(102)에 대한 사용자 입력 및 선택들을 트래킹한다.
그래픽들 모듈(320)은 애플리케이션들(328)과 관련된 사용자 인터페이스들을 디스플레이한다.
데이터(338)는 이메일 대화들(340), 이메일 메시지들(342) 및 업데이트 요청들(344)을 포함한다. 이메일 대화들(340) 및 이메일 메시지들(342)은 도 4a의 논의에서 더 상세하게 논의된다. 업데이트 요청들(344)은 도 4b 및 4c의 논의에서 더 상세하게 논의된다.
일부 실시예들에서, 애플리케이션들(328)은 모바일 이메일 애플리케이션(330)을 포함한다. 모바일 이메일 애플리케이션(330)은 하나 이상의 사용자들이 이메일 메시지들 및 이메일 대화들을 송신하고 수신하게 할 수 있다. 일부 실시예들에서, 모바일 이메일 애플리케이션(330)은 하나 이상의 사용자 계정들(332)에 대한 정보를 저장한다. 일부 실시예들에서, 개개의 사용자 계정(334)은 개개의 사용자 계정(334)과 관련된 대화들 및/또는 메시지들에 대응하는 메시지 식별자들의 목록 및/또는 대화 식별자들(336)의 목록을 포함한다. 예를 들어, 대화 식별자들의 목록은 개개의 사용자가 참가자인(즉, 대화의 메시지의 수신자 또는 송신자) 대화들에 대응할 수 있다.
일부 실시예들에서, 모바일 이메일 애플리케이션(330)은 업데이트 요청들(344)을 발생시키고 서버(예를 들어, 도 1, 서버(106))에 송신하는 업데이트 모듈(336)을 포함한다. 일부 실시예들에서, 업데이트 요청들(344)은 단일 대화를 업데이트하기 위해 하나 이상의 요청들(440)을 포함한다. 일부 실시예들에서, 업데이트 요청들(344)은 대화들의 목록을 업데이트하기 위해 하나 이상의 요청들(450)을 포함한다.
일부 실시예들에서, 요청 모듈(336)은 업데이트할 대화들의 목록으로부터 하나 이상의 대화들을 선택하기 위해 이용된 사전정의된 기준들(337)을 포함한다. 일부 실시예들에서, 사전정의된 기준들은 비판독 메시지들, 가장 최근에 수신된 메시지들을 갖는 대화들, 대화 헤더들의 목록과 관련된 대화들 중에서 가장 활성적인 것으로 결정된 대화들, 클라이언트 디바이스의 사용자와 동일한 도메인에서 송신자들로부터의 메시지들을 포함하는 대화들 및 사용자의 주소 북에 정렬된 컨택트들로부터의 메시지들을 포함하는 대화들을 포함한다.
상기 식별된 엘리먼트들의 각각은 이전에 언급된 메모리 디바이스들 중 하나 이상에 저장될 수 있으며, 모듈들 또는 프로그램들 각각은 상술한 기능을 수행하기 위한 명령들의 세트에 대응한다. 명령들의 세트는 (예를 들어, CPU(302)의) 하나 이상의 프로세서들에 의해 실행될 수 있다. 상기 식별된 모듈들 또는 프로그램들(즉, 명령들의 세트들)은 별개의 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없으며, 따라서 이들 모듈들의 다양한 서브세트들이 조합될 수 있거나 그렇지 않으면 다양한 실시예들에서 재-배열될 수 있다. 일부 실시예들에서, 메모리(306)는 상기에 식별된 데이터 구조들 및 모듈들의 서브세트를 저장할 수 있다. 더욱이, 메모리(306)는 상술하지 않은 추가적인 모듈들 및 데이터 구조들을 저장할 수 있다.
도 3이 클라이언트 디바이스를 도시하지만, 도 3은 본원에 설명된 실시예들의 구조적 개략으로서보다 클라이언트 디바이스에 존재할 수 있는 다양한 피처들의 기능적 설명으로서 더 의도된다. 실제적으로, 그리고 당업자에 의해 인식되는 바와 같이, 별개로 도시된 항목들은 조합될 수 있으며 일부 항목들은 분리될 수 있다.
이제 도 4a, 4b, 4c 및 4d를 참조하면, 클라이언트(102) 및 서버 시스템(106) 상에 저장된 데이터 구조들을 도시한다. 다음의 데이터 구조들은 대화들, 메시지들, 업데이트 요청들 및 업데이트들을 저장한다.
이제 도 4a를 참조하면, 대화들의 목록을 저장하기 위한 데이터 구조(400)를 도시한다. 대화들의 목록(400)은 하나 이상의 대화들(404)을 포함한다. 개개의 대화(404-1)는 대화 식별자(406), 제 1 메시지 식별자(407), 최종 메시지 식별자(408), 하나 이상의 사용자 식별자들(409), 대화 메트릭(410), 헤더(411), 메타 데이터(413) 및 하나 이상의 메시지들(412)을 포함한다. 일부 실시예들에서, 대화들의 목록(400)은 이메일 데이터베이스(120)에서의 서버 시스템(106) 상에 저장된다. 일부 실시예들에서, 대화들의 목록(400)은 데이터(338)로서 클라이언트 디바이스(102) 상에 저장된다.
대화 식별자(406)는 개개의 대화(404-1)를 식별한다. 제 1 메시지 식별자(407)는 대화(404-1)에서의 제 1 메시지를 식별한다. 최종 메시지 식별자(408)는 대화(404-1)에서의 최종 메시지를 식별한다. 일부 실시예들에서, 제 1 메시지 및 최종 메시지는 메시지가 수신되거나 송신된 때를 표시하는 메시지들과 관련된 타임스탬프들에 의해 결정된다. 일부 실시예들에서, 대화에서의 제 1 메시지는 대화에서 가장 오래된 메시지 또는 첫번째로 수신된 것이다. 일부 실시예들에서, 최종 메시지 식별자(408)는 대화(404-1)에서 가장 최근에 수신된 메시지에 대응한다.
대화 메트릭(410)은 대화의 측정 또는 메트릭이다. 일부 실시예들에서, 대화 메트릭(410)은 대화의 일부분의 체크섬이다. 예를 들어, 메트릭(410)은 대화(404-1)에서의 메시지들(412)의 메시지 식별자들의 체크섬일 수 있다. 상기 논의된 바와 같이, 체크섬들은 데이터의 2개의 피스들이 동일한지 여부를 결정하기 위해 이용될 수 있다.
메타 데이터(413)는 라벨들(414)을 포함한다. 라벨 또는 폴더는 대화들을 그룹핑하기 위해 이용된다. 예를 들어, 라벨 또는 그룹은 휴가 계획들과 관련하는 대화들을 위한 것일 수 있다.
개개의 메시지(412-1)는 메시지 식별자(420), 대화 식별자(422), 헤더 정보(424), 컨텐츠(426) 및 임의선택적으로 첨부들(428)을 포함한다. 메시지 식별자(420)는 개개의 메시지(412)를 식별한다. 대화 식별자(422)는 개개의 메시지(412)가 관련되는 대화를 식별한다. 일부 실시예들에서, 헤더 정보(424)는 송신자 이메일 주소, 하나 이상의 수신자 이메일 주소들, 송신 타임스탬프, 수신 타임스탬프 및 임의선택적으로 임의의 중간 전송 에이전트들의 타임스탬프들을 포함한다. 개개의 메시지(412-1)의 컨텐츠(426) 또는 메시지 몸체는 텍스트 및 임의선택적으로 텍스트에 대한 포맷팅(formatting) 정보를 포함한다.
이제 도 4b 및 도 4c를 참조한다. 도 4b는 대화를 업데이트하기 위한 요청(440)에 대한 데이터 구조를 도시한다. 요청(440)은 업데이트될 클라이언트(102) 상에 저장된 대화에 관한 정보를 포함한다. 일부 실시예들에서, 요청(440)은 클라이언트(102)의 요청 모듈(336)에 의해 발생된다. 일부 실시예들에서, 하나 이상의 요청들(440)이 클라이언트(102)(예를 들어, 업데이트 요청들(344)) 및/또는 서버 시스템(106)(예를 들어, 요청들(230)) 상에 저장된다. 요청은 대화 식별자(442), 제 1 메시지 식별자(444), 최종 메시지 식별자(446) 및 대화 메트릭(448)을 포함한다. 대화 식별자(442)는 업데이트되도록 요청되는 대화를 식별한다. 제 1 메시지 식별자(444)는 클라이언트 디바이스(102) 상의 대화에서의 제 1 메시지에 대응한다. 최종 메시지 식별자(446)는 클라이언트 디바이스(102) 상의 대화에서의 최종 메시지에 대응한다. 대화 메트릭(448)은 클라이언트 디바이스(102) 상에 저장된 대화의 일부분의 체크섬이다. 일부 실시예들에서, 대화 메트릭(448)은 대화 식별자(442)에 대응하는 대화에서의 메시지 식별자들의 체크섬이다.
이제 도 4c를 참조하면, 대화들의 목록을 업데이트하기 위한 요청(450)을 도시한다. 요청(450)은 요청들의 목록(440)을 포함한다. 요청들의 목록(450)에서의 요청들(440)은 업데이트되는 클라이언트(102) 상의 개개의 대화들에 관한 정보를 포함한다. 일부 실시예들에서, 요청(450)은 클라이언트(102)의 요청 모듈(336)에 의해 발생된다. 일부 실시예들에서, 요청(450)은 클라이언트(102)(예를 들어, 업데이트 요청들(344)) 상에 및/또는 서버 시스템(106)(예를 들어, 요청들(230)) 상에 저장된다. 상기에 논의된 바와 같이, 요청들(450)의 목록에서의 각 요청(440)은 요청 식별자(451), 대화 식별자(452), 제 1 메시지 식별자(454), 최종 메시지 식별자(456) 및 대화 메트릭(458)을 포함한다.
이제 도 4d를 참조하면, 일부 실시예들에 따른 업데이트(460)를 위한 데이터 구조를 도시한다. 상기에 논의된 바와 같이, 업데이트들이 클라이언트(102)로부터 서버(106)로 송신되며 현재까지 클라이언트(102) 상에 개개의 대화들을 발생시키는 정보를 포함한다. 일부 실시예들에서, 업데이트(460)가 발생되며 서버(106) 상의 업데이트 모듈(116)에 의해 임의선택적으로 저장된다. 업데이트(460)는 클라이언트(102) 상에 저장된 하나 이상의 대화들에 대한 대화들 업데이트들(462)을 포함한다. 일부 실시예들에서, 업데이트(460)는 클라이언트(102)에 이전에 송신되지 않은 새로운 대화들을 포함한다. 각 대화 업데이트(462)는 업데이트 식별자(464), 대화 식별자(466), 제 1 메시지 식별자(468), 최종 메시지 식별자(470), 대화 메트릭(472) 및 하나 이상의 메시지들(474)을 포함한다. 개개의 메시지는 메시지 식별자(478), 대응하는 대화 식별자(380), 헤더 정보(482) 및 첨부들(486)을 포함한다.
이제 도 5를 참조하면, 일부 실시예들에 따른, 클라이언트(102) 상의 대화를 업데이팅하는 프로세스(500)를 도시하는 흐름도이다. 대화를 업데이트하기 위한 요청은 클라이언트(102)로부터 서버 시스템(106)에 송신된다(502). 일부 실시예들에서, 요청은 대화 식별자, 제 1 메시지 식별자 및 대화 메트릭을 포함한다(503). 서버(106)는 대화를 업데이트하기 위한 요청을 수신한다(504). 서버(106)는 대화 식별자, 제 1 메시지 식별자, 최종 메시지 식별자 및 대화 메트릭에 기초하여 대화에 대응하는 하나 이상의 업데이트들을 발생시킨다(506). 서버는 하나 이상의 업데이트들(예를 들어, 도 4d, 업데이트(460))을 클라이언트(102)에 송신한다(508). 클라이언트(102)는 대화에 대응하는 하나 이상의 업데이트들을 수신한다(510). 일부 실시예들에서, 하나 이상의 업데이트들은 클라이언트(102)가 이전에 갖지 않았던 대화에서의 메시지들을 포함한다.
이제 도 6을 참조하면, 일부 실시예들에 따른, 대화들의 목록을 업데이팅하는 프로세스(600)를 도시하는 흐름도이다. 대화들의 목록을 업데이트하기 위한 요청(예를 들어, 도 4c, 요청(450))은 클라이언트(102) 상에 발생된다. 대화의 목록을 업데이트하기 위한 요청은 클라이언트(102)로부터 서버 시스템(106)에 송신된다(602). 일부 실시예들에서, 단일 요청이 클라이언트(102)로부터 서버 시스템(106)에 송신된다. 서버 시스템(106)은 대화들의 목록을 업데이트하기 위한 요청을 수신한다(604). 서버 시스템(106)은 요청에 기초하여 복수의 업데이트들을 발생시킨다(606). 업데이트들은 대화들의 목록에서의 개개의 대화들에 대응하는 메시지들을 포함한다(606). 일부 실시예들에서, 업데이트들은 클라이언트가 이전에 수신하지 않은 대화들을 포함한다. 서버(106)는 복수의 업데이트들을 클라이언트(102)에 송신한다. 클라이언트(102)는 서버(106)로부터 복수의 업데이트들을 수신한다. 복수의 업데이트들은 대화들의 목록에서의 개개의 대화들에 대응하는 메시지들을 포함한다(610).
이제 도 7a 및 도 7b를 참조하면, 일부 실시예들에 따른 예시적인 스크린숏들을 도시한다.
도 7a는 모바일 통신 디바이스에서 동작하기 위해 적응된 이메일 애플리케이션의 예시적인 받은편지함(inbox)의 스크린샷(700)을 도시한다. 일부 실시예들에서, 받은편지함은 이것이 받은편지함임을 표시하는 헤더(701), 및 받은편지함에서의 임의의 수의 비판독 또는 새로운 메시지들을 갖는다. 받은편지함에 정렬된 것은 다양한 대화들(702, 703, 704 및 705)이다. 예를 들어, 도시된 실시예에서, 모든 메시지들이 모바일 통신 디바이스의 사용자에 의해 판독된(예를 들어, 대화(704)) 대화는 정상 크기의 라인 폭들을 갖는 텍스트 및 이들 판독 스레드된 대화들의 각각과 관련된 개봉된 편지봉투에 대한 아이콘을 갖는다. 적어도 하나의 비판독 메시지를 포함하는 대화(예를 들어, 대화(703))는 더 두꺼운 라인 폭들을 갖는 텍스트 및 대화의 각각과 관련된 밀봉된 편지봉투의 아이콘을 갖는다. 받은편지함에서 정렬하는 이러한 대화에서, 각 대화와 관련된 것은 각 대화에 포함된 총 메시지들의 수이다.
도 7b는 본 발명에 따른 대화(724)에서 통합된 헤더(726)를 확장하기 위한 "확장" 커맨드(730)를 갖는 클라이언트 디바이스 상의 풀 다운(pull down) 메뉴의 스크린샷(720)이다. 통합된 헤더를 확장하기 위한 서로 다른 방법들이 서로 다른 실시예들에 제공될 수 있다; 예를 들어, 일련의 마우스 클릭들, 키 입력들을 발행함으로써, 특정 헤더 위에 커서를 호버링(hovering)함으로써 그리고 엔터 키를 누름으로써, 사용자는 헤더를 확장하기 위한 커맨드들을 발행할 수 있다. 도 7b는 도 7b에 도시된 바와 같은 수정된 대화에서의 일련의 콜랩스트(collapsed) 카드들을 나타내는 통합된 헤더(726)의 사용자에 의한 중간-동작 확장에서 도시하는 스크린숏(720)을 도시한다. 통합된 헤더(726)를 확장하기 위해, 사용자는 먼저 일부 실시예들에서, 선택되었을때 하이라이트되는 통합된 헤더(726)를 선택한다. 일부 실시예들에서, 사용자는 확장 동작을 활성화하기 위해 간단하게 '엔터'키를 누를 수 있거나, 다른 실시예들에서, 도 7b에 도시된 바와 같이, 서로 다른 동작들의 목록을 포함하는 풀 다운 메뉴를 활성화시키고, 그 후에 선택적으로 '확장'(730) 커맨드를 고르고 활성화한다. 애플리케이션에서의 풀 다운 메뉴에 정렬된 동작들이 도시된 것보다 과하거나 부족하거나, 동일하거나 서로 다른 커맨드들을 포함할 수 있음이 인식되어야 한다. 도시는 예시적인 것으로 도시되어야 하며 본래 제한적인 것이 아니다.
간헐적으로 접속되는 모바일 이메일 클라이언트 상의 대화 캐시에 새로운 메시지들의 최소 세트를 전달하기 위한 경량-가중치 방법
본원에 설명된 방법들은 전송된 정보의 최소량으로 대화를 업데이트하기 위한 효율적인 방식을 개시하며, 그에 의해 더 적은 대역폭을 이용하고, 배터리 수명을 절약하며 업데이트 지연을 감소시킨다. 그와 같은 방법들은 간헐적 또는 불안정한 데이터 접속들을 갖는 모바일 디바이스들에 이용하기 위해 특히 유용할 수 있다.
도 8은 클라이언트(102) 상에 저장된 대화에 대한 업데이트를 요청하고 수신하는 방법(800)을 도시하는 흐름도이다. 방법(800)은 하나 이상의 프로세서들 및 메모리를 갖는 클라이언트 디바이스(102)에서 수행된다. 도 9a, 9b 및 9c는 대화를 위한 하나 이상의 업데이트들을 발생시키는 방법(900)을 도시한다. 방법(900)은 서버 시스템(예를 들어, 도 1의 서버(106))에서 수행된다. 도 10a 및 10b는 하나 이상의 업데이트들에 어느 메시지들을 포함할지를 결정하는 프로세스를 도시하는 블록도들이다.
도 8은 대화에 대한 업데이트를 요청하고 수신하는 방법(800)을 도시하는 흐름도이다. 방법(800)은 클라이언트 디바이스(102)에서 수행된다. 클라이언트 상에 저장된 대화를 업데이트하기 위한 요청(예를 들어, 도 4b의 요청(440))은 클라이언트 디바이스(예를 들어, 도 3의 요청 모듈(335)에 의해)에서 발생된다. 대화를 업데이트하기 위한 요청은 서버에 송신된다(802). 일부 실시예들에서, 요청에 대응하는 대화의 적어도 일부분은 클라이언트 상에 저장된다(802). 요청(예를 들어, 도 4b의 대화(440)를 업데이트하기 위한 요청)은 업데이트되는 대화에 대응하는 대화 식별자, 대화에서의 제 1 메시지에 대응하는 제 1 메시지 식별자, 대화의 최종 메시지에 대응하는 최종 메시지 식별자 및 대화의 대화 메트릭을 포함한다(804). 요청에서의 정보(즉, 대화 식별자, 제 1 메시지 식별자, 최종 메시지 식별자 및 대화 식별자)는 대화와 함께(예를 들어, 이메일 대화(404-1, 도 4a) 저장되며, 결과적으로 클라이언트는 정보를 발생시키기보다는 오히려 정보를 검색한다. 클라이언트는 대화의 대화 메트릭을 발생시키기 위해 시간과 자원들을 낭비할 필요가 없다. 일부 실시예들에서, 대화 메트릭은 대화에서의 메시지 식별자들의 체크섬이다(806). 대화 메트릭은 대화에서의 메시지들의 임의의 균일한 서브세트의 체크섬일 수 있음이 주목된다. 일부 실시예들에서, 체크섬은 대화에서의 모든 각각의 메시지이다.
일부 실시예들에서, 대화를 업데이트하기 위한 사용자 요청에 응답하여 요청이 송신된다(808). 일부 실시예들에서, 모바일 이메일 애플리케이션의 실행에 응답하여, 그리고 사용자에 의한 어떠한 추가 동작 없이 요청이 발생되며 및/또는 서버(106)에 송신된다. 일부 실시예들에서, 사용자의 받은편지함을 보기 위한 사용자의 요청에 응답하여 그리고 사용자에 의한 어떠한 추가 동작 없이 요청이 발생되고 및/또는 서버(106)에 송신된다. 모바일 이메일 애플리케이션의 실행에 응답하여 또는 사용자의 받은편지함을 보기 위한 사용자의 요청에 응답하여 요청이 발생되고 및/또는 서버(106)에 송신될 때, 사용자의 받은편지함에서의 대화를 위해 업데이트 요청이 발생된다. 일부 실시예들에서, 업데이트되는 대화는 가장 최근에 수신된 메시지를 포함하는 대화 또는 가장 많은 메시지들 또는 참가자들을 갖는 대화이다. 일부 실시예들에서, 어떠한 사용자 개시된 동작 없이 그리고 주기적으로 요청이 발생되고 및/또는 서버(106)에 송신된다.
일부 실시예들에서, 대화(예를 들어, 이메일 대화(404-1), 도 4a)는 대화 식별자, 헤더, 제 1 메시지 식별자, 최종 메시지 식별자, 대화 메트릭 및 복수의 메시지들을 포함한다(812). 복수의 메시지들의 각 메시지는 메시지 식별자, 대화 식별자, 헤더 및 컨텐츠를 포함한다(812).
일부 실시예들에서, 하나 이상의 업데이트들이 서버(106)로부터 수신된다(810). 하나 이상의 업데이트들은 대화에 대응하는 하나 이상의 메시지들을 포함한다(810). 일부 실시예들에서, 하나 이상의 업데이트들은 클라이언트 상에 저장된 제 1 대화의 일부분에서의 메시지들과 구별되는 하나 이상의 메시지들을 포함한다(814). 다른 방식으로 서술하면, 클라이언트는 클라이언트가 아직 갖지 못한 새로운 메시지들을 수신한다. 예를 들어, 제 1 대화는 2개의 메시지들을 포함할 수 있으며 하나 이상의 업데이트들은 클라이언트에 저장되지 않는 3개의 새로운 메시지들을 포함할 수 있다. 이전의 예에서, 3개의 새로운 메시지들은 2개의 기존 메시지들 이후에 서버(106)에 의해 수신되었을 수 있다. 일부 실시예들에서, 하나 이상의 업데이트들은 그 대화에 대해, 업데이트된 제 1 메시지 식별자, 업데이트된 최종 메시지 식별자 및 업데이트된 대화 메트릭을 포함한다(815). 일부 실시예들에서, 업데이트된 값들(업데이트된 제 1 메시지 식별자, 업데이트된 최종 메시지 식별자 및 업데이트된 대화 메트릭)은 클라이언트 디바이스 상에 저장된 대화에 대한 이전의 값들을 교체한다. 업데이트된 값들은 후속하는 업데이트 요청들에서 이용된다. 일부 실시예들에서, 전체 대화가 수신된다.
일부 실시예들에서, 하나 이상의 업데이트들에서 수신된 정보가 클라이언트 디바이스(102)(예를 들어, 데이터(338)로서) 상에 저장된다. 일부 실시예들에서, 수신된 메시지들은 클라이언트 디바이스 상의 동일한 메시지들을 교체한다. 일부 실시예들에서, 수신된 하나 이상의 메시지들은 클라이언트 디바이스 상에 저장된 개개의 대화와 관련된다.
일부 실시예들에서, 하나 이상의 수신된 메시지들과의 대화가 디스플레이된다(816). 일부 실시예들에서, 대화에 대응하는 헤더는 대화가 업데이트된 비주얼 표시로 디스플레이된다. 새로운 메시지들의 존재를 표시하기 위해, 헤더는 볼드체일 수 있고, 이태리체일 수 있으며 하나 이상의 아이콘들을 도시할 수 있다. 예를 들어, 도 7a에 도시된 바와 같이, 대화를 위한 헤더(703)는 사용자에게 대화에서의 새로운 비판독 메시지들이 존재함을 표시하기 위해 볼드체일 수 있다.
도 9a, 9b 및 9c는 대화에 대한 업데이트를 발생시키는 방법(900)을 도시한다. 방법(900)은 서버(106)에서 수행된다. 제 1 대화를 업데이트하기 위한 요청은 클라이언트(102)로부터 수신된다(902). 제 1 대화의 일부분은 클라이언트(102) 상에 저장된다(902). 요청은 제 1 대화에 대응하는 대화 식별자, 클라이언트 상에 저장된 제 1 대화의 일부분에서의 제 1 메시지에 대응하는 제 1 메시지 식별자, 클라이언트 상에 저장된 제 1 대화의 일부분에서의 최종 메시지에 대응하는 최종 메시지 식별자, 및 클라이언트 상에 저장된 제 1 대화의 일부분의 대화 메트릭을 포함한다(904). 일부 실시예들에서, 대화 메트릭은 대화에서의 메시지 식별자들의 체크섬이다(906).
제 1 대화에 대한 하나 이상의 업데이트들이 대화 식별자, 제 1 메시지 식별자, 최종 메시지 식별자 및 대화 메트릭에 기초하여 발생된다(908). 하나 이상의 업데이트들은 제 1 대화와 관련된 하나 이상의 메시지들을 포함한다(908). 일부 실시예들에서, 하나 이상의 업데이트들은 클라이언트 상에 저장된 제 1 대화의 일부분에서의 메시지들과 구별되는 하나 이상의 메시지들을 포함한다(910). 일부 실시예들에서, 하나 이상의 업데이트들(460)은 업데이트 모듈(116)에 의해 발생된다.
일부 실시예들에서, 하나 이상의 업데이트들을 발생시키는 것은 서버 상에 저장된 제 1 대화의 제 1 메시지에 대응하는 업데이트된 제 1 메시지 식별자 및 서버상에 저장된 제 1 대화의 최종 메시지에 대응하는 업데이트된 최종 메시지 식별자를 결정하는 것을 포함한다(912). 업데이트된 제 1 메시지 식별자 및 최종 메시지 식별자는 하나 이상의 업데이트들에 포함된다(912). 일부 실시예들에서, 업데이트된 제 1 메시지 식별자 및 업데이트된 최종 메시지 식별자는 업데이트 모듈(116)에 의해 발생된다. 일부 실시예들에서, 하나 이상의 업데이트들의 각 업데이트는 사전정의된 크기이다(914). 일부 실시예들에서, 하나 이상의 업데이트들의 사전-정의된 크기는 클라이언트 디바이스 정보(243) 및/또는 전송 이력(244)과 같은 클라이언트 디바이스(102)의 사용자에 대해 저장된 사용자 데이터(240)에 따라 결정된다. 일부 실시예들에서, 하나 이상의 업데이트들을 발생시키는 것은 제 1 대화의 업데이트된 체크섬을 발생시키는 것을 포함한다(916). 업데이트된 체크섬은 하나 이상의 업데이트들에 포함된다(916). 일부 실시예들에서, 업데이트된 검사 메트릭은 대화에서의 메시지 식별자들의 체크섬이다. 대화 메트릭은 대화의 임의의 부분 또는 심지어 전체 대화의 체크섬일 수 있음이 주목된다. 일부 실시예들에서, 체크섬은 메트릭 모듈(222)에 의해 결정된다. 일부 실시예들에서, 하나 이상의 업데이트들은 업데이트된 모듈(116)에 의해 발생된다.
대화를 업데이트하는데 필요한 최소량의 정보를 송신하기 위해, 클라이언트에 송신된 하나 이상의 업데이트들은 클라이언트 디바이스 상에 아직 없는 새로운 메시지들만을 포함한다. 서버(106)의 업데이트 모듈(116)은 대화의 어느 메시지들이 클라이언트(102) 상에 저장되는지 및 대화에 대해 서버상에 저장된 어느 메시지들이 새로운 것인지를 결정하기 위해 업데이트 요청에서의 정보를 이용한다. 다른 방식으로 서술하면, 업데이트 모듈(116)은 서버상에 저장된 대응하는 대화와 클라이언트 상에 저장된 대화를 동기화하기 위해 업데이트 요청에서의 정보를 이용한다. 상기에 논의된 바와 같이, 데이터의 2개의 피스들이 동일한지 여부를 결정하기 위해 체크섬들이 이용될 수 있다. 클라이언트로부터의 업데이트 요청에 수신된 체크섬과 서버상에 저장된 대화의 메시지 식별자들의 서브세트들의 체크섬들을 비교함으로써, 서버(106)는 어느 메시지들을 클라이언트가 이미 갖고 있는지 및 어느 메시지들이 클라이언트(102)를 업데이트하는데 필요한지를 식별할 수 있다.
일부 실시예들에서, 하나 이상의 업데이트들을 발생시키는 것은 요청에서의 어느 제 1 메시지 식별자가 서버상에 저장된 대화에 대한 제 1 메시지 식별자에 대응하는지를 결정하는 것을 포함한다(920). 대화는 요청에서의 대화 식별자에 대응한다(920). 일부 실시예들에서, 요청에서의 제 1 메시지 식별자가 (대화의 메시지들 중 어느 것도 클라이언트 상에 있지 않음을 표시하는) 서버상에 저장된 대화에 대한 제 1 메시지 식별자에 대응하지 않는 경우에, 전체 대화가 하나 이상의 업데이트들에 포함된다. 따라서, 제 1 메시지 식별자들이 매칭하지 않는 전형적인 경우에, 전체 대화가 클라이언트에 송신된다. 일부 실시예들에서, 제 1 메시지 식별자가 서버상에 저장된 대화를 위한 제 1 메시지 식별자에 대응하는 경우에, 제 1 대화에서의 제 1 메시지 식별자로부터 개개의 메시지 식별자로 서버상의 제 1 대화의 메시지 식별자들의 일시적 체크섬이 결정된다(920). 일시적 체크섬이 클라이언트로부터 수신된 체크섬과 동일할 때 그리고 클라이언트로부터 수신된 최종 메시지 식별자가 개개의 메시지에 대응할 때, 일시적 체크섬을 결정하는데 이용되지 않은 대응하는 메시지 식별자들을 갖는 제 1 대화에서의 하나 이상의 메시지들이 식별된다(920). 식별된 메시지들은 하나 이상의 업데이트들에 포함된다(920). 일부 실시예들에서, 결정하는 것 및 식별하는 것은 제 1 대화에서의 각 개개의 메시지 식별자에 대해 반복된다(922). 다른 방식으로 서술하면, 대화에서의 메시지 식별자들의 각 서브세트에 대해, 서버는 개개의 서브세트의 체크섬을 결정하며 그 체크섬을 클라이언트로부터의 요청에 수신된 체크섬과 비교한다. 체크섬들이 동일한 경우에, 서브세트에 없는 대화에서의 하나 이상의 메시지들은 클라이언트가 갖지 않는 새로운 메시지들이다. 체크섬들이 동일하지 않으면, 매치가 발견될 때까지 또는 서버상에 저장된 대화에서의 메시지 식별자들의 전부가 요청에서의 체크섬과 비교될 때까지 다른 서브세트가 발생되며 비교들이 계속된다. 매치가 존재하지 않는 경우에, 전체 대화가 하나 이상의 업데이트들에 포함된다.
일부 실시예들에서, 일시적 체크섬은 메시지들의 컨텐츠 상의 체크섬이다(924). 체크섬은 대화의 임의의 부분 또는 심지어 전체 대화일 수 있음이 주목된다.
일부 실시예들에서, 클라이언트로부터 수신된 체크섬과 동일한 체크섬을 갖는 서버상의 대화의 일부분이 식별되며 대화의 일부분에 후속하는 대화의 인접한 서브세트가 식별된다. 인접한 서브세트는 하나 이상의 업데이트들에 포함된다(925).
도 10a 및 10b는 하나 이상의 업데이트들(440)에 포함하기 위한 메시지들을 선택하는 프로세스를 도시하는 것을 돕는다. 수신된 요청에서의 제 1 메시지 식별자는 서버상에 저장된 대화의 제 1 메시지 식별자와 비교된다(1001). 식별자들이 동일하지 않은 경우에, 대화에서의 메시지들의 전부를 포함하기 위한 하나 이상의 업데이트들이 발생된다(1016). 따라서, 제 1 메시지 식별자들이 매칭하지 않는 전형적인 경우에, 전체 대화가 클라이언트에 송신된다. 식별자들이 동일한 경우에, 중간 메시지 식별자가 요청에 포함된 대화 식별자에 대응하는 대화의 제 1 메시지 식별자로 설정된다(1002). 제 1 메시지 식별자 및 중간 메시지 식별자에 대응하는 대화에서의 메시지들 사이 및 그들 메시지들을 포함하는 메시지 식별자들의 전부에 대해 일시적 체크섬이 결정된다(1004). 예를 들어, 도 10b에 도시된 바와 같이, 체크섬(1038)은 대화(1030)의 첫 번째 2개의 메시지들 식별자들에 대해 결정될 수 있다. 일시적 체크섬은 클라이언트로부터 수신된 요청에서의 체크섬과 비교된다(1006). 체크섬들이 동일한 경우에, 일시적 체크섬을 발생시키기 위해 이용되지 않은 하나 이상의 메시지들은 만약 있다면, 하나 이상의 업데이트들에 포함된다(1010). 다시 말해, 체크섬들을 비교함으로써, 클라이언트가 갖지 않는 메시지들이 식별되며 하나 이상의 업데이트들에 포함된다. 예를 들어, 도 10b에 도시된 바와 같이, 메시지 1, 메시지 2 및 메시지 3의 체크섬(1042)은 업데이트(1046)에 포함된 체크섬(1042)에서 고려되지 않은 요청 및 메시지들(메시지 4(1032-4) 및 메시지 5(1032-5))에 수신된 체크섬(1036)과 동일하다. 클라이언트에 송신되는 새로운 메시지들이 없는 경우에 서버상에 새로운 메시지들이 존재하지 않을 수 있음이 주목된다. 체크섬들이 동일하지 않은 경우에, 일시적 메시지 식별자가 서버상에 저장된 대화상의 최종 메시지에 대응하는지 여부가 결정된다(1008). 일시적 메시지 식별자는 대화의 최종 메시지에 대응하지 않는 경우에, 중간 메시지 식별자는 대화에서의 다음 메시지 식별자에 설정되며 프로세스는 블록(1004)으로 되돌려 루프한다(1012). 다시 말해, 대화의 메시지 식별자들의 서브세트에 대한 체크섬이 업데이트 요청에서 수신된 체크섬과 동일할 때까지 또는 메시지 식별자들의 전부의 체크섬이 요청의 체크섬에 비교될 때까지 프로세스는 스스로 반복한다. 블록(1008)에서, 일시적 메시지 식별자가 대화에서의 최종 메시지에 대응하는 경우에, 하나 이상의 업데이트들이 발생되며 대화에서의 메시지들의 전부는 하나 이상의 업데이트들에 포함된다. 하나 이상의 업데이트들(440)은 업데이트 모듈(116)에 의해 발생된다.
도 9c를 다시 참조하면, 하나 이상의 업데이트들이 클라이언트에 송신된다(926). 일부 실시예들에서, 하나 이상의 업데이트들의 각 업데이트는 사전-정의된 시간 간격에 송신된다(925). 일부 실시예들에서, 사전-정의된 시간 간격은 디바이스 정보(243) 및/또는 전송 이력(244)과 같은 클라이언트 디바이스(102)의 개개의 사용자에 대해 사용자 데이터(240)에 따라 결정된다.
간헐적으로-접속되는 오프라인-가능 모바일 웹 애플리케이션에서의 메시지 프리페칭을 위한 메커니즘
본원에 설명된 방법들은 단일 요청을 갖는 대화의 목록을 업데이트하기 위한 효율적인 방법을 개시한다. 그와 같은 방법 및 시스템의 장점은 모바일 디바이스가 대화들의 목록에서의 각 대화에 대한 별개의 업데이트 요청을 송신할 필요가 없어, 그에 의해 더 적은 대역폭을 이용하고, 배터리 수명을 절약하며 업데이트 지연을 감소시킨다는 것이다. 그와 같은 방법들은 간헐적 또는 불안정한 데이터 접속들을 갖는, 또는 제한된 또는 값비싼 대역폭을 갖는 데이터 접속들을 갖는 모바일 디바이스들에 대해 특히 유용할 수 있다.
도 11은 대화의 목록에 대한 업데이트를 요청하고 수신하는 방법(1100)을 도시하는 흐름도이다. 방법(1100)은 하나 이상의 프로세서들 및 메모리를 갖는 클라이언트 디바이스(예를 들어, 디바이스(102), 도 1)에서 수행된다. 도 12a, 12b 및 12c는 대화들의 목록에 대한 하나 이상의 업데이트들을 발생시키는 방법(1200)을 도시한다. 방법(1200)은 서버 시스템(예를 들어, 서버(106), 도 1)에서 수행된다.
도 11a 및 11b는 대화들의 목록에 대한 업데이트를 요청하고 수신하는 방법(1100)을 도시하는 흐름도들이다. 방법(1100)은 클라이언트 시스템(102)에서 수행된다. 대화들의 목록을 업데이트하기 위한 요청(예를 들어, 대화들의 목록을 업데이트하기 위한 요청(450), 도 4c)이 발생된다. 일부 실시예들에서, 사전정의된 크기의 단일 요청이 발생된다. 대화들의 목록을 업데이트하기 위한 요청이 서버(예를 들어, 서버(106))에 송신된다(1102). 대화들의 목록에서의 각 대화의 적어도 일부분이 클라이언트 상에 저장된다(1102). 일부 실시예들에서, 대화의 목록에서의 각 대화는 대화 식별자, 헤더, 제 1 메시지 식별자, 최종 메시지 식별자 및 대화 메트릭 및 복수의 메시지들을 포함한다(1104). 복수의 메시지들의 각 메시지는 메시지 식별자, 대화 식별자, 헤더 및 컨텐츠를 포함한다(1104). 일부 실시예들에서, 모바일 이메일 애플리케이션의 실행에 응답하여 그리고 사용자에 의한 임의의 추가적인 동작 없이 요청이 발생되고 및/또는 송신된다. 다시 말해, 사용자가 명시적으로 업데이트를 요청하지 않더라도 요청이 송신될 수 있다. 일부 실시예들에서, 대화들의 목록을 업데이트하기 위한 요청(450)은 요청 모듈(336)에 의해 발생된다.
일부 실시예들에서, 사전-정의된 크기의 단일 업데이트 요청만이 서버에 송신된다. 단일 요청에 응답하여, 클라이언트는 하나 이상의 업데이트들을 수신한다. 대화들의 목록을 업데이트하기 위해, 클라이언트 디바이스(102)는 대화들의 목록에서의 각 대화에 대한 별개의 업데이트 요청을 발생시키고 송신할 필요가 없다.
일부 실시예들에서, 요청은 클라이언트 상에서 대화들의 목록에서의 개개의 대화들에 대응하며 각 개개의 대화 식별자에 대한 대화들 식별자들의 목록, 개개의 대화 식별자에 대응하는 개개의 대화의 대화 메트릭, 개개의 대화 식별자에 대응하는 개개의 대화에서의 제 1 메시지에 대응하는 제 1 메시지 식별자, 및 개개의 대화 식별자에 대응하는 개개의 대화에서의 최종 메시지에 대응하는 최종 메시지 식별자를 포함한다(1106). 일부 실시예들에서, 대화 메트릭은 대화에서의 메시지 식별자들의 체크섬이다(1108). 일부 실시예들에서, 요청은 사전정의된 크기이며 요청은 클라이언트 상에 저장된 대화들에 대응하는 대화 식별자들의 목록을 포함한다(1110). 일부 실시예들에서, 사전정의된 크기의 단일 요청은 클라이언트 디바이스 상의 대화들의 서브세트에 대한 요청 정보를 포함하는데만 충분히 클 수 있다. 그와 같은 경우에, 사용자가 가장 관심있는 대화들에 대한 요청 정보가 요청에 포함된다. 일부 실시예들에서, 클라이언트 상에 저장된 대화들의 서브세트에 대응하는 대화 식별자들의 목록은 클라이언트 상에 저장된 사전정의된 기준들(예를 들어, 사전정의된 기준들(337))에 따라 결정된다. 일부 실시예들에서, 사전정의된 기준들은 비판독 메시지들, 가장 최근에 수신된 메시지들을 갖는 대화들, 대화 헤더들의 목록과 관련된 대화들 중에서 가장 활성적인 것으로 결정된 대화들, 클라이언트 디바이스의 사용자와 동일한 도메인에서 송신자들로부터의 메시지들을 포함하는 대화들, 및 사용자의 주소 북에 정렬된 컨택트들로부터의 메시지들을 포함하는 대화들을 포함한다.
일부 실시예들에서, 복수의 업데이트들이 서버(106)로부터 수신된다(1112). 복수의 업데이트들은 대화들의 목록에서의 개개의 대화들에 대응하는 메시지들을 포함한다(1112). 일부 실시예들에서, 업데이트들은 새로운 대화들을 포함한다(1114). 일부 실시예들에서, 하나 이상의 업데이트들이 클라이언트 디바이스(102) 상에 데이터(338)로서 저장된다. 일부 실시예들에서, 새로운 대화들을 갖는 대화들의 목록이 디스플레이된다(1116). 일부 실시예들에서, 대화 헤더들의 목록이 디스플레이되며 비주얼 표시자가 하나 이상의 새로운 메시지들을 갖는 대화에 대응하는 각 대화 헤더로 디스플레이된다. 새로운 메시지들의 존재를 표시하기 위해, 헤더가 볼드체, 이태리체일 수 있으며 하나 이상의 아이콘들을 도시할 수 있다. 예를 들어, 도 7a에서 도시된 바와 같이, 대화를 위한 헤더(703)는 대화에서 새로운 비판독 메시지들이 존재함을 사용자에게 표시하기 위해 볼드체일 수 있다.
도 12a, 12b 및 12c는 대화들의 목록을 위한 업데이트들을 발생시키는 방법(1200)을 도시하는 흐름도들이다. 방법(1200)은 서버(106)에서 수행된다. 클라이언트 디바이스로부터의 대화들의 목록을 업데이트하기 위한 요청이 수신된다(1202). 대화들의 목록에서의 대화들의 일부분은 클라이언트 디바이스 상에 저장된다(1202). 일부 실시예들에서, 요청은 대화들의 목록에서의 개개의 대화들에 대응하는 대화들 식별자들의 목록을 포함한다(1204). 일부 실시예들에서, 대화 식별자들은 서버(106)가 업데이트들을 발생시키는 대화들에 대응한다. 각 개개의 대화 식별자는 개개의 대화 식별자에 대응하는 개개의 대화의 대화 메트릭, 개개의 대화 식별자에 대응하는 개개의 대화에서의 제 1 메시지에 대응하는 제 1 메시지 식별자, 및 개개의 대화 식별자에 대응하는 개개의 대화에서의 최종 메시지에 대응하는 최종 메시지 식별자를 포함한다(1204). 일부 실시예들에서, 대화 메트릭은 대화에서의 메시지 식별자들의 체크섬이다(1206). 체크섬들은 대화의 임의의 부분 또는 심지어 전체 대화일 수 있음이 주목된다.
일부 실시예들에서, 복수의 업데이트들이 요청에 기초하여 발생된다(1208). 업데이트들은 대화들의 목록에서의 개개의 대화들에 대응하는 메시지들을 포함한다(1208). 복수의 업데이트들을 발생시키는 프로세스는 이하에 더 상세하게 설명된다. 일부 실시예들에서, 복수의 업데이트들은 단일 요청을 수신하는데 응답하여 발생된다. 일부 실시예들에서, 복수의 업데이트들은 클라이언트 상에 저장된 대화들의 일부분에서의 메시지들로부터 구별되는 하나 이상의 메시지들을 포함한다. 다른 방식으로 서술되면, 복수의 업데이트들은 클라이언트(102)가 아직 갖지 않는 새로운 메시지들을 포함한다. 일부 실시예들에서, 업데이트들(460)은 업데이트 모듈(116)에 의해 발생된다.
일부 실시예들에서, 대화들의 목록에서의 각 개개의 대화에 대해, 개개의 대화에서의 메시지 식별자들의 체크섬이 발생된다. 발생된 체크섬은 복수의 업데이트들 중 하나에 포함된다(1210). 일부 실시예들에서, 대화들의 목록에서의 각 개개의 대화에 대해, 개개의 대화의 제 1 메시지에 대응하는 업데이트된 제 1 메시지 식별자 및 개개의 대화의 최종 메시지에 대응하는 업데이트된 최종 메시지 식별자가 결정된다(1212). 업데이트된 제 1 메시지 식별자 및 업데이트된 최종 메시지 식별자가 복수의 업데이트들 중 하나에 포함된다(1212). 업데이트된 정보(즉, 업데이트된 대화 체크섬들 및 업데이트된 메시지 식별자들)는 그들 개개의 대화들과 관련되며 클라이언트(102)에 송신된다. 일부 실시예들에서, 업데이트된 정보는 업데이트 모듈(116)에 의해 발생된다. 클라이언트는 업데이트된 정보로 대응하는 대화들을 업데이트하며 장래의 업데이트 요청들에서 업데이트된 정보를 이용한다.
대화들의 목록을 업데이트하는데 필요한 최소량의 정보를 송신하기 위해, 클라이언트에 송신된 업데이트들은 아직 클라이언트 디바이스 상에 있지 않은 새로운 메시지들만을 포함한다. 서버(106)의 업데이트 모듈(116)은 대화의 어느 메시지들이 클라이언트(102) 상에 저장되는지 및 대화에 대해 서버상에 저장된 어느 메시지들이 새로운지를 결정하기 위해 업데이트 요청에서의 정보를 이용한다. 다른 방식으로 서술되면, 업데이트 모듈(116)은 서버(106) 상에 저장된 대응하는 대화들과 클라이언트(102) 상에 저장된 대화들을 동기화하기 위해 업데이트 요청(440)에서의 정보를 이용한다. 상기에 논의된 바와 같이, 데이터의 2개의 피스들이 동일한지 여부를 결정하기 위해 체크섬들이 이용될 수 있다. 서버상에 저장된 대화의 메시지들의 서브세트들의 체크섬들과 클라이언트로부터의 요청에 수신된 체크섬을 비교함으로써, 서버는 클라이언트가 어느 메시지들을 이미 갖는지 및 어느 메시지들이 클라이언트를 업데이트하기 위해 필요한지를 식별할 수 있다.
일부 실시예들에서, 복수의 업데이트들을 발생시키는 것은 개개의 대화에 대해, 요청에서의 제 1 메시지 식별자가 서버상에 저장된 대화에 대한 제 1 메시지 식별자에 대응하는 것으로 결정하는 것을 포함한다(1214). 대화는 요청에서의 대화 식별자에 대응한다(1214). 일부 실시예들에서, 요청에서의 제 1 메시지 식별자가 서버상에 저장된 개개의 대화에 대한 제 1 메시지 식별자에 대응하지 않는 경우에, 전체 대화가 하나 이상의 업데이트들에 포함된다. 따라서, 제 1 메시지 식별자들이 매칭하지 않는 전형적인 경우에서, 전체 대화가 클라이언트에 송신된다. 일부 실시예들에서, 제 1 메시지 식별자가 서버상에 저장된 대화에 대한 제 1 메시지 식별자에 대응하는 경우에, 대화들의 목록에서의 개개의 대화에서의 개개의 메시지에 대해, 제 1 메시지 식별자로부터 개개의 메시지 식별자로의 서버상의 개개의 대화의 메시지들의 체크섬에 대응하는 일시적 체크섬이 결정된다(1214). 일시적 체크섬이 클라이언트로부터 수신된 대화 메트릭과 동일할 때, 그리고 클라이언트로부터 수신된 최종 메시지 식별자가 개개의 메시지 식별자에 대응할 때, 일시적 체크섬을 결정하는데 이용되지 않는 개개의 대화에서의 하나 이상의 메시지들이 식별된다(1214). 식별된 메시지들은 복수의 업데이트들 중 하나에 포함된다(1214). 일부 실시예들에서, 개개의 대화에서의 각 개개의 메시지 식별자에 대해 결정 및 식별이 반복된다(1216). 일부 실시예들에서, 개개의 대화에서의 각 개개의 메시지 식별자에 대해 그리고 대화들의 목록에서의 각 개개의 대화에 대해 결정 및 식별이 반복된다(1218).
상기에 논의된 바와 같이, 도 10a 및 10b는 하나 이상의 업데이트들에 포함하기 위한 각 대화로부터의 메시지들을 선택하는 프로세스를 도시하는 것을 돕는다.
일부 실시예들에서, 복수의 업데이트들이 클라이언트 디바이스에 송신된다(1220). 일부 실시예들에서, 복수의 업데이트들의 각 업데이트는 사전정의된 크기이다(1222). 일부 실시예들에서, 하나 이상의 업데이트들의 사전-정의된 크기가 클라이언트 디바이스 정보(243) 및/또는 전송 이력(244)과 같은 클라이언트 디바이스(102)의 사용자에 대해 저장된 사용자 데이터(240)에 따라 결정된다. 일부 실시예들에서, 복수의 업데이트들의 각 업데이트가 사전정의된 시간 간격으로 송신된다(1224). 일부 실시예들에서, 사전-정의된 시간 간격은 디바이스 정보(243) 및/또는 전송 이력(244)과 같은 클라이언트 디바이스(102)의 개개의 사용자에 대한 사용자 데이터(240)에 따라 결정된다.
본원에 설명된 방법들의 각각은 컴퓨터 판독가능한 저장 매체에 저장되며 하나 이상의 서버들(예를 들어, 서버 시스템(106)) 중 하나 이상의 프로세서들에 의해 실행되는 명령들에 의해 지배될 수 있다. 도 8, 9a, 9b, 9c, 10a, 11a, 11b, 12a, 12b 및 12c에 도시된 동작들의 각각은 컴퓨터 메모리 또는 컴퓨터 판독가능한 저장 매체에 저장된 명령들에 대응할 수 있다.
전술한 설명은, 설명의 목적을 위해, 특정 실시예들을 참조하여 설명되었다. 그러나, 상기의 예시적인 논의들은 개시된 정밀한 형태들로 본 발명을 제한하거나 망라되도록 의도되지 않는다. 상기 교시들의 관점에서 많은 수정들 및 변화들이 가능하다. 본 발명 및 그 실제적 적용들의 원리들을 최적으로 설명하기 위해 실시예들이 선택되고 설명되었으며, 그에 의해 당업자가 고려된 특정 이용에 적합한 것으로 다양한 수정들로 본 발명 및 다양한 실시예들을 최적으로 이용하는 것이 가능해진다.
Claims (22)
- 방법으로서,
메시지 스레드(message thread)들의 리스트를 업데이트하기 위한 요청을 컴퓨팅 디바이스에 의해 송신하는 단계; 및
상기 메시지 스레드들의 리스트 내의 복수의 메시지 스레드들에 대한 복수의 업데이트들을 상기 컴퓨팅 디바이스에서 수신하는 단계
를 포함하고,
상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드는 하나 이상의 메시지들을 포함하고,
상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드의 적어도 일부는 상기 컴퓨팅 디바이스에 저장되고,
상기 요청은 상기 컴퓨팅 디바이스에 저장된 메시지 스레드들의 리스트 내의 개개의 메시지 스레드들에 대응하는 대화 식별자들의 리스트를 포함하고,
상기 대화 식별자들의 리스트 내의 개개의 대화 식별자는 각각:
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드의 대화 메트릭;
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드 내의 첫번째 메시지에 대응하는 첫번째 메시지 식별자; 및
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드 내의 최종 메시지에 대응하는 최종 메시지 식별자
를 포함하고,
상기 복수의 업데이트들은 상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드들에 대응하는 새로운 메시지들을 포함하는,
방법. - 제 1 항에 있어서,
상기 대화 메트릭은 상기 메시지 스레드 내의 메시지 식별자들의 체크섬(checksum)인,
방법. - 제 1 항에 있어서,
상기 요청은 사전정의된 크기를 가지며, 상기 요청은 상기 컴퓨팅 디바이스에 저장된 메시지 스레드들에 대응하는 대화 식별자들의 리스트를 포함하는,
방법. - 제 1 항에 있어서,
상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드는, 대화 식별자, 헤더, 첫번째 메시지 식별자, 최종 메시지 식별자, 대화 메트릭, 및 복수의 메시지들을 포함하고,
상기 복수의 메시지들의 각각의 메시지는 메시지 식별자, 대화 식별자, 헤더 및 내용(content)을 포함하는,
방법. - 제 4 항에 있어서,
상기 대화 메트릭은 상기 개개의 메시지 스레드 내의 메시지 식별자들의 체크섬인,
방법. - 제 1 항에 있어서,
상기 업데이트들은 새로운 메시지 스레드들을 포함하는,
방법. - 제 6 항에 있어서,
상기 새로운 메시지 스레드들을 가지는 메시지 스레드들의 리스트를 상기 컴퓨팅 디바이스에 의해 디스플레이하기 위해 출력하는 단계를 더 포함하는,
방법. - 방법으로서,
제 1 컴퓨팅 디바이스에서, 제 2 컴퓨팅 디바이스로부터, 메시지 스레드들의 리스트를 업데이트하기 위한 요청을 수신하는 단계;
상기 메시지 스레드들의 리스트를 업데이트하기 위한 요청에 기초하여, 상기 메시지 스레드들의 리스트 내의 복수의 메시지 스레드들에 대한 복수의 업데이트들을 상기 제 1 컴퓨팅 디바이스에 의해 생성하는 단계; 및
상기 복수의 업데이트들을 상기 제 1 컴퓨팅 디바이스에 의해 상기 제 2 컴퓨팅 디바이스로 송신하는 단계
를 포함하고,
상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드는 하나 이상의 메시지들을 포함하고,
상기 메시지 스레드들의 리스트 내의 메시지 스레드들의 일부는 상기 제 2 컴퓨팅 디바이스에 저장되고,
상기 요청은 상기 제 2 컴퓨팅 디바이스에 저장된 메시지 스레드들의 리스트 내의 개개의 메시지 스레드들에 대응하는 대화 식별자들의 리스트를 포함하고,
개개의 대화 식별자는 각각:
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드의 대화 메트릭;
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드 내의 첫번째 메시지에 대응하는 첫번째 메시지 식별자; 및
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드 내의 최종 메시지에 대응하는 최종 메시지 식별자
를 포함하고,
상기 복수의 업데이트들은 상기 메시지 스레드들의 리스트 내의 개개의 메시지 스레드들에 대응하는 새로운 메시지들을 포함하는,
방법. - 제 8 항에 있어서,
상기 대화 메트릭은 상기 개개의 메시지 스레드 내의 메시지 식별자들의 체크섬인,
방법. - 제 8 항에 있어서,
상기 메시지 스레드들의 리스트 내의 복수의 메시지 스레드들에 대한 복수의 업데이트들을 생성하는 단계는,
상기 메시지 스레드들의 리스트 내의 개개의 메시지 스레드 각각에 대하여, 상기 개개의 메시지 스레드 내의 메시지 식별자들의 체크섬을 생성하고, 상기 복수의 업데이트들 중 하나에 상기 생성된 체크섬을 포함시키는 단계를 포함하는,
방법. - 제 8 항에 있어서,
상기 메시지 스레드들의 리스트 내의 메시지 스레드들에 대한 복수의 업데이트들을 생성하는 단계는,
상기 메시지 스레드들의 리스트 내의 개개의 메시지 스레드 각각에 대하여:
상기 개개의 메시지 스레드의 첫번째 메시지에 대응하는 업데이트된 첫번째 메시지 식별자 및 상기 개개의 메시지 스레드의 최종 메시지에 대응하는 업데이트된 최종 메시지 식별자를 상기 제 1 컴퓨팅 디바이스에 의해 결정하고, 상기 복수의 업데이트들 중 하나에 상기 업데이트된 첫번째 메시지 식별자 및 상기 업데이트된 최종 메시지 식별자를 포함시키는 단계
를 포함하는,
방법. - 제 8 항에 있어서,
상기 메시지 스레드들의 리스트 내의 메시지 스레드들에 대한 복수의 업데이트들을 생성하는 단계는:
상기 제 2 컴퓨팅 디바이스에 저장된 메시지 스레드 내의 첫번째 메시지에 대응하는 첫번째 메시지 식별자가 상기 요청 내의 대화 식별자에 대응한다는 것을 상기 제 1 컴퓨팅 디바이스에 의해 결정하는 단계;
상기 메시지 스레드들의 리스트 내의 개개의 메시지 스레드 내의 각각의 메시지 식별자에 대하여:
서버 상의 개개의 메시지 스레드 내의 메시지 식별자들의, 첫번째 메시지 식별자로부터 상기 개개의 메시지 식별자까지의 임시의 체크섬을 상기 제 1 컴퓨팅 디바이스에 의해 결정하는 단계;
상기 임시의 체크섬이 클라이언트로부터 수신된 대화 메트릭과 동일하고, 상기 클라이언트로부터 수신된 최종 메시지 식별자가 상기 개개의 메시지 식별자에 대응한다는 것을 상기 제 1 컴퓨팅 디바이스에서 결정하는 것에 응답하여, 상기 임시의 체크섬을 결정하는 데에 사용되지 않은 해당 메시지 식별자들을 가지는, 상기 개개의 메시지 스레드 내의 하나 이상의 메시지들을 상기 제 1 컴퓨팅 디바이스에 의해 식별하는 단계; 및
상기 식별된 메시지들을 상기 복수의 업데이트들 중 하나에 포함시키는 단계
를 포함하는,
방법. - 제 12 항에 있어서,
상기 결정하는 단계 및 상기 식별하는 단계는, 상기 개개의 메시지 스레드 내의 개개의 메시지 식별자 각각에 대하여 반복되는,
방법. - 제 13 항에 있어서,
상기 결정하는 단계 및 상기 식별하는 단계는,
상기 메시지 스레드들의 리스트 내의 개개의 메시지 스레드 각각에 대하여, 그리고 개개의 메시지 스레드 내의 개개의 메시지 식별자 각각에 대하여 반복되는,
방법. - 제 8 항에 있어서,
상기 복수의 업데이트들의 각각의 업데이트는 사전정의된 크기를 가지는,
방법. - 제 8 항에 있어서,
상기 복수의 업데이트들의 각각의 업데이트는 사전정의된 시간 간격으로 송신되는,
방법. - 명령들을 저장하고 있는 컴퓨터 판독가능 저장 매체로서,
상기 명령들은 컴퓨팅 디바이스의 적어도 하나의 프로세서에 의해 실행될 때, 상기 컴퓨팅 디바이스로 하여금,
메시지 스레드들의 리스트를 업데이트하기 위한 요청을 송신하는 단계; 및
상기 메시지 스레드들의 리스트 내의 복수의 메시지 스레드들에 대한 복수의 업데이트들을 수신하는 단계
를 포함하는 방법을 실행하게 하고,
상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드는 하나 이상의 메시지들을 포함하고,
상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드의 적어도 일부는 상기 컴퓨팅 디바이스에 저장되고,
상기 요청은 상기 컴퓨팅 디바이스에 저장된 메시지 스레드들의 리스트 내의 개개의 메시지 스레드들에 대응하는 대화 식별자들의 리스트를 포함하고,
상기 대화 식별자들의 리스트 내의 개개의 대화 식별자는 각각,
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드의 대화 메트릭;
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드 내의 첫번째 메시지에 대응하는 첫번째 메시지 식별자; 및
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드 내의 최종 메시지에 대응하는 최종 메시지 식별자
를 포함하고,
상기 복수의 업데이트들은 상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드들에 대응하는 새로운 메시지들을 포함하는,
컴퓨터 판독가능 저장 매체. - 적어도 하나의 프로세서 및 상기 적어도 하나의 프로세서와 통신하는 적어도 하나의 메모리를 포함하는 시스템으로서,
상기 적어도 하나의 메모리는 명령들 및 데이터를 저장하도록 구성되고,
상기 명령들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금:
메시지 스레드들의 리스트를 업데이트하기 위한 요청을 송신하고,
상기 메시지 스레드들의 리스트 내의 복수의 메시지 스레드들에 대한 복수의 업데이트들을 수신하게 하고,
상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드는 하나 이상의 메시지들을 포함하고,
상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드의 적어도 일부는 상기 적어도 하나의 메모리에 저장되고,
상기 요청은 상기 적어도 하나의 메모리에 저장된 메시지 스레드들의 리스트 내의 개개의 메시지 스레드들에 대응하는 대화 식별자들의 리스트를 포함하고,
상기 대화 식별자들의 리스트 내의 개개의 대화 식별자는 각각,
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드의 대화 메트릭;
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드 내의 첫번째 메시지에 대응하는 첫번째 메시지 식별자; 및
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드 내의 최종 메시지에 대응하는 최종 메시지 식별자
를 포함하고,
상기 복수의 업데이트들은 상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드들에 대응하는 새로운 메시지들을 포함하는,
시스템. - 명령들을 포함하는 컴퓨터 판독가능 저장 매체로서,
상기 명령들은 제 1 컴퓨팅 디바이스의 적어도 하나의 프로세서에 의해 실행될 때, 상기 제 1 컴퓨팅 디바이스로 하여금,
상기 제 1 컴퓨팅 디바이스에서, 제 2 컴퓨팅 디바이스로부터, 메시지 스레드들의 리스트를 업데이트하기 위한 요청을 수신하는 단계;
상기 메시지 스레드들의 리스트를 업데이트하기 위한 요청에 기초하여, 상기 메시지 스레드들의 리스트 내의 복수의 메시지 스레드들에 대한 복수의 업데이트들을 상기 제 1 컴퓨팅 디바이스에 의해 생성하는 단계; 및
상기 복수의 업데이트들을 상기 제 1 컴퓨팅 디바이스에 의해 상기 제 2 컴퓨팅 디바이스로 송신하는 단계
를 포함하는 방법을 수행하게 하고,
상기 메시지 스레드들의 리스트 내의 각각의 메시지 스레드는 복수의 메시지들을 포함하고,
상기 메시지 스레드들의 리스트 내의 메시지 스레드들의 일부는 상기 제 2 컴퓨팅 디바이스에 저장되고,
상기 요청은 상기 제 2 컴퓨팅 디바이스에 저장된 메시지 스레드들의 리스트 내의 개개의 메시지 스레드들에 대응하는 대화 식별자들의 리스트를 포함하고,
상기 대화 식별자들의 리스트 내의 개개의 대화 식별자는 각각:
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드의 대화 메트릭;
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드 내의 첫번째 메시지에 대응하는 첫번째 메시지 식별자; 및
상기 개개의 대화 식별자에 대응하는 개개의 메시지 스레드 내의 최종 메시지에 대응하는 최종 메시지 식별자
를 포함하고,
상기 복수의 업데이트들은 상기 메시지 스레드들의 리스트 내의 개개의 메시지 스레드들에 대응하는 새로운 메시지들을 포함하는,
컴퓨터 판독가능 저장 매체. - 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/946,622 | 2010-11-15 | ||
US12/946,622 US8868644B2 (en) | 2010-11-15 | 2010-11-15 | Mechanism for message prefetching in an intermittently connected offline-capable mobile web application |
PCT/US2011/060660 WO2012068029A2 (en) | 2010-11-15 | 2011-11-14 | A mechanism for message prefetching in an intermittently connected offline-capable mobile web application |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140016248A KR20140016248A (ko) | 2014-02-07 |
KR101604606B1 true KR101604606B1 (ko) | 2016-03-21 |
Family
ID=46048795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137015644A KR101604606B1 (ko) | 2010-11-15 | 2011-11-14 | 간헐적으로 접속되는 오프라인-가능한 모바일 웹 애플리케이션에서의 메시지 프리페칭을 위한 메커니즘 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8868644B2 (ko) |
EP (1) | EP2641364A4 (ko) |
KR (1) | KR101604606B1 (ko) |
WO (1) | WO2012068029A2 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9294307B2 (en) * | 2011-10-07 | 2016-03-22 | Microsoft Technology Licensing, Llc | Synchronization of conversation data |
JP6021487B2 (ja) * | 2012-07-18 | 2016-11-09 | キヤノン株式会社 | 情報処理システム、制御方法、サーバ、情報処理装置およびコンピュータプログラム |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090119678A1 (en) | 2007-11-02 | 2009-05-07 | Jimmy Shih | Systems and methods for supporting downloadable applications on a portable client device |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7216043B2 (en) | 1997-02-12 | 2007-05-08 | Power Measurement Ltd. | Push communications architecture for intelligent electronic devices |
US6263360B1 (en) * | 1998-06-01 | 2001-07-17 | Sri International | System uses filter tree and feed handler for updating objects in a client from a server object list |
US7505974B2 (en) | 1999-02-12 | 2009-03-17 | Gropper Robert L | Auto update utility for digital address books |
US6405337B1 (en) | 1999-06-21 | 2002-06-11 | Ericsson Inc. | Systems, methods and computer program products for adjusting a timeout for message retransmission based on measured round-trip communications delays |
US20030163537A1 (en) * | 2001-11-27 | 2003-08-28 | International Business Machines Corporation | Method and apparatus for handling conversation threads and message groupings as a single entity |
US6946715B2 (en) * | 2003-02-19 | 2005-09-20 | Micron Technology, Inc. | CMOS image sensor and method of fabrication |
US7379971B2 (en) | 2002-11-19 | 2008-05-27 | Microsoft Corporation | Time-to-disconnect enforcement when communicating with wireless devices that have transient network addresses |
US7835504B1 (en) * | 2003-03-16 | 2010-11-16 | Palm, Inc. | Telephone number parsing and linking |
US7945860B2 (en) * | 2003-05-14 | 2011-05-17 | Hewlett-Packard Development Company, L.P. | Systems and methods for managing conversations between information technology resources |
US7912904B2 (en) * | 2004-03-31 | 2011-03-22 | Google Inc. | Email system with conversation-centric user interface |
US7395315B2 (en) | 2004-05-20 | 2008-07-01 | International Business Machines Corporation | System and method for allowing a user to ensure actions taken on a document are applied to the most recent electronic correspondence |
US20060069734A1 (en) * | 2004-09-01 | 2006-03-30 | Michael Gersh | Method and system for organizing and displaying message threads |
US8150926B2 (en) * | 2004-09-09 | 2012-04-03 | Microsoft Corporation | Organizing electronic mail messages into conversations |
US7826406B2 (en) * | 2005-04-25 | 2010-11-02 | Research In Motion Limited | Storing, sending and receiving text message threads on a wireless communication device |
US7594003B2 (en) | 2005-08-02 | 2009-09-22 | Aol Llc | Client/server web application architectures for offline usage, data structures, and related methods |
US20070106729A1 (en) * | 2005-11-04 | 2007-05-10 | Research In Motion Limited | Method and system for updating message threads |
US7921176B2 (en) * | 2007-01-03 | 2011-04-05 | Madnani Rajkumar R | Mechanism for generating a composite email |
US9009292B2 (en) | 2007-07-30 | 2015-04-14 | Sybase, Inc. | Context-based data pre-fetching and notification for mobile applications |
US8023934B2 (en) | 2008-03-28 | 2011-09-20 | Ianywhere Solutions, Inc. | Synchronizing communications and data between mobile devices and servers |
US8489690B2 (en) * | 2008-08-28 | 2013-07-16 | International Business Machines Corporation | Providing cellular telephone subscription for e-mail threads |
US8166146B2 (en) * | 2008-09-29 | 2012-04-24 | International Business Machines Corporation | Providing improved message handling performance in computer systems utilizing shared network devices |
US20100088377A1 (en) * | 2008-10-06 | 2010-04-08 | Johnson Sandra K | System and method for email thread management |
US8725793B2 (en) | 2009-04-03 | 2014-05-13 | Google Inc. | Architectural pattern for persistent web application design |
US20110295958A1 (en) * | 2010-05-26 | 2011-12-01 | Research In Motion Limited | Email system providing conversation update features and related methods |
US20120124142A1 (en) | 2010-11-15 | 2012-05-17 | Robert Kroeger | Light-Weight Method for Delivering the Smallest Set of New Messages to a Conversation Cache on an Intermittently Connected Mobile Email Client |
-
2010
- 2010-11-15 US US12/946,622 patent/US8868644B2/en active Active
-
2011
- 2011-11-14 WO PCT/US2011/060660 patent/WO2012068029A2/en active Application Filing
- 2011-11-14 EP EP11841223.8A patent/EP2641364A4/en not_active Withdrawn
- 2011-11-14 KR KR1020137015644A patent/KR101604606B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090119678A1 (en) | 2007-11-02 | 2009-05-07 | Jimmy Shih | Systems and methods for supporting downloadable applications on a portable client device |
Also Published As
Publication number | Publication date |
---|---|
US20120124141A1 (en) | 2012-05-17 |
EP2641364A4 (en) | 2014-07-30 |
WO2012068029A3 (en) | 2012-07-19 |
KR20140016248A (ko) | 2014-02-07 |
EP2641364A2 (en) | 2013-09-25 |
WO2012068029A2 (en) | 2012-05-24 |
US8868644B2 (en) | 2014-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101636422B1 (ko) | 간헐적으로 접속된 이동 이메일 클라이언트 상의 대화 캐시에 새로운 메시지들의 최소 세트를 전달하기 위한 경량-가중치 방법 | |
US11416676B2 (en) | Using text messages to interact with spreadsheets | |
US9426102B1 (en) | Efficient conversation transmission to mobile clients | |
US9086914B2 (en) | System and method for reducing startup cost of a software application | |
JP5420087B2 (ja) | ユニバーサルリソースロケータを含むメッセージを提供するための方法およびシステム | |
EP2400405A1 (en) | Partial item change tracking and synchronization | |
EP1969785A2 (en) | Message history display system and method | |
US9246859B2 (en) | Peer-to-peer collaboration of publishers in a publish-subscription environment | |
EP3268910A1 (en) | Distribution of endorsement indications in communication environments | |
KR20110050590A (ko) | 컴퓨터 네트워크에서 이용자 디바이스들 사이의 리소스 공유를 위한 방법 및 장치 | |
US20200210463A1 (en) | Enhance a mail application to format a long email conversation for easy consumption | |
KR101604606B1 (ko) | 간헐적으로 접속되는 오프라인-가능한 모바일 웹 애플리케이션에서의 메시지 프리페칭을 위한 메커니즘 | |
US8666954B2 (en) | Reduced bandwidth cache coherency via checksum exchange | |
WO2021059113A1 (en) | Cachability of single page applications | |
CA2717525C (en) | Method and apparatus for uniform presentation of documents on a mobile communication device | |
US11507542B2 (en) | Synchronization control of file folders in computing systems | |
KR102632940B1 (ko) | 비동기식 이벤트-기반 분산 메시징 서비스 | |
JP2014134877A (ja) | 情報処理装置およびキュー記憶方法 | |
US11121998B2 (en) | Graphical user interface for email file content | |
CN114579528A (zh) | 基于预缓存的文件快速查阅管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
FPAY | Annual fee payment |
Payment date: 20200228 Year of fee payment: 5 |