KR101604561B1 - 프록시 기반 푸시 서비스 - Google Patents

프록시 기반 푸시 서비스 Download PDF

Info

Publication number
KR101604561B1
KR101604561B1 KR1020147023128A KR20147023128A KR101604561B1 KR 101604561 B1 KR101604561 B1 KR 101604561B1 KR 1020147023128 A KR1020147023128 A KR 1020147023128A KR 20147023128 A KR20147023128 A KR 20147023128A KR 101604561 B1 KR101604561 B1 KR 101604561B1
Authority
KR
South Korea
Prior art keywords
notification
notification service
proxy
connection
mobile device
Prior art date
Application number
KR1020147023128A
Other languages
English (en)
Other versions
KR20140114054A (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 KR20140114054A publication Critical patent/KR20140114054A/ko
Application granted granted Critical
Publication of KR101604561B1 publication Critical patent/KR101604561B1/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/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephone Function (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

모바일 클라이언트와 통지 서버 사이의 통지 서비스 접속을 프록싱하는 방법 및 장치. 본 발명의 일 실시예에서, 프록시는 모바일 클라이언트로부터 통지 서비스를 위한 프록시 셋업 요청을 수신한다. 프록시는 또한 모바일 클라이언트에 대해 통지 서버와의 통지 접속을 확립하고, 모바일 클라이언트의 애플리케이션 프로세서를 웨이킹함이 없이 통지 접속을 유지한다. 프록시는 통지 서비스로부터 통지를 수신하고 이 통지를 모바일 클라이언트로 포워딩한다.

Description

프록시 기반 푸시 서비스{PROXY-BASED PUSH SERVICE}
본 발명의 실시예는 모바일 디바이스 처리의 분야에 관한 것이며; 보다 구체적으로는, 프록시를 이용하여 모바일 디바이스의 통지 서비스 접속을 관리하는 것에 관한 것이다.
모바일 디바이스(예컨대, 랩톱, 팜톱, 휴대용 미디어 플레이어, 스마트폰, 멀티미디어 모바일 폰, "게임보이(Gameboy)"와 같은 모바일 게이밍 시스템 등)의 사용자는 하나 이상의 통지 서비스에 가입할 수 있다. 예를 들어, 사용자는 닷맥(.Mac), 마이크로소프트 익스체인지 액티브싱크(Microsoft Exchange ActiveSync), 푸시-IMAP(push-IMAP), 야후! 푸시(Yahoo! Push) 등과 같은 하나 이상의 "푸시(push)" 이메일 서비스에 가입할 수 있다. 푸시 이메일 서비스의 경우, 예를 들어, 이메일 서버는 사용자가 아이템을 요청함이 없이 이메일 메시지 및/또는 캘린더 업데이트를 사용자를 위한 모바일 디바이스 상의 이메일 클라이언트로 자동적으로 송신할 수 있다. 다시 말해, 사용자는 이메일 서버에 이메일 메시지 또는 관심 대상의 다른 아이템을 요청(폴링(polling))하지 않는다. 따라서, 푸시 통지 서비스는 지속적인 통지 서비스이다. 또한, 다른 유형의 서비스가 유사한 푸시 아키텍처(예컨대, 업데이트/업그레이드 서비스, 뉴스 서비스, 웹로그 서비스, 팟캐스트(podcast) 서비스 등)를 이용할 수 있다. 푸시 통지 서비스를 유지하기 위해, 모바일 디바이스는 (예컨대, 핑(ping) 메시지를 푸시 서버로 송신함으로써) 푸시 통지 서비스에의 접속을 주기적으로 리프레시한다.
또한, 사용자는 "풀(pull)" 이메일 서비스(예컨대, IMAP, POP3)와 같은 하나 이상의 "풀" 서비스에 가입할 수 있다. 풀 이메일 서비스에서, 사용자는 새로운 이메일 메시지가 있는지를 알아내기 위해 이메일 서버를 주기적으로 체크(폴링)한다. 새로운 이메일 메시지가 있다면, 이것은 클라이언트로 다운로드된다. 많은 이메일 클라이언트가 폴 간격(poll interval)의 자동적 구성을 지원한다. 예를 들어, 모바일 디바이스의 사용자는 POP3 이메일 계정에 대해 10분의 폴 간격을 구성할 수 있다(이에 따라, 이메일 클라이언트는 새로운 이메일 메시지를 체크하기 위해 매 10분마다 이메일 서버를 자동적으로 폴링한다). 또한, 통지 서비스는 네트워크 와이드(network wide)(예컨대, 인터넷 와이드(Internet wide)) 이벤트 통지 메시지를 다수의 가입자에게 제공하도록 구성될 수 있으며, 여기서 통지 서비스는 한 명 이상의 가입자 및/또는 퍼블리셔(publisher)에 의해 자동적으로 발견될 수 있는데, 이는 2008년 3월 4일자로 출원되고 발명의 명칭이 "자동 통지 시스템 및 프로세스(Automatic Notification System and Process)"인 미국 특허 출원 제12/042,307호에 기술되어 있으며, 이 미국 특허 출원은 이에 의해 전체적으로 참고로 포함된다.
모바일 디바이스는 네트워크(예컨대, 일반 패킷 무선 서비스(Generic Packet Radio Service: GPRS) 네트워크와 같은 셀룰러 네트워크, 및/또는 근거리 통신망(Local Area Network: LAN))를 통해 데이터 서비스를 모바일 디바이스(예컨대, 인터넷으로부터의 인터넷 프로토콜 트래픽)에 제공하는 하나 이상의 네트워크 요소와 데이터 콘텍스트(예컨대, 패킷 데이터 프로토콜(Packet Data Protocol: PDP) 콘텍스트)를 확립한다. 데이터 콘텍스트는 모바일 디바이스와 네트워크 요소 사이의 논리적 관계(logical association)이며, 라우팅(예컨대, IP 어드레스 정보), 서비스 품질(Quality of Service: QoS), 빌링(billing), 인증 등에 관한 정보를 포함한다. 데이터 콘텍스트를 유지하는 것은 네트워크 요소의 네트워크 리소스를 소비하기 때문에, 모바일 디바이스가 데이터 콘텍스트를 적극적으로 사용하고 있지 않다면 하나 이상의 서버는 모바일 디바이스와 연관된 데이터 콘텍스트를 해체(teardown)할 수 있다. 예를 들어, 모바일 디바이스가 턴 오프되면(그에 따라, 데이터 콘텍스트를 사용하고 있지 않고 네트워크 요소와 접촉하고 있지 않다면), 네트워크 요소는 모바일 디바이스로부터 정보를 수신하지 않은 얼마간의 시간 후에 데이터 콘텍스트를 해체할 수 있다. 모바일 디바이스는 데이터 콘텍스트 접속을 유지하기 위해 데이터 콘텍스트를 주기적으로 리프레시할 수 있다.
배터리 수명을 보전하기 위해, 모바일 디바이스는, 정전력 공급장치(constant power supply)에 접속되지 않고 적극적으로 사용되고 있지 않을 때(예컨대, 아이들 상태) 절전 모드(reduced power mode)에 진입할 수 있다. 이것은 전형적으로 "슬립(sleep)" 모드로 지칭된다. 특정 모바일 디바이스들의 슬립 모드는 모바일 디바이스의 특성에 따라 상이할 수 있다. 예를 들어, 모바일 디바이스가 네트워크 액세스(예컨대, 셀룰러 액세스, WiFi 액세스 등)를 갖는 경우, 슬립 모드는 메인 프로세서를 일시적으로 슬립 상태에 두고 디스플레이를 턴 오프시키면서도, 네트워크 스택을 동작가능한 기능으로 유지시키는 것을 포함할 수 있다. 따라서, 슬립 모드에 있는 동안, 예시적인 모바일 디바이스는 전화 호출(phone call) 및/또는 통지 서비스로부터의 관심 대상의 아이템(예컨대, 푸시 이메일 서비스로부터의 및/또는 풀 이메일 서비스로부터의 이메일 메시지)을 계속해서 수신할 수 있다. 일단 수신되면, 모바일 디바이스는 그 전화 호출 및/또는 통지를 처리하기 위해 웨이킹될 수 있다. 예를 들어, 모바일 디바이스는 슬립 모드에 있는 동안 전화 호출을 수신한 후에 웨이킹하여, 사용자가 그 전화 호출에 응답할 수 있다. 부가적으로, 전형적인 모바일 디바이스는 전형적으로 슬립 모드에 있는 동안 데이터 콘텍스트를 리프레시할 수 없다(이에 따라, 모바일 디바이스는 전형적으로 데이터 콘텍스트를 리프레시하기 위해 웨이킹하여 있을 필요가 있다).
모바일 클라이언트와 통지 서버 사이의 통지 서비스 접속을 프록싱(proxying)하는 방법 및 장치. 본 발명의 일 실시예에서, 프록시는 모바일 클라이언트로부터 통지 서비스를 위한 프록시 셋업 요청을 수신한다. 프록시는 또한 모바일 클라이언트에 대해 통지 서버와의 통지 접속을 확립하고, 모바일 클라이언트의 애플리케이션 프로세서를 웨이킹(waking)함이 없이 통지 접속을 유지한다. 프록시는 통지 서비스로부터 통지를 수신하고 이 통지를 모바일 클라이언트로 포워딩한다.
본 발명의 다른 실시예에서, 시스템은 모바일 클라이언트, 통지 서버, 및 푸시 프록시를 포함한다. 모바일 클라이언트는 통지 서버를 통해 통지 서비스로부터 통지를 수신하고, 푸시 프록시는 모바일 클라이언트에 대해 통지 요청을 프록싱한다. 푸시 프록시는 모바일 클라이언트로부터 통지 서비스를 위한 프록시 셋업 요청을 수신한다. 푸시 프록시는 또한 모바일 클라이언트에 대해 통지 서버와의 통지 접속을 확립하고, 모바일 클라이언트의 애플리케이션 프로세서를 웨이킹함이 없이 통지 서버와의 통지 접속을 유지한다. 또한, 푸시 프록시는 통지 서비스로부터 통지를 수신하고 이 통지를 모바일 클라이언트로 포워딩한다.
본 발명의 추가 실시예에서, 디바이스는 제1 운영 체제에서 실행되고 커맨드 기능을 수행하는 애플리케이션 프로세서, 및 제2 운영 체제에서 실행되고 통신 기능을 수행하는 네트워크 접속성 요소(network connectivity element)를 포함한다. 네트워크 접속성 요소는 푸시 프록시를 포함하며, 여기서 푸시 프록시는 애플리케이션 프로세서로부터 통지 서비스를 위한 프록시 셋업 요청을 수신하도록 구성된다. 푸시 프록시는 디바이스에 대해 통지 서버와의 통지 접속을 확립하고 애플리케이션 프로세서를 웨이킹함이 없이 통지 서버와의 통지 접속을 유지하도록 추가로 구성된다. 또한, 푸시 프록시는 통지 서비스로부터 통지를 수신하고 이 통지를 애플리케이션 프로세서로 포워딩하도록 구성된다.
본 발명은 본 발명의 실시예를 예시하는 데 사용되는 첨부 도면 및 하기의 설명을 참조함으로써 가장 잘 이해될 수 있다.
<도 1>
도 1은 본 발명의 일 실시예에 따른 예시적인 컴퓨팅 환경을 도시한 도면.
<도 2>
도 2는 본 발명의 일 실시예에 따른, 모바일 디바이스가 통지 서비스 접속을 확립하고 통지 서비스 접속 메시지 송신 간격을 스케줄링하는 것에 대한 예시적인 흐름을 도시한 도면.
<도 3a>
도 3a는 본 발명의 일 실시예에 따른 통지 서비스 접속을 관리하는 예시적인 모바일 디바이스의 프레임워크(framework)를 도시한 블록 다이어그램.
<도 3b>
도 3b는 본 발명의 일 실시예에 따른 도 3a의 통지 서비스 접속 관리자의 분해도를 도시한 블록 다이어그램.
<도 4>
도 4는 본 발명의 일 실시예에 따른 통지 서비스 접속의 관리를 도시한 흐름도.
<도 5>
도 5는 본 발명의 일 실시예에 따른, 모바일 디바이스가 중첩되는 통지 서비스 접속 메시지 송신 윈도우들에 기초하여 통지 서비스 접속 메시지의 송신을 동기화하는 것을 도시한 예시적인 그래프.
<도 6>
도 6은 본 발명의 일 실시예에 따른 통지 서비스 접속 메시지 간격의 최적화를 도시한 예시적인 상태도.
<도 7>
도 7은 본 발명의 일 실시예에 따른 예시적인 모바일 디바이스를 도시한 블록 다이어그램.
<도 8>
도 8은 본 발명의 일 실시예에 따른 예시적인 모바일 디바이스를 도시한 블록 다이어그램.
<도 9a>
도 9a는 본 발명의 일 실시예에 따른 독립형 프록시를 포함하는 예시적인 컴퓨팅 환경을 도시한 도면.
<도 9b>
도 9b는 본 발명의 일 실시예에 따른, 모바일 클라이언트 내에 포함되는 프록시를 포함하는 예시적인 컴퓨팅 환경을 도시한 도면.
<도 10>
도 10은 본 발명의 일 실시예에 따른, 클라이언트와 서버 사이의 서비스 접속(들)을 프록싱하는 프록시의 블록 다이어그램.
<도 11>
도 11은 본 발명의 일 실시예에 따른, 클라이언트에 대해 프록시에 의해 통지 서비스 접속을 관리하는 것을 도시한 흐름도.
<도 12>
도 12는 본 발명의 일 실시예에 따른, 프록시와 서버 사이의 통지 서비스 접속의 관리를 도시한 흐름도.
<도 13>
도 13은 본 발명의 일 실시예에 따른 클라이언트 상호작용의 관리를 도시한 흐름도.
하기의 설명에서, 많은 구체적 상세사항이 기술된다. 그러나, 본 발명의 실시예들은 이들 구체적 상세사항 없이도 실시될 수 있음이 이해된다. 다른 경우에, 주지된 회로, 구조, 및 기법은 본 설명의 이해를 어렵게 하지 않도록 상세히 나타내지 않았다. 다른 경우에, 제어 구조, 게이트 레벨 회로, 및 전체(full) 소프트웨어 명령어 시퀀스는 본 발명을 불명료하게 하지 않도록 상세히 나타내지 않았다. 당업자는, 포함된 설명을 이용하여, 과도한 실험 없이도 적절한 기능을 구현할 수 있을 것이다.
"하나의 실시예", "일 실시예", "예시적인 실시예" 등에 대한 본 명세서에서의 언급은 기술된 실시예가 특정한 특징, 구조, 또는 특성을 포함할 수 있지만 모든 실시예가 반드시 그 특정한 특징, 구조, 또는 특성을 포함하지는 않을 수 있음을 나타낸다. 더욱이, 그러한 문구는 반드시 동일한 실시예를 언급하는 것은 아니다. 또한, 특정한 특징, 구조, 또는 특성이 일 실시예와 관련하여 기술되는 경우, 명시적으로 기술되든지 또는 그렇지 않든지 간에 그러한 특징, 구조, 또는 특성을 다른 실시예와 관련하여 달성하는 것이 당업자의 지식 내에 있음이 제안된다.
하기의 기술 및 특허청구범위에서, 용어 "연결된" 및 "접속된"이 그들의 파생어와 함께 사용될 수 있다. 이들 용어는 서로에 대한 동의어인 것으로 의도되지 않음이 이해되어야 한다. "연결된"은 서로 직접적인 물리적 또는 전기적 접촉 상태, 서로 협력 또는 상호작용할 수 있거나 그렇지 않을 수 있는 2개 이상의 요소를 나타내는 데 사용된다. "접속된"은 서로 연결된 2개 이상의 요소들 사이의 통신의 확립을 나타내는 데 사용된다.
도면에 도시된 기법은 하나 이상의 전자 디바이스(예컨대, 모바일 디바이스(예컨대, 랩톱, 팜톱, 휴대용 미디어 플레이어, 스마트폰, 멀티미디어 모바일 폰, 모바일 게이밍 시스템 등), 비-모바일 디바이스(예컨대, 데스크톱 컴퓨터, 워크스테이션, 서버 등))에 저장되고 그 상에서 실행되는 코드 및 데이터를 사용하여 구현될 수 있다. 그러한 전자 디바이스들은 기계 판독가능 매체, 예를 들어 기계 저장 매체(예컨대, 자기 디스크; 광 디스크; 랜덤 액세스 메모리; 판독 전용 메모리; 플래시 메모리 디바이스) 및 기계 통신 매체(예컨대, 전기, 광, 음향 또는 다른 형태의 전파 신호 ― 예컨대 반송파, 적외선 신호, 디지털 신호 등)를 사용하여 코드 및 데이터를 저장하고 (내부적으로 그리고 네트워크를 통해 다른 전자 디바이스와) 통신한다. 또한, 그러한 전자 디바이스는 전형적으로 하나 이상의 다른 콤포넌트, 예를 들어 저장 디바이스, 하나 이상의 사용자 입력/출력 디바이스(예컨대, 키보드, 키패드, 터치스크린, 및/또는 디스플레이), 및 하나 이상의 네트워크 접속에 연결되는 하나 이상의 프로세서의 세트를 포함한다. 프로세서의 세트와 다른 콤포넌트의 연결은 전형적으로 하나 이상의 버스(bus) 및 브리지(bridge)(또한 버스 제어기로 지칭됨)를 통한 것이다. 네트워크 트래픽을 전달하는 저장 디바이스 및 신호는 각각 하나 이상의 기계 저장 매체 및 기계 통신 매체를 나타낸다. 따라서, 주어진 전자 디바이스의 저장 디바이스는 전형적으로 그 전자 디바이스의 하나 이상의 프로세서의 세트 상에서의 실행을 위한 코드 및/또는 데이터를 저장한다. 물론, 본 발명의 실시예의 하나 이상의 부분이 소프트웨어, 펌웨어, 및/또는 하드웨어의 여러 조합들을 이용하여 구현될 수 있다.
통지 서비스
모바일 클라이언트를 사용하여 또는 모바일 클라이언트에 대한 프록시에 의해 통지 서비스 접속을 관리하기 위한 방법 및 장치가 기술된다. 본 발명의 일 실시예에서, 모바일 디바이스(예컨대, 랩톱, 팜톱, 휴대용 미디어 플레이어, 스마트폰, 멀티미디어 모바일 폰, "게임보이"와 같은 모바일 게이밍 시스템 등)는 하나 이상의 통지 서비스 클라이언트(예컨대, 푸시 통지 서비스 클라이언트(예컨대, 닷맥, 마이크로소프트 익스체인지, 푸시-IMAP, 야후! 푸시 등과 같은 푸시 이메일 클라이언트, 업데이트/업그레이드 서비스, 뉴스 서비스, 웹로그 서비스, 팟캐스트 서비스 등) 및/또는 풀 통지 서비스 클라이언트(예컨대, POP3, IMAP 등과 같은 풀 이메일 클라이언트))를 포함한다. 각각의 통지 서비스 클라이언트에 대해, 모바일 디바이스는 독립적으로 통지 서비스 접속 메시지 송신 간격을 스케줄링하고 통지 서비스 접속 메시지 송신 타이머를 설정한다. 또한, 통지 서비스 접속 메시지 송신 윈도우는 각각의 통지 서비스 접속 메시지 송신 간격과 관련되고, 통지 서비스 접속 메시지 송신 간격의 값에 기초한다. 통지 서비스 접속 메시지 송신 타이머가 특정 통지 서비스 클라이언트에 대해 만료 시, 모바일 디바이스는 그 통지 서비스에 대한 통지 서비스 접속 메시지를 송신하고, 또한 통지 서비스 접속 메시지 송신 윈도우가 그 만료하는 송신 타이머와 중첩되는 각각의 다른 통지 서비스에 대한 통지 서비스 접속 메시지를 송신한다. 모바일 디바이스는 통지 서비스 접속 메시지의 송신 시에 각각의 통지 서비스에 대한 통지 서비스 접속 메시지 송신 타이머를 리셋한다.
본 발명의 일 실시예에서, 각각의 통지 서비스 접속에 대해, 모바일 디바이스는 통지 서비스 접속 메시지를 송신하기 위해, 모바일 디바이스가 슬립 모드에 있다면, 모바일 디바이스를 웨이킹할 시간을 스케줄링한다. 모바일 디바이스가 소정 시간에 웨이킹하고 있거나 소정 시간에 스케줄링된 웨이크 동안 웨이킹되면, 모바일 디바이스는 통지 서비스 접속 메시지 송신 윈도우가 그 소정 시간과 중첩되는 각각의 통지 서비스에 대한 통지 서비스 접속 메시지를 송신한다. 모바일 디바이스는 통지 서비스 접속 메시지를 송신한 후에 각각의 통지 서비스에 대한 통지 서비스 접속 메시지 송신 타이머를 리셋한다.
도 1은 본 발명의 일 실시예에 따른 예시적인 컴퓨팅 환경(100)을 도시한다. 컴퓨팅 환경(100)은 하나 이상의 네트워크 데이터 액세스 요소(150)와 각각 연결되는 모바일 디바이스(160, 170)를 포함한다. 네트워크 데이터 액세스 요소(들)(150)는 본 발명의 여러 실시예들에서 셀룰러 네트워크(예컨대, GSM(Global System for Mobile Communications), EDGE(Enhanced Data Rates for GSM Evolution), GPRS(General Packet Radio Service), CDMA(Code Division Multiple Access), 시분할(Time Division)-CDMA(TD-CDMA), UMTS(Universal Mobile Telecommunications System), LTE(Long Term Evolution), 또는 다른 셀룰러 네트워크), 근거리 통신망(LAN) 등을 포함한 다양한 유형의 네트워크의 일부일 수 있다. 예를 들어, 네트워크 데이터 액세스 요소(들)(150)가 GSM 네트워크의 일부인 경우, 네트워크 데이터 액세스 요소(들)(150)는 BTS(base transceiver station), BSC(Base Station Controller), MSC(Mobile Switching Center), SGSN(Serving GPRS Support Node) 등 중 하나 이상을 포함할 수 있다. 다른 예로서, 네트워크 데이터 액세스 요소(들)(150)가 LAN의 일부인 경우, 네트워크 데이터 액세스 요소(들)(150)는 하나 이상의 네트워크 스위치, 라우터, 허브, 모뎀 등을 포함할 수 있다.
모바일 디바이스(160)는 애플리케이션 프로세서(162) 및 네트워크 접속성 요소(들)(164)(예컨대, 무선 네트워크 접속성 요소(예컨대, 휴대 전화용 무선 네트워크 접속성 요소, WiFi 네트워크 접속성 요소), 유선 네트워크 접속성 요소(예컨대, 유선 네트워크 인터페이스 제어기(들)(NIC)))를 포함한다. 모바일 디바이스(160)는 데이터 콘텍스트(예컨대, PDP 콘텍스트)를 통해 네트워크 접속성 요소(들)(164)를 거쳐 네트워크 데이터 액세스 요소(들)(150)와 통신한다. 광역 네트워크(WAN)(140)(예컨대, 인터넷)는 네트워크 데이터 액세스 요소(150)와 연결된다. 푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130)는 WAN(140)과 연결된다. 본 발명의 일 실시예에 따르면, 모바일 디바이스(160)의 사용자는 푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130)에 액세스하고 이를 이용한다(푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130)는 사용자에게 관심 대상의 아이템을 제공한다). 예를 들어, 푸시 통지 서비스(110)는 모바일 디바이스(160)의 사용자에게 개인용 푸시 이메일 계정을 제공하는 것일 수 있는 반면, 푸시 통지 서비스(120)는 모바일 디바이스(160)의 사용자에게 워크 푸시 이메일 계정을 제공하는 것일 수 있다. 다른 예로서, 풀 통지 서비스(130)는 모바일 디바이스(160)의 사용자에게 조직적 풀 이메일 계정(예컨대, POP3 이메일 계정, 웹메일 계정 등)을 제공하는 것일 수 있다.
본 발명의 일 실시예에서, 애플리케이션 프로세서(162)는 모바일 디바이스(160)의 중앙 프로세서이다. 예를 들어, 애플리케이션 프로세서(162)는 모바일 디바이스(160)의 운영 체제(들)(운영 체제는 본 발명의 이해를 어렵게 하지 않도록 도 1에 도시되지 않음), 및 모바일 디바이스(160) 상에서 구동하는 임의의 애플리케이션을 처리한다. 입력/출력 디바이스, 메모리(들), 전력 공급장치, 디스플레이 등을 포함한 모바일 디바이스의 다른 주지된 특징부는 본 발명의 이해를 어렵게 하지 않도록 도 1에 도시되지 않는다.
본 발명의 일 실시예에 따르면, 모바일 디바이스(160)는 "슬립 모드"로 공지된 절전 모드에 진입할 수 있다. 예를 들어, 모바일 디바이스(160)가 정전력 공급장치와 연결되어 있지 않으면(예컨대, 전기 콘센트에 플러그인되지 않음), 모바일 디바이스(160)는 디바이스의 배터리 수명을 보전하기 위해 주기적으로 슬립 모드에 진입할 수 있다. 모바일 디바이스(160)는 다수의 상이한 방식 - 일정 기간의 비활동(예컨대, 1분의 비활동) 이후 및/또는 사용자로부터의 커맨드(예컨대, 사용자가 모바일 디바이스(160)에 슬립 모드에 진입하라는 커맨드를 발행할 수 있음)에 의해 직접적으로를 포함함 - 으로 슬립 모드에 진입할 수 있다. 슬립 모드에 진입하는 다른 메커니즘이 본 발명의 범주 내에 있음이 이해될 것이다.
슬립 모드 동안, 본 발명의 일 실시예에 따르면, 모바일 디바이스(160)는 애플리케이션 프로세서(162)를 일시적으로 디스에이블한다(애플리케이션 프로세서(162)는 일시적으로 디스에이블된 때 전력을 사실상 전혀 소비하지 않을 수 있다). 애플리케이션 프로세서(162)가 디스에이블되면, 모바일 디바이스(160)의 운영 체제 및 애플리케이션이 또한 디스에이블됨이 이해되어야 한다. 그러나, 본 발명의 일 실시예에 따르면, 네트워크 접속성 요소(들)(164) 중 적어도 일부는 일시적으로 디스에이블되지 않는다. 다시 말해, 네트워크 접속성 요소(들)(164) 중 적어도 일부는 네트워크 데이터 액세스 요소(150)로부터 정보를 수신하고 전력을 사용하는 것을 계속할 수 있다. 예를 들어, 모바일 디바이스(160)가 전화 호출 및/또는 텍스트 메시지(예컨대, 단문자 서비스(SMS) 메시지)를 수신하는 능력을 갖는다면, 모바일 디바이스(160)는 전화 호출 및/또는 텍스트 메시지를 수신하기 위해 슬립 모드 동안 무선 접속성 요소를 웨이킹 상태로 유지할 수 있다. 모바일 디바이스(160)가 무선 접속성 요소를 디스에이블했다면, 예를 들어, 모바일 디바이스(160)의 사용자는 전화 호출 및/또는 텍스트 메시지를 수신할 수 없을 것이다(예컨대, 전화 호출은 대신에, 지원된다면, 음성 메일로 포워딩될 수 있다). 이들 수신된 전화 호출 및/또는 텍스트 메시지를 처리하기 위해(예를 들어, 사용자가 걸려오는 전화 호출에 응답하기 위해), 모바일 디바이스(160)는 슬립 모드로부터 웨이킹한다(예컨대, 애플리케이션 프로세서(162)를 리인에이블한다)는 것이 이해되어야 한다.
또한, 본 발명의 일 실시예에 따르면, 모바일 디바이스(160)는 슬립 모드 동안 푸시 통지 서비스(110, 120)로부터 관심 대상의 아이템을 수신하는 능력을 포함한다. 예를 들어, 네트워크 접속성 요소(들)(164) 중 적어도 일부는 슬립 모드 동안 푸시 통지 서비스(110, 120)로부터 관심 대상의 아이템(예컨대, 이메일 메시지, 캘린더 업데이트, 날씨 업데이트, 주식 업데이트 등)을 수신하는 능력을 갖는다. 본 발명의 일 실시예에서, 무선 네트워크 접속성 요소는 슬립 모드 동안 푸시 통지 서비스(110, 120)로부터 전송된 관심 대상의 아이템을 수신한다. 따라서, 슬립 모드 동안, 푸시 통지 서비스(110, 120)가 모바일 디바이스(160)의 사용자에게 푸시 이메일 서비스를 제공하면, 모바일 디바이스(160)는 푸시 통지 서비스(110, 120)로부터 이메일 메시지를 수신할 수 있다. 본 발명의 일 실시예에 따르면, 모바일 디바이스(160)는 슬립 모드 동안 수신된 관심 대상의 아이템을 처리하기 위해 슬립 모드로부터 웨이킹한다.
본 발명의 일부 실시예에서 WiFi 네트워크 접속성 요소가 슬립 모드 동안 웨이킹하고 있고 기능하고 있지만(그리고 푸시 통지 서비스(110, 120)로부터 관심 대상의 아이템을 수신할 수 있음), 본 발명의 대안적인 실시예에서 WiFi 네트워크 접속성 요소는 슬립 모드 동안 슬립 상태에 놓인다. 일 실시예에서, 무선 네트워크 접속성 요소는 WiFi 네트워크 접속성 요소보다 더 적은 전력을 사용할 수 있다. 따라서, 이러한 실시예에서, WiFi 네트워크 접속성 요소를 슬립 모드 동안 웨이킹 상태로 유지하는 것은 무선 네트워크 접속성 요소를 웨이킹 상태로 유지하는 것과 비교해 더 많은 양의 전력이 고갈되게 한다. 따라서, 본 발명의 일부 실시예에서, 모바일 디바이스(160)는 Wi-Fi 네트워크 접속성 요소를 통해 슬립 모드 동안 푸시 통지 서비스(110, 120)로부터 관심 대상의 아이템을 수신할 수 있는 반면, 본 발명의 다른 실시예에서 모바일 디바이스(160)는 WiFi 네트워크 접속성 요소를 통해 슬립 모드 동안 관심 대상의 아이템을 수신하지 않는다.
본 발명의 일부 실시예에서, 모바일 디바이스(160)는 푸시 통지 서비스(110, 120)로부터 관심 대상의 아이템을 수신하는 데 네트워크 접속성 요소들의 조합을 사용할 수 있다. 예를 들어, 모바일 디바이스(160)는 무선 네트워크 접속성 요소를 통해(예컨대, 셀룰러 네트워크를 통해) 그리고/또는 WiFi 네트워크 접속성 요소를 통해(예컨대, 홈 LAN에 접속된 때) 데이터 정보를 수신하는 것을 지원할 수 있다. 모바일 디바이스(160)의 사용자는, WiFi 서비스가 이용가능한 경우(예컨대, 홈 LAN 및/또는 워크 LAN에 접속된 동안)에는 WiFi 네트워크 접속성 요소가 사용되고 WiFi 서비스가 이용가능하지 않은 경우에는 무선 네트워크 접속성 요소가 사용되도록 모바일 디바이스(160)를 구성할 수 있다. 따라서, 본 발명의 일 실시예에서, 무선 네트워크 접속성 요소 및/또는 WiFi 네트워크 접속성 요소는 어떤 네트워크 접속성 요소가 데이터 지원을 제공하고 있는지에 따라 푸시 통지 서비스(110, 120)로부터 관심 대상의 아이템을 수신하는 데 사용될 수 있다. 또한, 본 발명의 일 실시예에서, 무선 네트워크 접속성 요소 및/또는 WiFi 네트워크 접속성 요소는 슬립 모드에 진입하기 전에 어떤 네트워크 접속성 요소가 데이터 지원을 제공하고 있었는지에 따라 슬립 모드 동안 푸시 통지 서비스(110, 120)로부터 관심 대상의 아이템을 수신하는 데 사용될 수 있다(예컨대, LAN 내에서 그리고 WiFi 네트워크 접속성 요소가 푸시 통지 서비스(110, 120)로부터 관심 대상의 아이템을 수신하고 있었고 동시에 모바일 디바이스(160)가 웨이킹되어 있었다면, 슬립 모드 동안, WiFi 네트워크 접속성 요소는 관심 대상의 아이템을 수신하기 위해 웨이킹 상태를 유지하고 모바일 디바이스(160)는 무선 네트워크 접속성 요소를 슬립 상태에 있게 한다).
본 발명의 일 실시예에서, WiFi 네트워크 접속성 요소는 슬립 모드에 진입하기 전에 어떤 네트워크 접속성 요소가 데이터 지원을 제공하고 있었는지에 무관하게 무선 네트워크 접속성 요소보다 더 많은 전력을 사용할 수 있으며, 모바일 디바이스(160)는 WiFi 네트워크 접속성 요소를 슬립 상태로 두고(예컨대, WiFi 네트워크 접속성 요소를 일시적으로 디스에이블함), 슬립 모드 동안 푸시 통지 서비스로부터 관심 대상의 아이템을 수신하는 데 무선 네트워크 접속성 요소를 사용한다. 예를 들어, 모바일 디바이스(160)가 LAN(예컨대, 사용자의 홈 LAN)을 통해 푸시 통지 서비스(110, 120)와 접속되고 사용자가 모바일 디바이스(160)를 슬립 모드에 있게 하라는 커맨드를 발행하면, 모바일 디바이스(160)는 (무선 접속성 요소를 통해) 셀룰러 네트워크를 거쳐 푸시 통지 서비스(110, 120)와 접속하는 것으로 자동적으로 전환되고 WiFi 접속성 요소를 슬립 상태에 있게 한다.
지속적인 통지 서비스 접속(예컨대, 푸시 통지 서비스(110, 120))은 본 발명의 일부 실시예에서 접속의 지속성을 유지하기 위해 주기적으로 리프레시된다. 예를 들어, 푸시 통지 서비스(110, 120)는 모바일 디바이스(160)에의 접속을 타임아웃할 수 있다(이에 따라, 사용자를 위한 푸시 통지 서비스를 중지함) - 모바일 디바이스가 그 접속을 적극적으로 사용하지 않는다면 -. 따라서, 본 발명의 일부 실시예에서, 모바일 디바이스(160)는 그의 지속적인 접속을 유지하기 위해 푸시 통지 서비스(110, 120)와 통신하도록 요구된다. 예를 들어, 어떤 주기적 간격으로, 모바일 디바이스(160)는 접속을 리프레시하기 위해 통지 서비스 접속 메시지를 푸시 통지 서비스(110, 120)로 송신한다. 통지 서비스 접속 메시지는 모바일 디바이스(160)가 여전히 접속되어 있음을 (그리고 아마도 푸시 통지 서비스로부터 관심 대상의 아이템을 계속해서 수신하기를 원하고 있음을) 푸시 통지 서비스(110, 120)에 통지한다. 푸시 통지 접속을 리프레시하는 것은 모바일 디바이스가 서비스에 접속된 상태를 유지하기를 원하고 있음을 푸시 통지 서비스의 서버에 통지하는 것임이 이해되어야 한다. 또한, 푸시 통지 접속을 리프레시하는 것은, 접속을 유지할 것을 푸시 통지 서비스의 서버로의 경로를 따라 각각의 네트워크 요소에 통지한다(그렇지 않으면, 예컨대, 네트워크 요소는 그 접속과 관련된 네트워크 리소스를 소거할 수 있다). 통지 서비스 접속 메시지는 핑 메시지 또는 다른 킵 얼라이브 메시지(keep alive message)일 수 있다. 통지 서비스는 접속이 활성 상태임을 모바일 디바이스(160)에 통지하기 위해 통지 서비스 접속 메시지에 응답할 수 있다. 따라서, 모바일 디바이스(160)가 통지 서비스로부터 응답을 수신하지 않으면, 모바일 디바이스(160)는 통지 서비스와의 세션을 재확립하도록 요구될 수 있다. 본 발명의 일부 실시예에서, 통지 서비스로부터의 관심 대상의 아이템 수신이 또한 지속적인 통지 서비스 접속을 리프레시한다는 것이 이해되어야 한다.
통지 서비스 접속 메시지의 송신 간격은 개별 통지 서비스마다 상이할 수 있다. 예를 들어, 푸시 통지 서비스(110)는 30분의 무-통신(no communication)이 존재하는 경우 접속의 타임아웃을 야기할 수 있는 반면, 푸시 통지 서비스(120)는 15분의 무-통신이 존재하는 경우 접속의 타임아웃을 야기할 수 있다. 그러나, 이들 타임아웃 간격은 고정적이지 않으며, 상이한 네트워크 상황에 따라 동적으로 변할 수 있다. 또한, 통지 서비스는 타임아웃 간격이 변경되었음을 모바일 디바이스에 통지하지 않을 수 있다. 따라서, 모바일 디바이스(160)는, (접속을 재확립할 필요 없이) 접속을 유지하려는 시도로, 공지의 타임아웃 간격 내에 통지 서비스 접속 메시지를 송신할 수 있다. 모바일 디바이스(160)는 통지 서비스 접속을 리프레시 및 유지하기 위해 통지 서비스 접속 메시지를 송신하도록 웨이킹하여 있도록 요구됨이 이해될 것이다.
또한, 본 발명의 일부 실시예에서, 모바일 디바이스(160)는 네트워크 데이터 접속성을 유지하기 위해 (예컨대, 캐리어의 네트워크 내의 NAT 라우터, 방화벽, 또는 네트워크 내의 다른 네트워크 요소와 같은) 네트워크 데이터 액세스 요소(들)(150)와의 접속을 주기적으로 리프레시하도록 요구된다. 예를 들어, 데이터 콘텍스트가 네트워크 리소스를 소비하기 때문에, 그것이 적극적으로 사용되고 있지 않고/않거나 소정량의 시간 동안 사용되지 않았다면, 네트워크 데이터 액세스 요소(들)(150)는 데이터 콘텍스트를 해체할 수 있다(예컨대, 데이터 콘텍스트가 제거되고 그 데이터 콘텍스트의 네트워크 리소스가 재할당됨). 데이터 콘텍스트가 해체되면, 모바일 디바이스(160)는 어떠한 통지 서비스와도 접속되지 않음이 이해되어야 한다. 물론, 데이터 콘텍스트가 비활동의 기간 이외의 다른 이유로(예컨대, 모바일 디바이스의 위치가 네트워크의 범위 밖에 있는 경우, 모바일 디바이스(160)가 턴 오프된 경우 등) 해체될 수 있음이 또한 이해되어야 한다. 본 발명의 다른 실시예에서, 데이터 콘텍스트는 모바일 디바이스(160)에 의해 리프레시될 필요가 없다. 전형적으로, 데이터 콘텍스트 타임아웃 간격은 통지 서비스 타임아웃 간격보다 작다. 데이터 콘텍스트가 확립되면, 모바일 디바이스(160)에 의해 통지 서비스로 송신되는 통지 서비스 접속 메시지가 네트워크 데이터 액세스 요소(들)(150)와의 접속을 내재적으로 리프레시한다.
도 2는 본 발명의 일 실시예에 따른, 모바일 디바이스가 통지 서비스 접속을 확립하고 통지 서비스 접속 메시지 송신 간격을 스케줄링하는 것에 대한 예시적인 흐름을 도시한다. 도 2의 동작들은 도 1, 도 3a 및 도 4의 예시적인 실시예를 참조하여 기술될 것이다. 그러나, 도 2의 동작들은 도 1, 도 3a 및 도 4를 참조하여 논의되는 것 이외의 본 발명의 실시예에 의해 수행될 수 있고, 도 1, 도 3a 및 도 4를 참조하여 논의되는 실시예는 도 2를 참조하여 논의되는 것과는 상이한 동작들을 수행할 수 있음이 이해되어야 한다.
블록(210)에서, 모바일 디바이스(160)는 데이터 콘텍스트를 확립한다. 데이터 콘텍스트는 당업계에 공지된 임의의 수의 방법에 의해 확립될 수 있다. 블록(210)으로부터, 흐름은 블록(220)으로 이동하며, 여기서 모바일 디바이스(160)는 하나 이상의 통지 서비스 접속을 확립한다. 예를 들어, 도 1을 참조하면, 모바일 디바이스(160)는 푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130)와의 접속을 확립한다. 본 발명의 일부 실시예에서, 접속들은 각각 전송 제어 프로토콜(TCP) 접속들이다. 흐름은 블록(220)으로부터 블록(230)으로 이동한다.
블록(230)에서, 모바일 디바이스는 통지 서비스 접속 메시지 송신 간격을 스케줄링하며, 통지 서비스 접속들 각각에 대한 디바이스 웨이크 시간을 스케줄링한다. 예를 들어, 모바일 디바이스(160)는 푸시 통지 서비스(110)에 대해서는 30분의 통지 서비스 접속 메시지 송신 간격을, 푸시 통지 서비스(120)에 대해서는 15분의 간격을, 그리고 풀 통지 서비스(130)에 대해서는 25분의 간격을 스케줄링할 수 있다. 또한, 모바일 디바이스(160)는 이들 송신 간격과 일치하는 웨이크 시간을 스케줄링할 수 있다. 흐름은 블록(230)으로부터 블록(240)으로 이동한다.
블록(240)에서, 모바일 디바이스(160)는 슬립 모드에 진입한다. 앞서 기술된 바와 같이, 모바일 디바이스(160)는 다수의 상이한 방식 - 일정 기간의 비활동(예컨대, 30분의 비활동) 이후 및/또는 사용자로부터의 커맨드(예컨대, 사용자가 모바일 디바이스(160)에 슬립 모드에 진입하라는 커맨드를 발행할 수 있음)에 의해 직접적으로를 포함함 - 으로 슬립 모드에 진입할 수 있다. 흐름은 블록(240)으로부터 블록(250)으로 이동한다. 블록(250)에서, 모바일 디바이스의 애플리케이션 프로세서는 슬립 상태에 놓이고, 네트워크 접속성 요소(들)는, 예를 들어 통지 서비스 접속을 유지하기 위해 웨이킹 상태로 유지된다. 흐름은 블록(250)으로부터 블록(260)으로 이동하며, 여기서 애플리케이션 프로세서는 통지 서비스 접속 메시지를 송신하도록 통지 서비스 접속 관리자에 따라 웨이킹된다.
도 3a는 본 발명의 일 실시예에 따른 통지 서비스 접속을 관리하는 예시적인 모바일 디바이스에 의해 사용되는 프레임워크를 도시한다. 예를 들어, 모바일 디바이스(160)는 푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130)에의 접속을 관리하기 위해 도 3a에 도시된 프레임워크를 사용한다. 프레임워크는 하나 이상의 통지 서비스 클라이언트(310)를 포함한다. 예를 들어, 도 1을 참조하면, 총 3개의 통지 서비스 클라이언트(310)(예컨대, 푸시 통지 서비스(110)를 위한 통지 서비스 클라이언트, 푸시 통지 서비스(120)를 위한 통지 서비스 클라이언트, 및 풀 통지 서비스(130)를 위한 통지 서비스 클라이언트)가 존재할 수 있다. 각각의 통지 서비스 클라이언트(310)는 개별적으로 서비스 접속 관리자(320) 및 네트워크 스택(330)과 연결된다. 예를 들어, 본 발명의 일 실시예에서, 각각의 통지 서비스 클라이언트는 독립적인 프로세스이며, 메모리를 다른 통지 서비스 클라이언트와 공유하지 않고/않거나 다른 통지 서비스 클라이언트와 통신하지 않는다. 각각의 통지 서비스 클라이언트는 통지 서비스 접속 관리자(320)에 등록한다(360).
통지 서비스 접속 관리자(320)는 하나 이상의 시스템 레벨 타이머(350), 네트워크 스택(330), 및 웨이크 I/O 서브시스템(340)과 연결된다. 서비스 접속 관리자(320)는, 도면 부호(372)로 나타낸 바와 같이, 시스템 레벨 타이머(들)(350)의 사용으로 통지 서비스 접속 메시지 송신 간격을 스케줄링하고, 이들 타이머를 모니터링한다. 또한, 서비스 접속 관리자(320)는, I/O 서브시스템(340)의 사용으로, 도면 부호(370)로 나타낸 바와 같이, 통지 서비스 접속 메시지 송신 간격과 관련한 모바일 디바이스의 웨이크를 스케줄링하며(예컨대, 웨이크는 통지 서비스 접속 메시지 송신 간격의 끝에 가까운 시간에 스케줄링될 수 있음), 통지 서비스 접속 메시지 송신 윈도우를 통지 서비스 접속 메시지 송신 간격과 관련시킨다. 서비스 접속 관리자(320)는 또한, 도면 부호(368)로 나타낸 바와 같이, 모바일 디바이스의 슬립 모드 동안 네트워크 스택(330)을 얼라이브 상태로 유지한다.
네트워크 스택(330)은 네트워크 접속성 요소(예컨대, 무선 접속성 요소 및/또는 WiFi 접속성 요소)에 대한 지원을 포함한다. 네트워크 스택(330)은 통지 서비스와 (그리고 네트워크 전반에 걸친 다른 엔티티(entity)와) 통신하는 데 사용된다. 네트워크 스택(330)은 도면 부호(366)로 나타낸 바와 같이 네트워크의 상황을 통지 서비스 접속 관리자(320)에게 제공한다. 예를 들어, 통지 서비스 접속 관리자(320)는 네트워크 상태(예컨대, 네트워크 혼잡, 통계자료 등)를 서비스 접속 관리자(320)에 통지한다. 또한, 네트워크 스택(330)은 도면 부호(376)로 나타낸 바와 같이 네트워크 서비스로부터 관심 대상의 아이템(들)을 수신하고 이들을 적절한 통지 서비스 클라이언트(310)로 송신한다. 또한, 네트워크 스택(330)은 통지 서비스들 중 하나로부터의 통신이 수신되었다면(예컨대, 통지 서비스 접속 메시지 송신에 대한 응답이 수신되었다면) 통지 서비스 클라이언트(320)에 통지한다.
본 발명의 일 실시예에 따르면, 통지 서비스 접속에 대한 타이머가 경과한 후, 서비스 접속 관리자(320)는, 도면 부호(364)로 나타낸 바와 같이, 통지 서비스 접속 메시지를 송신하도록 통지 서비스 클라이언트(310)에 명령하고 또한 임의의 재시도 이벤트(예컨대, 재시도 이벤트는 드롭된 통지 서비스 접속의 재확립을 포함할 수 있음)를 통지 서비스 클라이언트(310)에 통지한다. 통지 서비스 클라이언트(310)는, 네트워크 스택(330)의 사용으로, 도면 부호(374)로 나타낸 바와 같이 통지 서비스 접속 메시지를 송신한다. 또한, 통지 서비스 클라이언트(310)는 도면 부호(362)로 나타낸 바와 같이 통지 서비스 접속 메시지 송신 간격을 교정하도록 서비스 접속 관리자(320)에 명령할 수 있다. 통지 서비스 접속 메시지 송신 간격의 교정이 도 6을 참조하여 더 상세히 논의된다.
도 3b는 본 발명의 일 실시예에 따른 도 3a의 통지 서비스 접속 관리자(320)의 분해도를 도시한 블록 다이어그램이다. 통지 서비스 접속 관리자(320)는 통지 서비스 접속 메시지 송신 간격 스케줄러 모듈(322), 통지 서비스 접속 메시지 송신 간격 최적화기 모듈(323), 통지 서비스 접속 메시지 송신 타이머 모니터 모듈(324), 통지 서비스 접속 메시지 웨이크 스케줄러 모듈(325), 통지 서비스 접속 메시지 생성기 모듈(326), 및 슬립 모드 관리자 모듈(327)을 포함한다.
본 발명의 일 실시예에 따르면, 간격 스케줄러 모듈(322)은 통지 서비스 접속 메시지 송신 간격을 스케줄링한다. 또한, 간격 스케줄러 모듈은 통지 서비스 접속 메시지 송신 윈도우를 스케줄링된 통지 서비스 접속 메시지 송신 간격과 관련시킨다. 간격 스케줄러 모듈(322)은 통지 서비스 접속 메시지 송신 타이머 모니터 모듈(324)과 연결된다. 본 발명의 일 실시예에서, 타이머 모니터 모듈은 통지 서비스 접속 메시지 송신 타이머를 포함한 하나 이상의 시스템 레벨 타이머(들)(350)를 모니터링한다. 간격 스케줄러 모듈(322)은 또한 통지 서비스 접속 메시지 웨이크 스케줄러 모듈과 연결된다. 본 발명의 일 실시예에 따르면, 웨이크 스케줄러 모듈(325)은 통지 서비스 접속 메시지 송신 간격에 기초하여 모바일 디바이스의 웨이크를 스케줄링한다.
타이머 모니터 모듈(324)은 통지 서비스 접속 메시지 생성기 모듈(326)과 연결된다. 본 발명의 일 실시예에 따르면, 메시지 생성기 모듈(326)은 통지 서비스 접속 메시지를 발행하도록 통지 서비스 클라이언트(들)(310)에 경고한다. 간격 최적화기 모듈(323)은 간격 스케줄러 모듈(322)과 연결된다. 본 발명의 일 실시예에 따르면, 간격 최적화기 모듈은 통지 서비스 접속 메시지 송신 간격을 최적화하며, 이는 도 6을 참조하여 더 상세히 기술될 것이다. 본 발명의 일 실시예에서, 슬립 모드 관리자(327)는 슬립 모드 동안 네트워크 스택(330)을 웨이킹 상태로 유지한다.
도 4는 본 발명의 일 실시예에 따른 통지 서비스 접속의 관리를 도시한 흐름도이다. 도 4의 동작들은 도 3a 및 도 5의 예시적인 실시예를 참조하여 기술될 것이다. 그러나, 도 4의 동작들은 도 3a 및 도 5를 참조하여 논의되는 것 이외의 본 발명의 실시예에 의해 수행될 수 있고, 도 3a 및 도 5를 참조하여 논의되는 실시예는 도 4를 참조하여 논의되는 것과는 상이한 동작들을 수행할 수 있음이 이해되어야 한다. 도 5는 본 발명의 일 실시예에 따른, 모바일 디바이스가 중첩되는 통지 서비스 접속 메시지 송신 윈도우들에 기초하여 통지 서비스 접속 메시지의 송신을 동기화하는 것을 도시한 예시적인 그래프이다.
본 발명의 일 실시예에 따르면, 모바일 디바이스 상의 각각의 통지 서비스 클라이언트는 도 4의 동작들을 독립적으로 수행한다. 블록(410)에서, 통지 서비스 클라이언트(예컨대, 푸시 통지 서비스 클라이언트 또는 풀 통지 서비스 클라이언트)가 통지 서비스 접속 관리자에 등록한다. 예를 들어, 도 3a 및 도 5를 참조하면, 푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130)(각각 통지 서비스 클라이언트(310))는 각각 독립적으로 통지 서비스 접속 관리자(360)에 등록한다. 블록(410)으로부터, 흐름이 블록(412)으로 이동한다.
블록(412)에서, 모바일 디바이스(160)는 통지 서비스 접속 메시지 송신 간격, 및 각각의 통지 서비스에 대한 서비스 접속 메시지 송신 간격과 관련한 웨이크 시간을 스케줄링한다. 그러나, 본 명세서에서 나중에 기술되는 바와 같이, 특정 통지 서비스 접속에 대한 모바일 디바이스의 실제 웨이크 시간은 다른 통지 서비스들에 따라 상이할 수 있다. 본 발명의 일 실시예에 따르면, 지속적인 통지 서비스(예컨대, 푸시 통지 서비스)에 대한 초기 서비스 접속 메시지 송신 간격은 각각의 지속적인 통지 서비스에 의해 제공되는 통지 서비스 타임아웃 값에 기초한다. 예를 들어, 도 5를 참조하면, 푸시 통지 서비스(110)는 30분의 통지 서비스 타임아웃 값을 포함하며(이에 따라, 푸시 통지 서비스(110)에의 접속이 30분 기간 내에 사용되지 않으면, 푸시 통지 서비스(110)는 그 접속을 제거할 수 있음), 푸시 통지 서비스(120)는 15분의 통지 서비스 타임아웃 값을 포함한다. 본 발명의 이해를 쉽게 하기 위해, 도 5에서, 푸시 통지 서비스(110, 120)에 대한 통지 서비스 접속 메시지 송신 간격은 타임아웃 값과 일치한다. 예를 들어, 통지 서비스 접속 메시지 송신 간격은 푸시 통지 서비스(110)에 대해 30분이고, 푸시 통지 서비스(120)에 대해 15분이다. 그러나, 통지 서비스 접속 메시지 송신 간격은 타임아웃 값과 일치하지 않을 수 있음(예컨대, 간격은 타임아웃 값보다 작을 수 있음)이 이해되어야 한다. 또한 이해되어야 한다.
본 발명의 일부 실시예에서, 통지 서비스 접속 메시지 송신 간격은 최적화될 수 있고 시간 경과에 따라 변할 수 있음 - 이는 도 6을 참조하여 더 상세히 기술될 것임 - 이 또한 이해되어야 한다. 또한, 본 발명의 이해를 쉽게 하기 위해, 각각의 통지 서비스 접속에 대한 디폴트 웨이크 시간이 통지 서비스 접속 메시지 송신 간격의 끝에 스케줄링된다. 또한, 도 5의 논의 전반에 걸쳐서, 통지 서비스 접속 메시지의 송신은 지속적인 통지 서비스(예컨대, 푸시 서비스(110, 120))에 전송된 통지 서비스 접속 메시지와 관련하여 "하트비트(heartbeat)" 또는 간단히 "비트(bead)"로 지칭될 수 있다.
도 4를 다시 참조하면, 모바일 디바이스(160)는 또한 통지 서비스 접속 메시지 송신 윈도를 메시지 송신 간격과 관련시키고, 메시지 송신 간격과 관련된 하나 이상의 시스템 타이머를 설정한다. 본 발명의 일 실시예에 따르면, 통지 서비스 접속 메시지 송신 윈도우는 통지 서비스 접속 메시지가 송신될 수 있는 메시지 송신 간격의 일부이다. 예를 들어, 모바일 디바이스가 윈도우 내의 임의의 시간 동안 웨이킹하여 있다면, 모바일 디바이스는 통지 서비스 접속 메시지를 송신할 수 있다. 도 5에서, 통지 서비스 접속 메시지 송신 윈도우는 통지 서비스 접속 메시지 송신 윈도우의 대략 1/3이다. 예를 들어, 푸시 통지 서비스(110)의 통지 서비스 접속 메시지 송신 윈도우는 비트 메시지의 스케줄링된 송신 전의 10분(예컨대, 스케줄링된 비트 이전의 10분)이고, 푸시 통지 서비스(120)의 통지 서비스 접속 메시지 송신 윈도우는 스케줄링된 비트 전의 5분이고, 풀 통지 서비스(130)의 통지 서비스 접속 메시지 송신 윈도우는 스케줄링된 풀 전의 8분이다. 도 5가 동일 시간에서(예컨대, 시간 0에서) 시작하는 푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130)를 도시하지만, 이는 예시의 목적을 위한 것이고 이들 통지 서비스는 상이한 시간들에서 시작할 수 있음이 이해되어야 한다. 도 5를 참조하면, 푸시 통지 서비스(110)는 30분에서 초기 스케줄링된 하트비트 및 웨이크 시간을 가지며, 푸시 통지 서비스(120)는 15분에서 초기 스케줄링된 하트비트 및 웨이크 시간을 가지며, 풀 통지 서비스(130)는 25분에서 초기 스케줄링된 풀 메시지 및 웨이크 시간을 갖는다.
도 4를 참조하면, 흐름은 블록(412)으로부터 블록(414)으로 이동하며, 여기서 모바일 디바이스는 서비스 접속 메시지 타이머(예컨대, 각각의 서비스 접속과 관련된 시스템 레벨 타이머)를 모니터링하고, 흐름은 블록(416)으로 이동한다. 예를 들어, 도 5를 참조하면, 모바일 디바이스는 푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130)에 대한 타이머를 모니터링한다. 도 5에서, 시간 5에서, 모바일 디바이스는 슬립 모드(510)에 진입한다. 따라서, 본 발명의 일 실시예에 따르면, 애플리케이션 프로세서 및 애플리케이션 프로세서의 운영 체제는 오프라인이지만 네트워크 접속성 요소는 웨이킹 상태로 유지된다.
블록(416)에서, 모바일 디바이스는 시간이 통지 서비스 접속 메시지 송신 윈도우 내에 있는지 여부를 판정한다. 시간이 통지 서비스 접속 메시지 송신 윈도우 내에 있지 않으면, 흐름은 블록(418)으로 이동하며, 여기서 글로벌 통지 서비스 접속 메시지 타이머가 만료했는지 여부가 판정된다. 글로벌 통지 서비스 접속 메시지 타이머는 본 명세서에서 나중에 더 상세히 논의될 것이다. 시간이 통지 서비스 접속 메시지 송신 윈도우 내에 있다면, 흐름은 블록(420)으로 이동하며, 여기서 모바일 디바이스가 웨이킹 상태인지 여부가 판정된다. 디바이스가 웨이킹 상태이면, 흐름은 블록(430)으로 이동하며, 여기서 모바일 디바이스는 통지 서비스 접속 메시지를 송신한다. 모바일 디바이스가 웨이킹 상태가 아니면(즉, 슬립 모드에 있다면), 흐름은 블록(422)으로 이동하며, 여기서 통지 서비스 접속 메시지 송신 타이머가 경과했는지 여부가 판정된다. 예를 들어, 도 5를 참조하면, 시간 10에서 시작하여, 푸시 통지 서비스(120)는 윈도우(540) 내에 있고, 모바일 디바이스(160)는 웨이킹 상태에 있지 않다(그것은 슬립 모드에 있다). 타이머가 경과하지 않았다면, 흐름은 블록(420)으로 되돌아간다. 타이머가 경과했다면, 흐름은 블록(424)으로 이동하며, 여기서 모바일 디바이스는 웨이킹되고, 흐름은 블록(430)으로 이동하며, 여기서 모바일 디바이스는 통지 서비스 접속 메시지를 송신한다.
도 5를 참조하면, 푸시 통지 서비스(120)와 관련된 통지 서비스 접속 메시지 송신 타이머는 시간 15에서 경과한다. 따라서, 시간 15에서, 모바일 디바이스(160)는 웨이킹되고(점선 웨이크(560)로 표현됨), 통지 서비스 접속을 리프레시하기 위해 통지 서비스 접속 메시지가 푸시 통지 서비스(120)로 송신된다(비트(570)로 표현됨). 모바일 디바이스(160)는 웨이크 시간(560) 동안 통지 서비스 접속 메시지를 푸시 통지 서비스(110) 또는 풀 통지 서비스(130)로 송신하지 않음이 이해되어야 한다. 예를 들어, 푸시 통지 서비스(110)는 30분의 비트 간격을 갖는다. 따라서, 푸시 통지 서비스(110)에의 접속을 리프레시하기 위해, 비트가 최대 30분에 송신될 수 있다(즉, 접속은 매 30분마다 1회만 리프레시되는 것이 필요함). 비트가 15분의 비트 간격을 갖는 푸시 통지 서비스(120)로 송신되었을 때마다 모바일 디바이스(160)가 비트를 푸시 통지 서비스(110)로 송신했다면, 필요한 것보다 실질적으로 2배 많은 비트 메시지가 송신될 것이다. 따라서, 본 발명의 일 실시예에 따르면, 모바일 디바이스는 통지 서비스 접속 메시지를 특정 통지 서비스로, 그 특정 통지 서비스에 대한 통지 서비스 접속 메시지 송신 윈도우 동안 그것이 웨이킹 상태인 경우에만, 송신한다. 웨이크(560)가 푸시 통지 서비스(110) 또는 풀 통지 서비스(130)에 대한 통지 서비스 접속 메시지 송신 윈도우와 중첩되지 않기 때문에, 모바일 디바이스는 대역폭을 보전하기 위해 이들 통지 서비스에 대한 통지 서비스 접속 메시지를 송신하지 않는다.
본 발명의 일 실시예에 따르면, 모바일 디바이스는 통지 서비스 접속 메시지를 특정 통지 서비스로 송신할 시에 그 특정 통지 서비스와 관련된 통지 메시지 송신 타이머를 리셋한다. 예를 들어, 모바일 디바이스(160)는 비트 메시지(570)를 송신할 시에 푸시 통지 서비스(120)에 대한 통지 서비스 접속 메시지 송신 타이머를 리셋한다.
시간 16에서, 디바이스는 슬립 모드(512)에 진입한다. 다시 말해, 모바일 디바이스(160)는 특별히 푸시 통지 서비스(120)에의 통지 서비스 접속을 리프레시하기 위해 웨이킹되었고, 디바이스는 배터리 리소스를 보전하기 위해 슬립 모드에 재진입한다. 시간 25에서, 풀 통지 서비스(130)와 관련된 통지 서비스 접속 메시지 송신 타이머가 만료한다(예컨대, 기간이 윈도우(542)의 끝에 있음). 따라서, 시간 25에서, 모바일 디바이스(160)는 웨이킹되고(점선 웨이크(562)로 표현됨), 관심 대상의 아이템을 체크하기 위해(체크(576)로 표현됨) 통지 서비스 접속 메시지가 풀 통지 서비스(130)로 송신된다. 또한, 푸시 통지 서비스(110)의 윈도우(544)가 웨이크(562)의 시간과 중첩되고(윈도우(544)가 시간 20에서 시작하고 시간 30에서 끝남), 푸시 통지 서비스(120)의 윈도우(546)가 웨이크(562)의 시간과 중첩되기 때문에(윈도우(546)가 시간 25에서 시작하고 시간 30에서 끝남), 모바일 디바이스(160)는 통지 서비스 접속 메시지를 푸시 통지 서비스(110)로 송신하고(비트(572)로 표현됨), 통지 서비스 접속 메시지를 푸시 통지 서비스(120)로 송신한다(비트(574)로 표현됨). 따라서, 웨이크(562) 동안, 모바일 디바이스(160)는 통지 서비스 접속 메시지를 푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130) 각각에 송신한다.
모바일 디바이스(160)가 통지 서비스 접속 메시지를 푸시 통지 서비스(110), 푸시 통지 서비스(120), 및 풀 통지 서비스(130)로 송신했기 때문에, 본 발명의 일 실시예에 따르면, 모바일 디바이스(160)는, 각각의 통지 서비스에 대해, 통지 서비스 접속 메시지 송신 타이머를 리셋하고, 통지 서비스 접속 메시지 송신 시간 및 웨이크 시간을 재스케줄링한다. 예를 들어, 푸시 통지 서비스(110)가 시간 60에서 스케줄링된 통지 서비스 접속 메시지 송신 시간을 갖는 대신에, 통지 서비스 접속 메시지가 시간 25에서 푸시 통지 서비스(110)로 송신되었기 때문에, 모바일 디바이스(160)는 시간 55에서 통지 서비스 접속 메시지 송신을 스케줄링한다. 다른 예로서, 푸시 통지 서비스(120)가 시간 45에서 스케줄링된 통지 서비스 접속 메시지 송신 시간을 갖는 대신에, 통지 서비스 접속 메시지가 시간 25에서 푸시 통지 서비스(120)로 송신되었기 때문에, 모바일 디바이스(160)는 시간 40에서 통지 서비스 접속 메시지 송신을 스케줄링한다. 시간 26에서, 모바일 디바이스(160)는 슬립 모드(514)에 진입한다.
일 실시예에서, 배터리 리소스는 중첩되는 통지 서비스 접속 메시지 송신 윈도우들에 기초하여 통지 서비스 접속 메시지의 송신을 동기화함으로써 보전됨이 이해되어야 한다. 예를 들어, 동일한 웨이크 기간 동안 다수의 통지 서비스에 대한 통지 서비스 접속 메시지들의 송신을 통합하는 것이 배터리 리소스를 보전한다. 예를 들어, 모바일 디바이스의 웨이킹은 상당한 양의 배터리 리소스를 사용한다. 부가적으로, 통지 서비스 접속 메시지를 송신하는 것과 비교해 디바이스를 웨이킹할 때 더 많은 배터리 리소스가 사용된다. 따라서, 동일한 웨이크 기간 동안 통지 서비스 접속 메시지를 다수의 통지 서비스로 송신하는 것이 배터리 리소스를 보전한다(예컨대, 모바일 디바이스는 각각의 통지 서비스 접속 메시지 송신에 대해 슬립 모드로부터 독립적으로 웨이킹되지 않음). 따라서, 본 발명의 일부 실시예에서, 중첩되는 통지 서비스 접속 메시지 송신 윈도우들에 기초하여 통지 서비스 접속 메시지들의 송신을 동기화하는 것은 요구되는 모바일 디바이스 웨이크의 수를 감소시키며, 이는 전력 소비를 감소시킨다. 통지 서비스 클라이언트들의 수가 증가함에 따라 배터리 리소스 절약이 증가함이 이해되어야 한다.
또한, 통지 서비스 접속 메시지들의 송신이 반드시 그들의 스케줄링된 송신 시간에 수행되지는 않지만(예컨대, 통지 서비스 접속 메시지들은 그들의 스케줄링된 송신 시간 전에 전송될 수 있음), 스케줄링된 송신 시간으로부터의 편차는 낮다(예컨대, 전형적으로, 통지 서비스 접속 메시지 송신 윈도우는 통지 서비스 접속 메시지 송신 간격의 대략 1/3임). 따라서, 본 발명의 실시예는 통지 서비스 접속 메시지들을 그들의 스케줄링된 송신 시간에 가깝게 송신함으로써 대역폭을 보전한다.
시간 40에서, 푸시 통지 서비스(120)와 관련된 통지 서비스 접속 메시지 송신 타이머가 만료한다(예컨대, 기간은 윈도우(548)의 끝에 있음). 따라서, 시간 40에서, 모바일 디바이스(160)는 웨이킹되고(점선 웨이크(564)로 표현됨), 푸시 통지 서비스(120) 접속을 리프레시하기 위해 통지 서비스 접속 메시지가 푸시 통지 서비스(120)로 송신된다. 웨이크(564)가 푸시 통지 서비스(110) 또는 풀 통지 서비스(130)에 대한 통지 서비스 접속 메시지 송신 윈도우와 중첩되지 않기 때문에, 모바일 디바이스는 대역폭을 보전하기 위해 이들 통지 서비스로 통지 서비스 접속 메시지를 송신하지 않는다. 시간 41에서, 모바일 디바이스(160)는 슬립 모드(516)에 진입한다.
시간 47에서, 모바일 디바이스(160)는 독립적인 이벤트(독립적인 웨이크(566)로 표현됨)로 인하여 슬립 모드(516)로부터 웨이킹된다. 사용자 상호작용(예컨대, 사용자가 슬립 모드를 디스에이블함), 관심 대상의 아이템을 수신하는 것(예컨대, 푸시 통지 서비스(110)로부터 이메일 메시지를 수신하는 것), 전화 호출 및/또는 텍스트 메시지를 수신하는 것 등을 포함한 독립적인 웨이크의 많은 원인이 존재할 수 있다. 일단 웨이킹 상태가 되면, 모바일 디바이스는 그 시간이 임의의 통지 서비스 접속 메시지 송신 윈도우 내에 있는지 여부를 판정한다. 예를 들어, 시간 47은 푸시 통지 서비스(110)에 대해 윈도우(552) 내에 있고(시간 45에서 시작하고 시간 55에서 끝남) 풀 통지 서비스(130)에 대해 윈도우(550) 내에 있다(시간 42에서 시작하고 시간 50에서 끝남). 모바일 디바이스가 웨이킹 상태이고 통지 서비스 접속 메시지 송신 윈도우 내에 있다는 사실을 레버리징하면, 모바일 디바이스는 푸시 통지 서비스 접속(110)을 리프레시하기 위해 통지 서비스 접속 메시지를 푸시 통지 서비스(110)로 송신하고(비트(582)로 표현됨), 관심 대상의 아이템을 체크하기 위해 통지 서비스 접속 메시지를 풀 통지 서비스(130)로 송신한다(체크(580)로 표현됨). 또한, 간략함의 목적을 위해 도 5에는 도시되지 않지만, 모바일 디바이스(160)는 통지 서비스 접속 메시지 송신 타이머를 리셋하고, 푸시 통지 서비스(110) 및 풀 통지 서비스(130)에 대한 통지 서비스 접속 메시지 송신 시간 및 웨이크를 재스케줄링한다. 시간 49에서, 모바일 디바이스는 슬립 모드(518)에 진입한다.
시간 55에서, 푸시 통지 서비스(120)와 관련된 통지 서비스 접속 메시지 송신 타이머가 만료한다(예컨대, 기간은 윈도우(554)의 끝에 있음). 따라서, 시간 55에서, 모바일 디바이스(160)는 슬립 모드(518)로부터 웨이킹되고(점선 웨이크(568)로 표현됨), 푸시 통지 서비스(120) 접속을 리프레시하기 위해 통지 서비스 접속 메시지가 푸시 통지 서비스(120)로 송신된다(비트(584)로 표현됨). 푸시 통지 서비스(110)의 윈도우(552)가 본래 웨이크(568)와 중첩되었을 것이지만, 비트(582)가 시간 47에서 송신되었고 통지 서비스 접속 메시지 타이머가 리셋되었고 통지 서비스 접속 메시지 송신 시간이 재스케줄링되었기 때문에, 모바일 디바이스(160)는 통지 서비스 접속 메시지를 푸시 통지 서비스(110)로 송신하지 않음이 이해되어야 한다.
도 4를 참조하면, 앞서 기술된 바와 같이, 블록 418에서, 글로벌 통지 서비스 접속 메시지 타이머가 만료했는지 여부가 판정된다. 본 발명의 일 실시예에 따르면, 모바일 디바이스는 거의 동일한 시간(예컨대, 서로 1분 이내)에 주기적인 간격(예컨대, 하루에 4회)으로 통지 서비스 접속 메시지를 각각의 통지 서비스로 송신한다. 글로벌 통지 서비스 접속 메시지 타이머가 만료하면, 흐름은 블록(426)으로 이동하며, 여기서 모바일 디바이스가 웨이킹 상태인지 여부가 판정된다. 모바일 디바이스가 웨이킹 상태이면, 흐름은 블록(430)으로 이동하며, 여기서 모바일 디바이스는 통지 서비스 접속 메시지를 각각의 통지 서비스로 송신한다. 모바일 디바이스가 웨이킹 상태가 아니면, 흐름은 블록(428)으로 이동하며, 여기서 모바일 디바이스는 웨이킹되고, 흐름은 블록(430)으로 이동하며, 여기서 모바일 디바이스는 통지 서비스 접속 메시지를 각각의 통지 서비스로 송신한다.
다수의 모바일 디바이스가 동일한 네트워크를 통해 동일한 통지 서비스에 액세스하고 있을 수 있기 때문에(예컨대, 도 1을 참조하면, 본 발명의 일 실시예에 따르면, 모바일 디바이스(160)와 모바일 디바이스(들)(170)는 동일한 네트워크 액세스 데이터 요소(들)(150)와 적어도 부분적으로 연결됨), 글로벌 통지 서비스 접속 메시지 타이머는 모든 모바일 디바이스가 동시에 통지 서비스 접속 메시지를 송신하지 않도록 구성된다. 본 발명의 일 실시예에 따르면, 이들 통지 서비스 접속 메시지 송신 시간은 암호로 랜덤화된다(그리고 이에 따라 하루 전체에 걸쳐 확산된다). 예를 들어, 각각의 모바일 디바이스의 고유 식별자(예컨대, 범용 고유 식별자(universally unique identifier: UUID), 미디어 액세스 제어(Media Access Control: MAC) 어드레스 등)가 이들 글로벌 통지 서비스 접속 메시지 송신 시간을 결정하기 위해 주어진 시간 간격에 걸쳐 수정된다(modded).
이전에 기술된 바와 같이, 본 발명의 일부 실시예에서, 지속적인 통지 서비스(예컨대, 푸시 통지 서비스)에 대한 통지 서비스 접속 메시지 송신 간격이 최적화될 수 있다. 다시 말해, 본 발명의 일부 실시예에서, 메시지 송신 간격은 지속적인 통지 서비스에 접속된 상태를 유지하면서 지속적인 통지 서비스를 위한 최소량의 통지 서비스 접속 메시지를 송신하기 위해 최적화된다. 도 6은 본 발명의 일 실시예에 따른 통지 서비스 접속 메시지 간격의 최적화를 도시한 예시적인 상태도이다. 블록(610)에서, 초기 통지 서비스 접속 메시지 송신 간격이 결정된다. 예를 들어, 초기 통지 서비스 접속 메시지 송신 간격은 특정 통지 서비스의 타임아웃 간격에 기초할 수 있다. 모바일 디바이스가 접속이 활성 상태임을 판정하면, 메시지 송신 간격은 N 양(예컨대, 5분)만큼 증가된다(612). 예를 들어, 접속은 응답 메시지가 통지 서비스로부터 수신되면 활성 상태인 것으로 판정될 수 있다.
모바일 디바이스가 접속이 활성 상태가 아님을 판정하면, 메시지 송신 간격은 Y 양(예컨대, 5분)만큼 감소되고(614), 개선된 통지 서비스 접속 메시지 송신 간격에 진입한다(616). 모바일 디바이스가 접속이 활성 상태임을 판정하면, 메시지 송신 간격은 M 양(예컨대, 2분)만큼 증가되며, 여기서 MN보다 작다(618). 모바일 디바이스가 접속이 활성 상태가 아님을 판정하면, 메시지 송신 간격은 X 양만큼 감소되며, 여기서 XY보다 작다(620).
약간의 시간 후에, 접속 메시지 송신 간격은 안정된 통지 서비스 접속 메시지 송신 간격(622) 상태에 진입한다. 이러한 상태에 있을 때, 접속이 활성 상태이면, 간격 값은 현재의 값에서 유지된다(624). 본 발명의 일부 실시예에서, 상태(622)에서 Z 양의 시간 후에(예컨대, 8시간 후에), 접속 메시지 송신 간격은 초기 통지 서비스 접속 메시지 송신 간격(610)으로 리셋되며(623), 여기서 간격 최적화 프로세스가 재시작된다. 따라서, 통지 서비스 접속 메시지 송신 간격이 비교적 높은 빈도의 주파수 메시지 송신 간격(예컨대, 매 5분마다 메시지)으로 정해진다면, 약간의 기간 후에 최적의 송신 간격을 결정하려는 시도로 최적화 프로세스가 재시작된다. 그러나, 접속이 활성 상태가 아니면, 간격은 감소되고(예컨대, 절반만큼 감소)(626), 간격은 백오프(backoff) 통지 서비스 접속 메시지 송신 간격에 진입한다(628). 백오프 상태에 있을 때, 접속이 활성 상태가 아니면, 간격은 감소된다(예컨대, 절반만큼 감소)(630).
통지 서비스 접속이 활성 상태가 아니면, 그 접속은 재확립될 필요가 있음이 이해되어야 한다. 본 발명의 일 실시예에 따르면, 통지 서비스 접속 재시도가 웨이크 간격에 따라 스케줄링된다. 예를 들어, 도 5를 참조하면, 비트(572)가 시간 25에서 푸시 통지 서비스(110)에의 접속을 리프레시하는 데 실패했다면, 본 발명의 일 실시예에서, 다음 웨이크에서 모바일 디바이스는 통지 서비스 접속을 재확립하려고 할 것이다. 따라서, 시간 40에서 웨이크(564) 동안, 모바일 디바이스는 푸시 통지 서비스(110)에의 통지 서비스 접속을 재확립하려고 할 수 있다.
프록시 기반 통지 서비스
상기에 기술된 바와 같이, 통지 서비스는 모바일 클라이언트의 배터리 수명을 대가로 최신 정보를 획득하는 경험을 사용자에게 제공한다. 추가로, 사용자는 또한 프로토콜 오버헤드와 관련된 데이터에 대해 비용을 지불할 필요가 있을 수 있는데, 이는 사용자가 무제한 데이터 요금제를 갖지 않는 경우에는 중대한 것일 수 있다. 모바일 클라이언트는, 실제의 사용자 데이터 활동이 있든 없든, 데이터 링크를 유지하기 위해 통지 서비스 접속 메시지를 주기적으로 전송할 필요가 있다. 그 결과로서, 모바일 클라이언트는 통지 서비스 접속 메시지를 전송하기 위해 슬립 상태로부터 주기적으로 웨이킹할 필요가 있으며; 또한, 서버로부터의 응답이 또한 모바일 디바이스를 웨이킹할 것이고 이런 이유로 더 많은 배터리 전력을 소비한다. 배터리 전력 소비는 사용자가 공격적인 푸시 간격을 선택한 때 또는 사용자가 다수의 푸시 서비스에 가입한 때 증가한다.
예를 들어, 전형적인 하트비트 간격은 마이크로소프트 익스체인지 서버의 경우 8 내지 28분의 범위 내이다. 사용자가 어떠한 데이터도 수신하지 않을지라도, 8분 간격으로, 모바일 디바이스는 통지 서비스 접속 메시지를 전송하기 위해 하루에 180회 웨이킹할 필요가 있을 것이며; 게다가 그것은 또한 대응하는 서버 응답을 처리하기 위해 추가로 하루에 대략 180회 웨이킹할 필요가 있을 것인데, 그 이유는 서버 응답이 보통 서버 구성에 따라 간격에 대해 지연되기 때문이다. 이러한 상황은 사용자가 다수의 푸시 서비스에 가입한 경우 또는 사용자가 공격적인 푸시 간격을 선택한 경우에 악화될 것이다. 또한, 바이트를 기준으로 데이터 서비스에 요금을 지불하는 사용자의 경우, 푸시 통지 서비스 접속 메시지가 또한 사용자에게 비용을 발생시킬 수 있다. 패킷당 200 바이트의 평균 페이로드 및 8분의 간격을 가정하면, 오버헤드는 한 달에 약 2 MB이다. 그리고, 이러한 수치는 사용자가 가입한 푸시 서비스의 수에 따라 선형적으로 증가한다.
일 실시예에서, 모바일 클라이언트의 배터리 수명 및 통지와 관련된 추가 데이터 비용에 대한 요구를 완화시키기 위해 프록시가 사용된다. 이러한 실시예에서, 이러한 프록시는 모바일 클라이언트에 대해 통지 서비스를 관리하는 데 사용된다. 프록시는 모바일 클라이언트에 대해 하나 이상의 서비스를 관리할 수 있고/있거나 하나 이상의 클라이언트에 대해 통지 서비스(들)를 처리할 수 있다. 통지 서비스 접속을 관리하기 위해, 프록시는 하나 이상의 통지 서비스를 위해 모바일 클라이언트에 대해 프록싱하도록 모바일 클라이언트로부터 요청을 수신하고, 통지 서비스 접속 메시지를 대응하는 통지 서버로 주기적으로 전송하고, 모바일 클라이언트로부터 통지를 포워딩하고, 모바일 클라이언트로부터의 업데이트를 처리하고, 모바일 클라이언트 사인-아웃(sign out) 요청을 처리할 것이다.
일 실시예에서, 프록시는 개인용 컴퓨터, 랩톱, 서버, 모바일 클라이언트 등과 같은 독립형 디바이스이다. 예를 들어 그리고 일 실시예에서, 프록시는 별도의 전력 공급장치 및 선택적으로 저비용 데이터 접속을 갖는 독립형 디바이스이다. 다른 실시예에서, 프록시는 모바일 클라이언트의 일부이다. 이러한 실시예에서, 모바일 클라이언트는 제1 운영 체제를 구동시키는 애플리케이션 프로세서, 및 하나 이상의 상이한 운영 체제를 구동시키는 하나 이상의 네트워크 접속성 요소를 포함한다. 또한, 애플리케이션 프로세서의 전력 소비는 네트워크 접속성 요소의 전력 소비보다 클 수 있다. 또한, 네트워크 접속성 요소들 중 하나 이상은 이들 네트워크 접속성 요소의 대응하는 운영 체제에서 프록시를 실행시킨다. 네트워크 접속성 요소에서 프록시를 실행시킴으로써, 애플리케이션 프로세서는 슬립 모드에 진입할 수 있고, 모바일 클라이언트에 대한 배터리 수명을 절약할 수 있다.
도 9a는 본 발명의 일 실시예에 따른 독립형 프록시를 포함하는 예시적인 컴퓨팅 환경(900)을 도시한다. 컴퓨팅 환경(900)은 상기 도 1의 컴퓨팅 환경(100)과 유사하며, 여기서 컴퓨팅 환경(900)은 하나 이상의 네트워크 데이터 액세스 요소(150)와 각각 연결되는 모바일 디바이스(904, 170)를 포함한다. 도 1에서와 같이, 네트워크 데이터 액세스 요소(들)(150)는 본 발명의 여러 실시예들에서 셀룰러 네트워크(예컨대, GSM, EDGE, GPRS, CDMA, UMTS, TD-CDMA, LTE, 또는 다른 셀룰러 네트워크), LAN 등을 포함한 다양한 유형의 네트워크의 일부일 수 있다. 그러나, 컴퓨팅 환경(100)과는 달리, 컴퓨팅 환경(900)에서는, 모바일 디바이스(904)는 모바일 디바이스(904)에 대해 서비스 접속(들)을 관리하는 데 프록시(902)를 사용한다. 일 실시예에서, 프록시(902)는 통지 서비스 접속 메시지를 송신하고 응답을 수신한다 - 마치 프록시(902)가 이러한 기능을 수행하는 모바일 클라이언트(904)였던 것처럼 -. 프록시(902)가 하기에 추가로 기술된다.
모바일 디바이스(904)는 도 1에서 상기에 설명된 바와 같이 애플리케이션 프로세서(162) 및 네트워크 접속성 요소(들)(164)를 포함한다. 모바일 디바이스(160)는 데이터 콘텍스트(예컨대, PDP 콘텍스트)를 통해 네트워크 접속성 요소(들)(164) 및 프록시(902)를 거쳐 네트워크 데이터 액세스 요소(들)(150)와 통신한다. 또한, WAN(140)은 네트워크 데이터 액세스 요소(150)와 연결된다. 푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130)는 WAN(140)과 연결된다. 본 발명의 일 실시예에 따르면, 모바일 디바이스(904)의 사용자는, 프록시(902)를 통해, 푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130)에 액세스하고 이를 이용한다(푸시 통지 서비스(110, 120) 및 풀 통지 서비스(130)는 사용자에게 관심 대상의 아이템을 제공한다). 예를 들어, 푸시 통지 서비스(110)는, 프록시(902)를 통해, 모바일 디바이스(904)의 사용자에게 개인용 푸시 이메일 계정을 제공하는 것일 수 있는 반면, 푸시 통지 서비스(120)는 모바일 디바이스(160)의 사용자에게 워크 푸시 이메일 계정을 제공하는 것일 수 있다.
본 발명의 일 실시예에서, 애플리케이션 프로세서(162)는 모바일 디바이스(904)의 중앙 프로세서이다. 일 실시예에서, 애플리케이션 프로세서(162)는 도 1에서 설명된 바와 같이 모바일 디바이스(904)의 운영 체제(들)를 처리한다.
본 발명의 일 실시예에 따르면, 모바일 디바이스(904)는 모바일 클라이언트(160)에 대해 도 1에서 설명된 바와 같이 슬립 모드에 진입할 수 있다. 또한, 프록시(902)를 사용함으로써, 모바일 클라이언트(904)는 프록시가 모바일(904)에 대한 서비스 접속(들)을 관리하는 동안에 슬립 모드에 있을 수 있다. 슬립 모드 동안, 본 발명의 일 실시예에 따르면, 모바일 디바이스(904)는 애플리케이션 프로세서(162)를 일시적으로 디스에이블한다(애플리케이션 프로세서(162)는 일시적으로 디스에이블된 때 전력을 사실상 전혀 소비하지 않을 수 있다).
도 1에서 설명되는 바와 같이, 지속적인 통지 서비스 접속(예컨대, 푸시 통지 서비스(110, 120))은 본 발명의 일부 실시예에서 접속의 지속성을 유지하기 위해 주기적으로 리프레시된다. 도 1에서 설명된 바와 같이 모바일 클라이언트가 지속적인 통지 서비스 접속(들)을 주기적으로 리프레시하는 대신에, 프록시(902)가 모바일 클라이언트에 대해 이들 지속적인 통지 서비스 접속(들)을 리프레시한다. 예를 들어, 푸시 통지 서비스(110, 120)는 모바일 디바이스(904)에의 접속을 타임아웃할 수 있다(이에 따라, 사용자를 위한 푸시 통지 서비스를 중지함) - 모바일 디바이스(904)가 그 접속을 적극적으로 사용하지 않는다면 -. 그러나, 이러한 실시예에서, 프록시(902)는 모바일 클라이언트(904)에 대해 이러한 접속을 적극적으로 사용한다. 일 실시예에서, 어떤 주기적 간격으로, 프록시(902)는 모바일 클라이언트(904)에 대해 접속을 리프레시하기 위해 통지 서비스 접속 메시지를 푸시 통지 서비스(110, 120)로 송신한다. 프록시(902)가 모바일 클라이언트(904)에 대해 통지 서비스 접속을 관리하는 시간 동안, 모바일 클라이언트(904)는 슬립 모드에 진입하여서, 모바일 클라이언트(904)에 대한 배터리 전력을 절약할 수 있다. 통지 서비스 접속 메시지는 프록시(902)가 여전히 접속되어 있음을 (그리고 아마도 푸시 통지 서비스로부터 관심 대상의 아이템을 계속해서 수신하기를 원하고 있음을) 푸시 통지 서비스(110, 120)에 통지한다. 프록시(902)에 의해 푸시 통지 접속을 리프레시하는 것은 모바일 디바이스가 서비스에 접속된 상태를 유지하기를 원하고 있음을 푸시 통지 서비스의 서버에 통지하는 것임이 이해되어야 한다. 또한, 푸시 통지 접속을 리프레시하는 것은, 접속을 유지할 것을 푸시 통지 서비스의 서버로의 경로를 따라 각각의 네트워크 요소에 통지한다(그렇지 않으면, 예컨대, 네트워크 요소는 그 접속과 관련된 네트워크 리소스를 소거할 수 있다). 일 실시예에서, 통지 서비스 접속 메시지는 핑 메시지, 하이퍼텍스트 전송 프로토콜(HTTP) 요청, 또는 당업계에 공지된 바와 같은 어떤 다른 킵 얼라이브 메시지일 수 있다. 통지 서비스는 접속이 모바일 디바이스(904)에 대해 활성 상태임을 프록시(902)에 통지하기 위해 통지 서비스 접속 메시지에 응답할 수 있다. 본 발명의 일부 실시예에서, 통지 서비스로부터의 관심 대상의 아이템 수신이 또한 지속적인 통지 서비스 접속을 리프레시한다는 것이 이해되어야 한다.
상기에 기술된 바와 같이, 통지 서비스 접속 메시지의 송신 간격은 개별 통지 서비스마다 상이할 수 있다. 또한, 본 발명의 일부 실시예에서, 모바일 디바이스(904)는 네트워크 데이터 접속성을 유지하기 위해 (예컨대, 캐리어의 네트워크 내의 NAT 라우터, 방화벽, 또는 네트워크 내의 다른 네트워크 요소와 같은) 네트워크 데이터 액세스 요소(들)(150)와의 접속을 주기적으로 리프레시하도록 요구된다. 이러한 실시예에서, 모바일 클라이언트(904)에 대해 통지 서비스 접속(들)을 관리함으로써, 프록시(902)는 이들 네트워크 데이터 액세스 요소(들)(150) 접속을 리프레시할 것이다.
일 실시예에서, 프록시(902)는 통지 서비스 및 모바일 클라이언트 업데이트를 관리한다. 예를 들어 그리고 일 실시예에서, 프록시(902)는 모바일 클라이언트(904)로부터 서비스 접속 요청을 수신하고, 이들 서비스 접속 요청을 대응하는 서비스 제공자(예컨대, 푸시 통지 서비스(110, 120) 등)로 포워딩한다. 또한, 프록시(902)는 모바일 클라이언트(904)에 대해 서비스 접속(들)을 관리한다. 예를 들어 그리고 일 실시예에서, 프록시(902)는 모바일 클라이언트(904)에 대해 접속(들)을 리프레시하기 위해 통지 서비스 접속 메시지를 푸시 통지 서비스(110, 120)로 송신한다. 상기에 기술된 바와 같이, 이러한 통지 서비스 접속 메시지는 핑 메시지, HTTP 요청, 또는 당업계에 공지된 바와 같은 어떤 다른 킵 얼라이브 메시지일 수 있다.
통지 메시지가 (통지 서비스 접속 메시지에 응답하여든 또는 통지 서버들 중 하나에 의해 프록시로 푸시되든 등등) 프록시(902)에 의해 수신되면, 프록시(902)는 모바일 클라이언트(904)의 애플리케이션 프로세서(162)로 통지 메시지를 포워딩할 수 있거나, 이러한 통지 메시지를 다른 통지 메시지와 번들링(bundling)하고 번들링된 메시지를 이후에 전송하도록 통지 메시지를 보유할 수 있다. 또한, 프록시(902)는 사인-인/아웃 요청, 어드레스 변경 등과 같은 모바일 클라이언트(904)로부터의 업데이트를 관리한다. 일 실시예에서, 프록시(902)는 모바일 클라이언트(904)의 애플리케이션 프로세서(162)로부터 수신되는 업데이트를 관리한다. 프록시 기능은 하기의 도 10 내지 도 13에서 추가로 설명된다.
상기에 기술된 바와 같이, 프록시는 프록시(902)와 같은 독립형 디바이스일 수 있거나, 모바일 클라이언트 내에 포함될 수 있다. 도 9b는 본 발명의 일 실시예에 따른 모바일 클라이언트(954) 내에 포함된 프록시(952)를 포함하는 예시적인 컴퓨팅 환경(950)을 도시한다. 도 9b에서, 프록시(952)는 모바일 클라이언트(954)의 일부로서 포함된다. 일 실시예에서, 프록시(952)는 네트워크 접속성 요소(들)(956)의 일부이다. 이러한 실시예에서, 프록시(952)는 모바일 클라이언트(954)의 전력 소비를 보전하기 위해 애플리케이션 프로세서가 저 전력 또는 "슬립 모드"에 진입하는 것을 허용하는 네트워크 접속성 요소(들)(956)의 운영 체제 하에서 작동한다. 예를 들어 그리고 일 실시예에서, 프록시(902)는 3G 셀룰러 네트워크 접속을 동작시키는 데 사용되는 3G 셀룰러 네트워크 접속성 요소의 운영 체제 하에서 작동한다. 이러한 예에서, 이러한 네트워크 접속성 요소의 운영 체제는 소프트웨어, 펌웨어, 하드웨어 등일 수 있다.
일 실시예에서, 프록시는 네트워크 접속성 요소(들)(956)의 베이스밴드 프로세서의 동작 환경의 일부일 수 있는데, 이는 모바일 클라이언트(954)가 애플리케이션 프로세서(162)를 웨이킹하는 것을 회피하고 배터리를 절약하는 것을 허용한다. 이러한 실시예에서, 프록시(952)는 통지 서비스(들)와 관련된 프로토콜 오버헤드의 대부분을 차지하며, 모바일 클라이언트(954)의 애플리케이션 프로세서(162)는 데이터가 이용가능할 때 통지받는다.
일 실시예에서, 프록시(952)는 상기의 도 9a에서 설명된 바와 같은 프록시(902)와 유사한 기능을 수행한다. 예를 들어 그리고 일 실시예에서, 프록시(952)는 애플리케이션 프로세서(162)로부터 서비스 접속 요청을 수신하고, 이들 서비스 접속 요청을 대응하는 서비스 제공자(예컨대, 푸시 통지 서비스(110, 120) 등)로 포워딩한다. 또한, 프록시(952)는 모바일 클라이언트(954)에 대해 서비스 접속(들)을 관리한다. 예를 들어 그리고 일 실시예에서, 프록시(952)는 모바일 클라이언트(954)에 대해 접속(들)을 리프레시하기 위해 통지 서비스 접속 메시지를 푸시 통지 서비스(110, 120)로 송신한다. 상기에 기술된 바와 같이, 이러한 통지 서비스 접속 메시지는 핑 메시지, HTTP 요청, 또는 당업계에 공지된 바와 같은 어떤 다른 킵 얼라이브 메시지일 수 있다.
통지 메시지가 (통지 서비스 접속 메시지에 응답하여든 또는 통지 서버들 중 하나에 의해 프록시로 푸시되든 등등) 프록시(952)에 의해 수신되면, 프록시(952)는 모바일 클라이언트(954)의 애플리케이션 프로세서(162)로 통지 메시지를 포워딩할 수 있거나, 이러한 통지 메시지를 다른 통지 메시지와 번들링하고 번들링된 메시지를 이후에 전송하도록 통지 메시지를 보유할 수 있다. 또한, 프록시(952)는 사인-인/아웃 요청, 어드레스 변경 등과 같은 모바일 클라이언트(954)로부터의 업데이트를 관리한다. 일 실시예에서, 프록시(952)는 모바일 클라이언트(954)의 애플리케이션 프로세서(162)로부터 수신되는 업데이트를 관리한다. 프록시 기능은 하기의 도 10 내지 도 13에서 추가로 설명된다.
도 10은 본 발명의 일 실시예에 따른 클라이언트와 서버 사이의 서비스 접속(들)을 프록싱하는 프록시의 블록 다이어그램이다. 도 10에서, 클라이언트(1002)는 프록시(1004)와 통신하고, 프록시(1004)는 서버(1006)와 통신한다. 일 실시예에서, 클라이언트(1002)는 상기에 기술된 바와 같은 모바일 클라이언트(904 또는 954)일 수 있다. 다른 실시예에서, 프록시(1004)는 상기에 설명된 바와 같은 프록시(902 또는 952)일 수 있다. 추가 실시예에서, 서버는 상기에 기술된 바와 같은 푸시 통지 서비스(110 또는 120) 중 하나이다.
도 10에서, 클라이언트(1002)는 사인-인 요청(1008A)을 프록시(1004)로 송신한다. 일 실시예에서, 클라이언트(1002)는 클라이언트(1002)의 사용자가 푸시 서비스를 턴 온할 때 또는 클라이언트가 시동될 때(예컨대, 디바이스에 전력 공급된 때) 사인-인 요청을 전송한다. 일 실시예에서, 사인-인 요청은 프록시를 확립하는 데 이용될 수 있는 정보(예컨대, 클라이언트 식별, 클라이언트 IP 어드레스, 서버 IP 어드레스, 트랜잭션 식별자, 서비스 품질(QoS) 파라미터, 배터리 최대화 등)를 포함한다. 일 실시예에서, 클라이언트 식별은 클라이언트를 고유하게 식별하는 식별(예컨대, 국제 모바일 기기 식별코드(International mobile equipment identity: IMEI), MAC 어드레스 등)이다. 일 실시예에서, 클라이언트 IP 어드레스는 클라이언트(1002)의 IP 어드레스이고, 프록시는 이러한 IP 어드레스를 사용하여 데이터를 클라이언트로 전송한다. 서버 IP 어드레스는 대응하는 통지 서비스에 대한 서버의 IP 어드레스이다. 일 실시예에서, 사인-인 요청은 통지 서비스에 대한 하나 이상의 요청을 포함한다. 이러한 실시예에서, 사인-인 요청은 1개 초과의 서버 IP 어드레스일 것이다.
추가로, 사인-인 요청은 또한 지연과 같은 QoS 파라미터를 포함할 수 있다. 이러한 실시예에서, 지연은 사용자가 용인할 수 있는 지연의 종류를 나타내는 파라미터이다. 또한, 사인-인 요청은 사용자가 배터리 수명을 최대화하는 것을 바라는지 여부를 나타내는 파라미터를 추가로 포함할 수 있다.
사인-인 요청의 수신에 응답하여, 프록시는 트랜잭션 식별자를 반향시키고 사인-인 응답(1008B)을 클라이언트(1002)로 전송한다. 일 실시예에서, 사인-인 응답은 클라이언트 식별, 클라이언트 IP 어드레스, 및 트랜잭션 식별자를 포함한다. 일 실시예에서, 트랜잭션 식별자는 클라이언트와의 프록시 세션을 식별하는 식별자이다.
사인-인 요청으로부터의 정보를 이용하여, 프록시(1004)는 클라이언트(1002)에 대해 접속(들)을 리프레시하기 위해 통지 서비스 접속 메시지(1010A 내지 1010F)를 서버(1006)로 전송한다. 예를 들어, 프록시(1004)는 통지 서비스 접속 메시지(1010A, 1010C, 1010E)를 서버(1006)로 주기적으로 전송한다. 일 실시예에서, 통지 서비스 접속 메시지는 핑 메시지, HTTP 요청, 또는 당업계에 공지된 바와 같은 어떤 다른 킵 얼라이브 메시지이다. 응답 시, 서버(1006)는 페이로드(1010B, 1010D) 내에 어떠한 데이터도 포함하지 않거나 페이로드(1010F) 내에 데이터를 갖는 응답으로 응답할 수 있다. 일 실시예에서, 어떠한 데이터도 갖지 않는 응답은 클라이언트(1002)에 대한 어떠한 통지 메시지도 존재하지 않음을 나타낸다. 어떠한 데이터도 존재하지 않는다면, 프록시(1004)는 클라이언트에 통지하지 않고 클라이언트(1002)를 슬립 모드로부터 잠재적으로 웨이킹하지 않아서, 배터리 전력을 절약한다.
일 실시예에서, 데이터를 갖는 응답은 클라이언트(1002)에 대한 하나 이상의 통지 메시지를 포함하는 응답이다. 일 실시예에서 데이터를 갖는 응답의 수신에 응답하여, 프록시(1004)는 데이터를 클라이언트(1002) 상으로 전송한다(1012). 이러한 실시예에서, 프록시(1004)는 하나 이상의 통지 메시지를 클라이언트(1002)로 전송한다. 또한, 클라이언트(1002)가 슬립 모드에 있다면, 하나 이상의 통지 메시지의 수신은 클라이언트(1002)가 하나 이상의 통지 메시지를 처리할 수 있도록 클라이언트(1002)를 슬립 모드로부터 웨이킹할 것이다.
일 실시예에서, 프록시(1004)는 서버(1006)로부터 데이터를 갖는 응답의 수신 시에 하나 이상의 통지 메시지를 클라이언트(1002)로 포워딩할 수 있다. 대안적인 실시예에서, 프록시(1004)는 하나 이상의 통지 메시지를 다른 통지 메시지와 번들링할 수 있고, 번들링된 통지 메시지를 클라이언트(1002)로 전송할 수 있다. 이러한 실시예에서, 통지 메시지의 번들링은 클라이언트의 배터리 수명을 절약할 수 있는데, 그 이유는 통지 메시지가 클라이언트(1002)로 포워딩되는 횟수가 감소되기 때문이다.
일 실시예에서, 프록시(1004)가 수신 시에 통지 메시지를 포워딩하는지 또는 통지 메시지를 번들링하는지 여부는 상기에 기술된 사인-인 요청(1008A)에서 클라이언트(1002)에 의해 전송된 파라미터에 의해 제어된다. 예를 들어 그리고 일 실시예에서, 프록시(1004)는 클라이언트를 위한 통지 메시지들을 번들링할 것인지 여부를 판정하기 위해 배터리 수명 파라미터를 사용할 것이다. 대안적인 실시예에서, 번들링할 것인지 여부는 하루 중의 시간, 서비스의 시기적절성 등에 기초하여 클라이언트로부터 업데이트될 수 있다.
또한, 클라이언트(1002)는 업데이트 요청(1014A)을 전송할 수 있다. 일 실시예에서, 업데이트 요청은 클라이언트(1002)의 IP 어드레스 변경으로 인해 클라이언트 IP 어드레스를 업데이트하라는 요청을 포함한다. 이러한 실시예에서, 업데이트 요청은 클라이언트 식별, 새로운 클라이언트 IP 어드레스, 및 트랜잭션 식별자를 포함한다. 클라이언트 IP 어드레스는 네트워크가 클라이언트 비활동으로 인해 데이터 콘텍스트를 활성해제했고 클라이언트가 데이터 콘텍스트를 재확립한 경우, 또는 클라이언트가 네트워크를 변경(셀룰러로부터 WiFi로 그리고 그 반대로)한 경우에 변할 수 있다. 클라이언트(1002)는 또한 클라이언트가 소정 기간 동안 서비스를 이용하지 않았다면 업데이트 요청을 프록시로 전송할 수 있어서, 프록시가 이용가능한 데이터를 클라이언트로 푸시할 수 있게 한다. 이러한 실시예에서, 이러한 새로운 IP 어드레스는 프록시(1004)에 의해 저장되고 클라이언트의 구 IP 어드레스를 대체한다.
다른 실시예에서, 클라이언트(1002)는 파라미터(QoS 파라미터, 배터리 파라미터 등)들 중 일부 또는 전부를 변경하라는 업데이트 요청을 전송한다. 일 실시예에서, 사용자는 배터리 보전을 최대화하고 수신 시에 통지 메시지를 포워딩하는 것으로부터 통지 메시지들을 번들링하는 것으로 통지 포워딩을 변경하기를 원할 수 있다. 대안적인 실시예에서, 사용자는 수신 시에 통지 메시지를 포워딩하는 것으로 통지 포워딩을 변경하기를 원할 수 있다. 추가 실시예에서, 업데이트는 다른 이유(하루 중의 시간, 모바일 클라이언트의 위치 등)로 인한 것이다.
일 실시예에서, 사용자가 푸시 서비스를 턴 오프하거나 디바이스가 전력 차단되는 경우, 클라이언트(1002)는 사인-아웃 요청(1016A)을 프록시로 전송할 수 있다. 일 실시예에서, 사인-아웃 요청은 프록시 서비스가 중지되어야 함을 나타내는 정보를 포함하는 패킷이다. 일 실시예에서, 사인-아웃 요청은 클라이언트 식별 및 트랜잭션 식별자를 포함한다. 프록시는 서버와 통신하는 것을 중지할 수 있거나, 그것은 통신을 계속하고 향후 사용을 위해 데이터를 버퍼링할 수 있다. 사인-아웃 요청의 수신 시, 프록시(1004)는 사인-아웃 응답(1016B)을 클라이언트(1002)로 전송한다.
도 11은 본 발명의 일 실시예에 따른, 클라이언트에 대해 프록시에 의해 통지 서비스 접속을 관리하는 것을 도시한 흐름도이다. 일 실시예에서, 프록시(902 또는 952)는 통지 서비스 접속을 관리하도록 프로세스(1100)를 수행한다. 도 11에서, 프로세스(1100)는 블록(1110)에서 프록시를 확립함으로써 시작한다. 일 실시예에서, 프로세스(1100)는 상기의 도 10에 설명된 바와 같이 사인-인 요청을 수신하고 그 사인-인 요청에 응답함으로써 프록시를 확립한다.
블록(1120)에서, 프로세스(1100)는 서비스 접속(들)을 관리한다. 일 실시예에서, 프로세스(1100)는 통지 서비스 접속 메시지를 대응하는 서버로 주기적으로 전송하고 이들 통지 서비스 접속 메시지에 대한 응답을 처리함으로써 서비스 접속을 관리한다. 또한, 프로세스(1100)는 통지를 클라이언트로 포워딩한다. 서비스 접속(들)의 관리가 하기의 도 12에서 추가로 설명된다.
프로세스(1100)는 블록(1130)에서 클라이언트를 관리한다. 일 실시예에서, 프로세스(1100)는 사인-인 및/또는 사인-아웃 요청을 수신하고 이에 응답함으로써 클라이언트를 관리한다. 클라이언트의 관리가 하기의 도 13에서 추가로 설명된다.
도 12는 본 발명의 일 실시예에 따른, 프록시와 서버 사이의 통지 서비스 접속의 관리를 도시하는 흐름도이다. 일 실시예에서, 프록시(902 또는 952)는 프록시와 서버 사이의 통지 서비스 접속을 관리하도록 프로세스(1200)를 수행한다. 도 12에서, 프로세스(1200)는 블록(1210)에서 프로세스(1200)가 통지 서비스 접속 메시지를 서버로 전송해야 하는지를 판정함으로써 시작한다. 일 실시예에서, 프로세스(1200)는 동적으로 조정되는 간격 등에 기초하여 주기적으로 통지 서비스 접속 메시지를 전송한다. 프로세스(1200)가 통지 서비스 접속 메시지를 전송해야 한다면, 프로세스(1200)는 블록(1220)에서 통지 서비스 접속 메시지를 전송한다. 일 실시예에서, 프로세스(1200)는 핑 메시지, HTTP 요청, 또는 당업계에 공지된 바와 같은 어떤 다른 킵 얼라이브 메시지와 같은 적절한 메시지를 서버로 전송한다. 실행은 블록(1230)으로 진행한다. 프로세스(1200)가 블록(1210)에서 그것이 통지 서비스 접속 메시지를 전송하지 않아야 함을 판정하면, 실행은 하기의 블록(1230)으로 진행한다.
블록(1230)에서, 프로세스(1200)는 프로세스(1200)가 서버로부터 응답을 수신했는지를 판정한다. 일 실시예에서, 수신된 응답은 프로세스(1200)가 프록싱하고 있는 클라이언트를 위한 것이다. 프로세스가 서버 응답을 수신했다면, 블록(1240)에서, 프로세스(1200)는 수신된 서비스 응답이 클라이언트를 위한 통지 데이터를 포함하는지를 판정하고, 프로세스(1200)는 블록(1270)에서 통지 데이터가 클라이언트로 전송되거나 향후 전송을 위해 번들링되어야 하는지를 판정한다. 일 실시예에서, 프로세스(1200)는 통지들을 클라이언트로 선택적으로 포워딩할 수 있다. 예를 들어, 프로세스(1200)는 배터리 소비를 감소시키기 위해 클라이언트를 웨이킹하는 횟수를 감소시키도록 통지들을 번들링할 수 있다. 다른 예로서, 모바일 디바이스는 (예컨대, 로밍(roaming)으로 인해) 데이터 서비스를 갖지 않으며, 프로세스(1200)는 클라이언트를 대신하여 통지들을 수신하고 다른 전송 메커니즘(예컨대, 단문자 서비스(SMS))으로 모바일에 선택적으로 통지할 것이다. 다른 예에서, 프로세스(1200)는 통지 데이터의 콘텐츠에 기초하여 통지들을 선택적으로 포워딩할 수 있다(예컨대, 시간 제약적(time sensitive) 통지(예컨대, 주식 통지 등)는 수신 시에 포워딩되고, 비-시간 제약적 통지(예컨대, 애플리케이션 업데이트 등)는 번들링된다). 통지 데이터가 전송되어야 하는 경우, 이를테면 예를 들어, 프록시 서비스가 수신 시에 통지 데이터를 포워딩하는 경우, 또는 충분한 통지 데이터가 번들링된 경우, 프로세스(1200)는 블록(1250)에서 통지 데이터를 클라이언트로 포워딩한다. 일 실시예에서, 프로세스(1200)는 도 10에서 상기에 설명된 바와 같이 수신 시에 통지 데이터를 클라이언트로 포워딩하거나 이 통지 데이터를 다른 통지와 번들링한다. 실행은 하기의 블록(1260)으로 진행한다. 통지가 전송되지 않아야 한다면, 프로세스(1200)는 다른 통지 데이터와 번들링될 통지 데이터를 버퍼링하고, 실행은 하기의 블록(1260)으로 진행한다.
프로세스(1200)가 통지 데이터를 포함하지 않은 응답을 수신했다면, 블록(1260)에서, 프로세스(1200)는 전송할 다음의 통지 서비스 접속 메시지를 스케줄링한다. 일 실시예에서, 프로세스(1200)는 주기적인 기간, 동적으로 조정되는 기간 등에 기초하여 다음 통지를 스케줄링한다. 실행은 상기에 기술된 바와 같은 블록(1210)으로 진행한다.
도 13은 본 발명의 일 실시예에 따른 클라이언트 상호작용의 관리를 도시한 흐름도이다. 일 실시예에서, 프록시(902 또는 952)는 클라이언트를 관리하도록 프로세스(1300)를 수행한다. 도 13에서, 프로세스(1300)는 블록(1310)에서 클라이언트로부터 패킷을 수신함으로써 시작한다. 일 실시예에서, 수신된 패킷은 사인-인 요청, 사인-아웃 요청, 업데이트 요청 등일 수 있다.
블록(1320)에서, 프로세스(1300)는 수신된 패킷이 업데이트 패킷이었는지를 판정한다. 상기에서 기술된 바와 같이, 업데이트 패킷은 프록시 서비스로의 업데이트를 요청하는 클라이언트로부터의 패킷이다. 예를 들어 그리고 일 실시예에서, 업데이트 요청 패킷은 클라이언트 IP 어드레스 또는 프록시 서비스와 관련된 다른 파라미터(예컨대, QoS 파라미터, 배터리 사용 파라미터 등)를 업데이트하도록 요청할 수 있다. 수신된 패킷이 업데이트 요청 패킷이었다면, 블록(1320)에서, 프로세스(1300)는 업데이트 요청 패킷에 포함된 정보를 이용하여 클라이언트 정보를 업데이트한다. 예를 들어 그리고 일 실시예에서, 업데이트 요청 패킷이 클라이언트 IP 어드레스를 업데이트하라는 요청을 포함하면, 프로세스(1300)는 도 10에서 상기에 설명된 바와 같이 클라이언트 IP 어드레스 정보를 업데이트한다. 다른 예 및 다른 실시예로서, 업데이트 요청 패킷이 어떤 다른 프록시 설정(예컨대, QoS 파라미터, 배터리 설정 등)을 업데이트하라는 요청을 포함하면, 프로세스(1300)는 도 10에서 상기에 설명된 바와 같이 이들 설정을 업데이트한다. 블록(1340)에서, 프로세스(1300)는 업데이트 응답을 클라이언트로 전송한다. 일 실시예에서, 요청된 업데이트를 확인응답하는 정보를 포함한다.
수신된 패킷이 업데이트 패킷이 아니라면, 프로세스(1300)는 블록(1350)에서 수신된 패킷이 사인-인 패킷인지 또는 사인-아웃 패킷인지를 판정한다. 일 실시예에서, 사인-인 요청은 프록시를 확립하는 데 이용될 수 있는 정보(예컨대, 클라이언트 식별, 클라이언트 IP 어드레스, 서버 IP 어드레스, QoS 파라미터, 배터리 최대화 등)를 포함하는 패킷이다. 일 실시예에서, 사인-아웃 요청은 도 10에서 상기에 설명된 바와 같이 프록시 서비스가 중지되어야 함을 나타내는 정보를 포함하는 패킷이다.
블록(1360)에서, 프로세스(1300)는 수신된 사인-인/사인-아웃 요청을 처리한다. 일 실시예에서, 수신된 패킷이 사인-인 요청이면, 프로세스(1300)는 사인-인 요청에 포함된 정보를 이용하여 클라이언트를 위한 프록시를 확립한다. 일 실시예에서, 수신된 패킷이 사인-아웃 요청이면, 프로세스(1300)는 사인-아웃 요청에 포함된 정보를 이용하여 프록시 서비스를 중지한다. 다른 실시예에서, 사인-아웃 요청은 킵 얼라이브 메시지를 전송함으로써 프록시 서비스가 프록시 기능을 계속해서 수행하고 수신된 응답을 버퍼링하도록 하는 요청을 포함한다. 예를 들어 그리고 일 실시예에서, 클라이언트는 (예컨대, 로밍 시에 비용을 감소시키기 위해) 데이터 특징부를 전력 차단하거나 턴 오프하고, 클라이언트는 사인-아웃 요청을 전송하고, 클라이언트는 프로세스(1300)가 푸시 메시지들을 계속해서 수신하고 이들을 버퍼링할 것을 요청할 수 있다. 또한 그리고 이러한 실시예에서, 프로세스(1300)는 클라이언트에 의해 지정되는 서비스에 대한 소정 메시지에 관하여 사용자에게 통지하기 위해 SMS 메시지를 클라이언트로 전송하는 로직을 가질 수 있다.
프로세스는 블록(1370)에서 대응하는 사인-인/사인-아웃 응답을 클라이언트로 전송한다. 일 실시예에서, 프로세스는 도 10에서 상기에 설명된 바와 같이 대응하는 요청을 전송한다. 실행은 상기의 블록(1310)으로 진행한다.
도 7은 본 발명의 일부 실시예에서 사용될 수 있는 예시적인 컴퓨터 시스템을 도시한 블록 다이어그램이다. 예를 들어, 컴퓨터 시스템(700)의 예시적인 아키텍처는 모바일 디바이스(예컨대, 모바일 디바이스(160, 904 또는 954))에 포함될 수 있다. 도 7이 컴퓨터 시스템의 다양한 콤포넌트들을 도시하지만, 그러한 상세사항이 본 발명과 밀접한 관련이 없기 때문에 그 콤포넌트들을 상호접속시키는 임의의 특정 아키텍처 또는 방식을 나타내도록 의도되지 않음이 이해되어야 한다. 보다 적은 콤포넌트 또는 보다 많은 콤포넌트를 갖는 다른 컴퓨터 시스템이 또한 본 발명에 사용될 수 있음이 이해될 것이다.
도 7에 도시된 바와 같이, 데이터 처리 시스템의 형태인 컴퓨터 시스템(700)은 프로세싱 시스템(720), 전력 공급장치(725), 메모리(730), 및 비휘발성 메모리(740)(예컨대, 하드 드라이브, 플래시 메모리, 상변화 메모리(PCM) 등)와 연결되는 버스(들)(750)를 포함한다. 버스(들)(750)는 당업계에 주지되어 있는 바와 같은 다양한 브리지, 제어기, 및/또는 어댑터를 통해 서로 접속될 수 있다. 처리 시스템(720)은 메모리(730) 및/또는 비휘발성 메모리(740)에서 명령어(들)를 검색할 수 있고, 그 명령어를 실행시켜 상기에 기술된 바와 같은 동작들을 수행할 수 있다. 버스(750)는 상기 콤포넌트들을 함께 상호접속시키고, 또한 그들 콤포넌트를 선택적 도크(760), 디스플레이 제어기 및 디스플레이 디바이스(770), 입력/출력 디바이스(780)(예컨대, 네트워크 인터페이스 카드(Network Interface Card: NIC), 커서 제어부(예컨대, 마우스, 터치스크린, 터치패드 등), 키보드 등), 및 선택적 무선 송수신기(들)(790)(예컨대, 블루투스, WiFi, 적외선 등)에 상호접속시킨다.
도 8은 본 발명의 일부 실시예에서 사용될 수 있는 예시적인 데이터 처리 시스템을 도시한 블록 다이어그램이다. 예를 들어, 데이터 처리 시스템(800)은 핸드헬드 컴퓨터, 개인 휴대 정보 단말기(PDA), 휴대 전화, 휴대용 게이밍 시스템, 휴대용 미디어 플레이어, 또는 휴대 전화, 미디어 플레이어, 및/또는 게이밍 시스템을 포함할 수 있는 핸드헬드 컴퓨터일 수 있다. 다른 예로서, 데이터 처리 시스템(800)은 네트워크 컴퓨터 또는 다른 디바이스 내의 내장형 처리 디바이스일 수 있다.
본 발명의 일 실시예에 따르면, 데이터 처리 시스템(800)의 예시적인 아키텍처는 모바일 디바이스(160) 내에 포함될 수 있다. 데이터 처리 시스템(800)은, 하나 이상의 마이크로프로세서 및/또는 집적 회로 상의 시스템을 포함할 수 있는 처리 시스템(820)을 포함한다. 프로세싱 시스템(820)은 메모리(810), 전력 공급장치(825)(하나 이상의 배터리를 포함함), 오디오 입력/출력(840), 디스플레이 제어기 및 디스플레이 디바이스(860), 선택적 입력/출력(850), 입력 디바이스(들)(870), 및 무선 송수신기(들)(830)와 연결된다. 도 8에 도시되지 않은 추가 콤포넌트가 또한 본 발명의 소정 실시예에서 데이터 처리 시스템(800)의 일부일 수 있고, 본 발명의 소정 실시예에서 도 8에 도시된 것보다 더 적은 콤포넌트가 사용될 수 있음이 이해될 것이다. 또한, 도 8에 도시되지 않은 하나 이상의 버스가 당업계에 주지된 바와 같은 다양한 콤포넌트들을 상호접속시키는 데 사용될 수 있음이 이해될 것이다.
메모리(810)는 데이터 처리 시스템(800)에 의한 실행을 위해 데이터 및/또는 프로그램을 저장할 수 있다. 오디오 입력/출력(840)은, 예를 들어 스피커 및 마이크로폰을 통해 음악을 재생하고/하거나 전화 기능을 제공하도록 마이크로폰 및/또는 스피커를 포함할 수 있다. 디스플레이 제어기 및 디스플레이 디바이스(860)는 그래픽 사용자 인터페이스(GUI)를 포함할 수 있다. 무선(예컨대, RF) 송수신기(830)(예컨대, WiFi 송수신기, 적외선 송수신기, 블루투스 송수신기, 무선 셀룰러 전화 송수신기 등)는 다른 데이터 처리 시스템과 통신하는 데 사용될 수 있다. 하나 이상의 입력 디바이스(870)는 사용자가 입력을 시스템에 제공하는 것을 허용한다. 이들 입력 디바이스는 키패드, 키보드, 터치 패널, 멀티 터치 패널 등일 수 있다. 선택적인 다른 입력/출력(850)은 도크용 커넥터일 수 있다.
도면에서의 흐름도가 본 발명의 소정 실시예에 의해 수행되는 동작들의 특정 순서를 보여주지만, 그러한 순서는 예시적임이 이해되어야 한다(예컨대, 대안적인 실시예는 상이한 순서로 그 동작들을 수행하고, 소정 동작들을 조합하고, 소정 동작들을 중첩시키고 등등을 할 수 있음).
본 발명이 몇몇 실시예의 관점에서 기술되었지만, 당업자는 본 발명이 기술된 실시예로 제한되지 않으며 첨부된 특허청구범위의 사상 및 범주 내의 수정 및 변경을 갖고서 실시될 수 있음을 인식할 것이다. 따라서, 본 설명은 제한 대신에 예시적인 것으로 간주되어야 한다.

Claims (20)

  1. 하나 이상의 처리 유닛으로 하여금 모바일 클라이언트와 통지 서비스의 통지 서버 사이의 통지 서비스를 프록싱(proxying)하는 방법을 수행하게 하는 실행가능 명령어들을 갖는 비일시적 기계 판독가능 매체로서, 상기 방법은,
    상기 모바일 클라이언트로부터 상기 통지 서비스를 위한 프록시 셋업 요청을 수신하는 단계 - 상기 프록시 셋업 요청은 상기 모바일 클라이언트의 배터리 수명을 최대화하는 것을 나타내는 배터리 수명 파라미터를 포함함 -;
    상기 모바일 클라이언트에 대해 상기 통지 서버와의 통지 접속을 확립하는 단계;
    상기 모바일 클라이언트의 애플리케이션 프로세서를 웨이킹(waking)함이 없이 상기 통지 서버와의 상기 통지 접속을 유지하는 단계;
    상기 통지 서비스로부터 통지를 수신하는 단계;
    상기 수신된 통지를 다른 통지와 번들링(bundling)하는 단계 - 상기 번들링은 상기 배터리 수명 파라미터에 대해 설정된 값에 기초함 -; 및
    상기 번들링된 통지들을 상기 모바일 클라이언트로 포워딩하는 단계를 포함하는, 비일시적 기계 판독가능 매체.
  2. 제1항에 있어서, 상기 통지 접속을 유지하는 단계는,
    통지 서비스 접속 메시지를 상기 통지 서버로 전송하는 단계; 및
    상기 통지 서버로부터의 응답을 수신하는 단계를 포함하는, 비일시적 기계 판독가능 매체.
  3. 제2항에 있어서, 상기 통지 서비스 접속 메시지는 PING 메시지 및 하이퍼텍스트 전송 프로토콜 요청으로 이루어진 군으로부터 선택되는, 비일시적 기계 판독가능 매체.
  4. 제2항에 있어서, 상기 응답은 상기 모바일 클라이언트를 위한 통지를 포함하는, 비일시적 기계 판독가능 매체.
  5. 제1항에 있어서, 상기 통지는 푸시 통지(push notification)인, 비일시적 기계 판독가능 매체.
  6. 제1항에 있어서, 상기 통지 접속을 확립하는 단계는,
    상기 프록시 셋업 요청에 대한 응답을 상기 모바일 클라이언트로 전송하는 단계를 포함하는, 비일시적 기계 판독가능 매체.
  7. 삭제
  8. 제1항에 있어서,
    상기 모바일 클라이언트로부터 업데이트 요청을 수신하는 단계; 및
    상기 업데이트 요청에 따라 모바일 클라이언트를 업데이트하는 단계를 추가로 포함하는, 비일시적 기계 판독가능 매체.
  9. 제8항에 있어서, 상기 업데이트 요청은 상기 모바일 클라이언트의 어드레스 변경을 포함하는, 비일시적 기계 판독가능 매체.
  10. 제1항에 있어서, 상기 모바일 클라이언트는 통신 기능을 수행하도록 제1 운영 체제에서 실행되는 제1 프로세서 및 제2 운영 체제에서 실행되는 제2 프로세서를 포함하고 상기 제2 프로세서는 중앙 프로세서이며, 상기 방법은 상기 제1 프로세서에 의해 수행되는, 비일시적 기계 판독가능 매체.
  11. 통지 서비스를 프록싱하기 위한 시스템으로서,
    상기 통지 서비스로부터 통지들을 수신하는 모바일 클라이언트;
    상기 통지 서비스를 위해 상기 통지들을 상기 모바일 클라이언트로 전송하는 통지 서버;
    상기 모바일 클라이언트에 대해 통지 요청들을 프록싱하는 푸시 프록시를 포함하며, 상기 푸시 프록시는 상기 모바일 클라이언트로부터 상기 통지 서비스를 위한 프록시 셋업 요청을 수신하고, 상기 모바일 클라이언트에 대해 상기 통지 서버와의 통지 접속을 확립하고, 상기 모바일 클라이언트의 애플리케이션 프로세서를 웨이킹함이 없이 상기 통지 서버와의 상기 통지 접속을 유지하고, 상기 통지 서비스로부터 통지를 수신하고, 상기 수신된 통지를 다른 통지와 번들링하고, 상기 번들링된 통지들을 상기 모바일 클라이언트로 포워딩하고,
    상기 프록시 셋업 요청은 상기 모바일 클라이언트의 배터리 수명을 최대화하는 것을 나타내는 배터리 수명 파라미터를 포함하고,
    상기 번들링은 상기 배터리 수명 파라미터에 대해 설정된 값에 기초하는 시스템.
  12. 제11항에 있어서, 상기 푸시 프록시는, 또한, 상기 통지 접속을 유지하기 위해, 통지 서비스 접속 메시지를 상기 통지 서버로 전송하고 상기 통지 서버로부터의 응답을 수신하는, 시스템.
  13. 제12항에 있어서, 상기 통지 서비스 접속 메시지는 PING 메시지 및 하이퍼텍스트 전송 프로토콜 요청으로 이루어진 군으로부터 선택되는, 시스템.
  14. 제12항에 있어서, 상기 응답은 상기 모바일 클라이언트를 위한 통지를 포함하는, 시스템.
  15. 제11항에 있어서, 상기 통지는 푸시 통지인, 시스템.
  16. 통지 서비스로부터 통지들을 수신하기 위한 디바이스로서,
    제1 운영 체제에서 실행되고 커맨드 기능을 수행하는 애플리케이션 프로세서; 및
    제2 운영 체제에서 실행되고 통신 기능을 수행하는 네트워크 접속성 요소(network connectivity element)를 포함하고, 상기 네트워크 접속성 요소는 푸시 프록시를 포함하며, 상기 푸시 프록시는 상기 애플리케이션 프로세서로부터 상기 통지 서비스를 위한 프록시 셋업 요청을 수신하고, 상기 디바이스에 대해 통지 서버와의 통지 접속을 확립하고, 상기 애플리케이션 프로세서를 웨이킹함이 없이 상기 통지 서버와의 상기 통지 접속을 유지하고, 상기 통지 서비스로부터 통지를 수신하고, 상기 수신된 통지를 다른 통지와 번들링하고, 상기 번들링된 통지들을 상기 애플리케이션 프로세서로 포워딩하도록 구성되고,
    상기 프록시 셋업 요청은 상기 디바이스의 배터리 수명을 최대화하는 것을 나타내는 배터리 수명 파라미터를 포함하고,
    상기 번들링은 상기 배터리 수명 파라미터에 대해 설정된 값에 기초하는 디바이스.
  17. 제16항에 있어서, 상기 푸시 프록시는, 상기 통지 접속을 유지하기 위해, 통지 서비스 접속 메시지를 상기 통지 서버로 전송하고 상기 통지 서버로부터의 응답을 수신하도록 추가로 구성되는, 디바이스.
  18. 제17항에 있어서, 상기 응답은 상기 디바이스를 위한 통지를 포함하는, 디바이스.
  19. 제16항에 있어서, 상기 푸시 프록시는, 통지 접속을 확립하기 위해, 상기 프록시 셋업 요청에 대한 응답을 상기 애플리케이션 프로세서로 전송하도록 추가로 구성되는, 디바이스.
  20. 삭제
KR1020147023128A 2012-01-20 2013-01-15 프록시 기반 푸시 서비스 KR101604561B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/355,441 US9749435B2 (en) 2012-01-20 2012-01-20 Proxy-based push service
US13/355,441 2012-01-20
PCT/US2013/021598 WO2013109550A1 (en) 2012-01-20 2013-01-15 Proxy-based push service

Publications (2)

Publication Number Publication Date
KR20140114054A KR20140114054A (ko) 2014-09-25
KR101604561B1 true KR101604561B1 (ko) 2016-03-17

Family

ID=47630560

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147023128A KR101604561B1 (ko) 2012-01-20 2013-01-15 프록시 기반 푸시 서비스

Country Status (7)

Country Link
US (1) US9749435B2 (ko)
EP (1) EP2795880B1 (ko)
JP (1) JP5837237B2 (ko)
KR (1) KR101604561B1 (ko)
CN (1) CN104054322B (ko)
TW (1) TWI468055B (ko)
WO (1) WO2013109550A1 (ko)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003058879A1 (en) 2002-01-08 2003-07-17 Seven Networks, Inc. Secure transport for mobile communication network
US9521625B2 (en) * 2008-09-15 2016-12-13 Apple Inc. Electronic devices for receiving pushed data
US8611895B2 (en) * 2009-10-30 2013-12-17 Apple Inc. Methods for optimizing paging mechanisms using device context information
US9749435B2 (en) * 2012-01-20 2017-08-29 Apple Inc. Proxy-based push service
CN102595577B (zh) * 2012-03-13 2017-12-26 深圳市中兴物联科技有限公司 一种终端待机唤醒后网络连接处理方法及ap和bp
GB201210600D0 (en) 2012-06-14 2012-08-01 Microsoft Corp Call invites
GB201210596D0 (en) 2012-06-14 2012-08-01 Microsoft Corp Notification of communication events
GB2504461B (en) 2012-06-14 2014-12-03 Microsoft Corp Notification of communication events
GB201210598D0 (en) * 2012-06-14 2012-08-01 Microsoft Corp Notification of communication events
WO2014030199A1 (ja) * 2012-08-20 2014-02-27 富士通株式会社 シームレスアプリプッシュシステム及びその方法
US20150296455A1 (en) * 2012-11-02 2015-10-15 Kyocera Corporation Mobile communication system, mobile terminal and mobile communication method
US9143550B2 (en) * 2012-12-01 2015-09-22 Qualcomm Innovation Center, Inc. Graceful degradation of websocket connections to nonpersistent HTTP-based communications
US8918529B1 (en) * 2013-03-15 2014-12-23 Mobile Iron, Inc. Messaging gateway
EP2930911B1 (en) * 2013-04-26 2019-06-19 Huawei Technologies Co., Ltd. Method and apparatus for controlling sending of heartbeat signal
US9503540B2 (en) * 2013-05-09 2016-11-22 Nokia Technologies Oy Method and apparatus for asynchronous distribution of content
EP3008943A4 (en) 2013-06-11 2017-02-22 Seven Networks, LLC Optimizing keepalive and other background traffic in a wireless network
US9342554B2 (en) * 2013-07-05 2016-05-17 Facebook, Inc. Techniques to generate mass push notifications
US9065765B2 (en) * 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US9900366B2 (en) 2013-09-17 2018-02-20 Amazon Technologies, Inc. Email webclient notification queuing
US9961027B2 (en) 2013-09-17 2018-05-01 Amazon Technolgies, Inc. Email webclient automatic failover
KR20150032018A (ko) * 2013-09-17 2015-03-25 삼성전자주식회사 전자 장치 및 전자 장치의 정보 전송 방법, 정보 전송 시스템
US10028309B2 (en) 2013-10-02 2018-07-17 Apple Inc. Cloud phone notifications
US10154106B2 (en) 2013-11-28 2018-12-11 Huawei Device (Dongguan) Co., Ltd. Method for sending heartbeat message and mobile terminal
CN104703146B (zh) * 2013-12-09 2019-03-08 腾讯科技(深圳)有限公司 信息推送方法、客户端及系统
EP2919418B1 (en) * 2014-03-13 2017-03-01 Alcatel Lucent Apparatuses, methods and computer program for a base station transceiver and for a mobile transceiver
US9961131B2 (en) 2014-04-25 2018-05-01 Microsoft Technology Licensing, Llc Enhanced reliability for client-based web services
US9277530B2 (en) * 2014-05-30 2016-03-01 Apple Inc. Delivery of push notifications to an inactive computing device
US9282516B2 (en) 2014-07-01 2016-03-08 Apple Inc. Cooperative power savings among mobile computing devices
US10743255B2 (en) * 2014-07-25 2020-08-11 Apple Inc. Power optimization modes for communication between device and server
US20160094659A1 (en) * 2014-09-25 2016-03-31 Ricoh Company, Ltd. Information processing system and information processing method
US20160099997A1 (en) * 2014-10-01 2016-04-07 Samsung Electronics Co., Ltd. Method and system for managing application data in a communication device
US10305736B2 (en) * 2014-12-18 2019-05-28 Telefonaktiebolaget Lm Ericsson (Publ) Methods, network nodes, and computer program products for price signal feedback for network optimization
CN104539678B (zh) * 2014-12-19 2018-08-07 百度在线网络技术(北京)有限公司 一种信息推送、接收方法和装置
US20160262205A1 (en) * 2015-03-06 2016-09-08 Apple Inc. Cloud support for discovery and data transfer for mobile client devices
JP6227583B2 (ja) * 2015-03-25 2017-11-08 Kddi株式会社 情報配信装置、プッシュ通知送信方法、及び、コンピュータプログラム
JP6251210B2 (ja) * 2015-03-25 2017-12-20 Kddi株式会社 端末装置、通信セッション確立方法、及び、プログラム
US9554239B2 (en) 2015-04-21 2017-01-24 Apple Inc. Opportunistic offloading of tasks between nearby computing devices
JP6584171B2 (ja) 2015-07-02 2019-10-02 キヤノン株式会社 通信装置、通信方法及びプログラム
KR101676653B1 (ko) * 2016-04-20 2016-11-17 주식회사 티맥스 소프트 Http 세션 정보 동적 유지 방법, 이를 사용한 웹 애플리케이션 서버 및 웹 서버
CN106028428A (zh) * 2016-04-27 2016-10-12 努比亚技术有限公司 一种信息处理方法及移动终端
TWI644257B (zh) * 2016-06-07 2018-12-11 三竹資訊股份有限公司 推播通知附帶設定參數之方法
US10520979B2 (en) 2016-06-10 2019-12-31 Apple Inc. Enhanced application preview mode
US10725761B2 (en) 2016-06-10 2020-07-28 Apple Inc. Providing updated application data for previewing applications on a display
US10521107B2 (en) 2016-09-24 2019-12-31 Apple Inc. Devices, methods, and graphical user interfaces for selecting and interacting with different device modes
WO2018072284A1 (zh) * 2016-10-18 2018-04-26 华为技术有限公司 一种业务通信方法及设备
CN107317723B (zh) * 2017-05-27 2021-01-05 北京金山安全软件有限公司 一种数据处理方法及服务器
CN107466094A (zh) * 2017-08-02 2017-12-12 努比亚技术有限公司 网络数据上报控制方法、协处理器、终端及存储介质
CN113490261B (zh) 2017-09-19 2024-06-18 联发科技(新加坡)私人有限公司 无线通信方法、通信设备及具有存储功能的装置
JP7085391B2 (ja) * 2018-04-11 2022-06-16 フォルシアクラリオン・エレクトロニクス株式会社 サーバ及び通信システム
DK201870335A1 (en) 2018-05-07 2019-12-04 Apple Inc. DEVICES, METHODS, AND GRAPHICAL USER INTERFACES FOR PROACTIVE MANAGEMENT OF NOTIFICATIONS
US10897500B2 (en) * 2018-10-03 2021-01-19 International Business Machines Corporation Synchronizing a device using push notifications
US11627049B2 (en) * 2019-01-31 2023-04-11 Hewlett Packard Enterprise Development Lp Failsafe firmware upgrade for cloud-managed devices
JP6806865B2 (ja) * 2019-09-03 2021-01-06 キヤノン株式会社 通信装置、通信装置の制御方法およびプログラム
CN110932845B (zh) * 2019-12-31 2021-12-03 山东英信计算机技术有限公司 一种代理端注册方法、系统及相关装置
US11750714B2 (en) * 2020-03-31 2023-09-05 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Fast resumption of dormant sessions on a client device
AU2020233622B2 (en) 2020-05-11 2022-03-10 Apple Inc. System, method and user interface for supporting scheduled mode changes on electronic devices
CN113132486A (zh) * 2021-04-20 2021-07-16 阿波罗智联(北京)科技有限公司 一种数据处理方法、装置、电子设备和介质
US11379106B1 (en) * 2021-05-12 2022-07-05 Apple Inc. Devices, methods, and graphical user interfaces for adjusting the provision of notifications
CN114979260B (zh) * 2022-05-12 2023-09-15 深圳市绿联科技股份有限公司 一种基于协议的通信方法、装置、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070299918A1 (en) * 2006-06-27 2007-12-27 Research In Motion Limited Electronic Mail Communications System with Client Email Internet Service Provider (ISP) Polling Application and Related Methods
US20090305732A1 (en) * 2008-06-06 2009-12-10 Chris Marcellino Managing notification service connections and displaying icon badges

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4230708A (en) 1977-10-20 1980-10-28 Stichting Rega V.Z.W. Therapeutic application of (S) -or (RS)-9-(2, 3-dihydroxypropyl) adenine for use as antiviral agents
US6463307B1 (en) * 1998-08-14 2002-10-08 Telefonaktiebolaget Lm Ericsson Method and apparatus for power saving in a mobile terminal with established connections
US6708206B1 (en) * 1999-06-15 2004-03-16 Nokia Corporation Apparatus, and associated method, for providing a client with messages
US7190956B2 (en) 2001-05-15 2007-03-13 Motorola Inc. Instant message proxy for circuit switched mobile environment
US7007064B2 (en) * 2002-08-02 2006-02-28 Motorola, Inc. Method and apparatus for obtaining and managing wirelessly communicated content
US8856346B2 (en) 2004-01-15 2014-10-07 Unwired Planet, Llc Stateful push notifications
US7742606B2 (en) * 2004-03-26 2010-06-22 Harman International Industries, Incorporated System for audio related equipment management
JP2005323285A (ja) * 2004-05-11 2005-11-17 Matsushita Electric Ind Co Ltd 移動体通信装置
KR100608582B1 (ko) 2004-08-28 2006-08-03 삼성전자주식회사 범용 플러그 앤 플레이 통신 방법 및 장치
US7532890B2 (en) * 2005-04-01 2009-05-12 Rockliffe Systems Content-based notification and user-transparent pull operation for simulated push transmission of wireless email
EP1775911B1 (en) 2005-10-13 2018-02-28 BlackBerry Limited System and method for providing asynchronous notifications using synchronous data
US7895309B2 (en) * 2006-01-11 2011-02-22 Microsoft Corporation Network event notification and delivery
JP4972980B2 (ja) * 2006-04-14 2012-07-11 富士通株式会社 データ通信プログラム、データ通信方法および携帯端末装置
JP4668879B2 (ja) 2006-09-22 2011-04-13 株式会社エヌ・ティ・ティ・ドコモ 通信端末及び端末制御方法
US20080293403A1 (en) * 2007-05-22 2008-11-27 Colin Shong Chin Quon Mobile communication service bridging
US20090143094A1 (en) * 2007-12-03 2009-06-04 Motorola, Inc. Method and Apparatus for Mode Switching in Dual-Core Mobile Communication Devices
US20100322122A1 (en) * 2008-02-05 2010-12-23 Telefonktiebolaget Lm Ericsson (Publ) Bundling of speech frames in cs over hspa networks
US7953808B2 (en) 2008-03-04 2011-05-31 Apple Inc. Automatic notification system and process
EP2254309A1 (en) 2009-05-20 2010-11-24 Thomson Licensing Method for sending data of a service
US8611895B2 (en) * 2009-10-30 2013-12-17 Apple Inc. Methods for optimizing paging mechanisms using device context information
US8335175B2 (en) 2010-04-07 2012-12-18 Qualcomm Incorporated Systems and methods for page delivery to a wireless client device in idle state
US9521621B2 (en) 2010-06-02 2016-12-13 Qualcomm Incorporated Application-proxy support over a wireless link
CN102316423B (zh) 2010-07-06 2014-03-12 华为技术有限公司 一种信息推送方法、装置和系统
CA2806549C (en) 2010-07-26 2014-10-28 Seven Networks, Inc. Context aware traffic management for resource conservation in a wireless network
US8843153B2 (en) * 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
CN202111746U (zh) 2011-07-07 2012-01-11 深圳市金立通信设备有限公司 一种实现移动终端信息推送的系统
US9515976B2 (en) * 2011-12-19 2016-12-06 Facebook, Inc. Proxied outgoing message transmission
US9148397B2 (en) * 2011-12-19 2015-09-29 Facebook, Inc. Messaging object generation for synchronous conversation threads
WO2013107505A2 (en) * 2012-01-18 2013-07-25 Telefonaktiebolaget L M Ericsson (Publ) Terminal battery aware scheduling
US9749435B2 (en) * 2012-01-20 2017-08-29 Apple Inc. Proxy-based push service
US9125158B2 (en) * 2012-02-06 2015-09-01 Qualcomm Incorporated Wideband detection of narrowband trigger signals
CN102595577B (zh) * 2012-03-13 2017-12-26 深圳市中兴物联科技有限公司 一种终端待机唤醒后网络连接处理方法及ap和bp
JP5962096B2 (ja) * 2012-03-16 2016-08-03 富士通株式会社 無線通信システム、端末、及び通信方法
GB201210598D0 (en) * 2012-06-14 2012-08-01 Microsoft Corp Notification of communication events
EP2701358B1 (en) * 2012-07-04 2020-09-09 Huawei Technologies Co., Ltd. Method, device, and system for implementing multimedia data recording
US8918529B1 (en) * 2013-03-15 2014-12-23 Mobile Iron, Inc. Messaging gateway
US9503540B2 (en) * 2013-05-09 2016-11-22 Nokia Technologies Oy Method and apparatus for asynchronous distribution of content
US9554239B2 (en) * 2015-04-21 2017-01-24 Apple Inc. Opportunistic offloading of tasks between nearby computing devices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070299918A1 (en) * 2006-06-27 2007-12-27 Research In Motion Limited Electronic Mail Communications System with Client Email Internet Service Provider (ISP) Polling Application and Related Methods
US20090305732A1 (en) * 2008-06-06 2009-12-10 Chris Marcellino Managing notification service connections and displaying icon badges

Also Published As

Publication number Publication date
JP2015513332A (ja) 2015-05-07
TW201338600A (zh) 2013-09-16
US20130190032A1 (en) 2013-07-25
US9749435B2 (en) 2017-08-29
KR20140114054A (ko) 2014-09-25
EP2795880A1 (en) 2014-10-29
WO2013109550A1 (en) 2013-07-25
JP5837237B2 (ja) 2015-12-24
CN104054322A (zh) 2014-09-17
EP2795880B1 (en) 2016-01-06
TWI468055B (zh) 2015-01-01
CN104054322B (zh) 2017-07-21

Similar Documents

Publication Publication Date Title
KR101604561B1 (ko) 프록시 기반 푸시 서비스
US10412678B2 (en) Managing notification service connections
US8396463B2 (en) Managing notification service connections and displaying icon badges
US10757653B2 (en) Electronic devices for receiving pushed data
US8904206B2 (en) Mobile computing device and method for maintaining application continuity
TWI538537B (zh) 資訊推送方法、客戶端裝置及其系統
KR101447792B1 (ko) Ussd 이동 방법 및 장치
US9554239B2 (en) Opportunistic offloading of tasks between nearby computing devices
CN102970155B (zh) 保持活动管理
US20110153728A1 (en) Synchronization of sporadic web poll traffic
JP2004234667A (ja) ネットワークインターフェースモジュール内の電力を管理するための方法および装置
KR101944556B1 (ko) 무선부에서의 절전 모드 제어 방법

Legal Events

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

Payment date: 20200218

Year of fee payment: 5