KR101510977B1 - 다중-사용자 장치를 위한 메시지 푸시 통지 클라이언트 개량 - Google Patents

다중-사용자 장치를 위한 메시지 푸시 통지 클라이언트 개량 Download PDF

Info

Publication number
KR101510977B1
KR101510977B1 KR1020137020721A KR20137020721A KR101510977B1 KR 101510977 B1 KR101510977 B1 KR 101510977B1 KR 1020137020721 A KR1020137020721 A KR 1020137020721A KR 20137020721 A KR20137020721 A KR 20137020721A KR 101510977 B1 KR101510977 B1 KR 101510977B1
Authority
KR
South Korea
Prior art keywords
application
user
server
notification
client
Prior art date
Application number
KR1020137020721A
Other languages
English (en)
Other versions
KR20130109229A (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 KR20130109229A publication Critical patent/KR20130109229A/ko
Application granted granted Critical
Publication of KR101510977B1 publication Critical patent/KR101510977B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4604LAN interconnection over a backbone network, e.g. Internet, Frame Relay
    • H04L12/462LAN interconnection over a bridge based backbone
    • H04L12/4625Single bridge functionality, e.g. connection of two networks over a single bridge
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/224Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/303Terminal profiles
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos

Abstract

다수의 사용자를 지원할 수 있는 클라이언트 장치 내의 클라이언트 애플리케이션을 식별하는 서브토픽 식별자를 생성하는 방법들 및 기기들이 설명된다. 클라이언트 애플리케이션은 하나 이상의 애플리케이션 서버에서 호스트되는 서버 애플리케이션과 연관될 수 있다. 통지 서비스들이 클라이언트 애플리케이션으로부터 애플리케이션 서버에 등록되어, 다수의 사용자 중 하나에 대한 클라이언트 애플리케이션과 관련된 식별자들을 서버 애플리케이션으로 전송하여, 서버 애플리케이션으로 하여금 그 사용자에 대한 클라이언트 애플리케이션에 대해 선택적으로 통지 메시지들을 클라이언트 장치로 푸시하는 것을 가능하게 할 수 있다. 애플리케이션 서버로부터 통지 메시지를 수신할 때, 통지 메시지가 클라이언트 애플리케이션의 서브토픽 식별자를 운반하는 경우에 통지 메시지는 클라이언트 장치 내의 다른 애플리케이션들을 호출하지 않고 그 사용자에 대한 클라이언트 애플리케이션으로 직접 전송되도록 검사될 수 있다.

Description

다중-사용자 장치를 위한 메시지 푸시 통지 클라이언트 개량{MESSAGE PUSH NOTIFICATION CLIENT IMPROVEMENTS FOR MULTI-USER DEVICES}
<관련 출원>
본 출원인은 2011년 1월 5일자로 출원되어 함께 계류중인 선행 가출원 제61/430,126호의 우선권의 이익을 주장하며, 그 전체가 참조로 포함된다.
<발명의 분야>
본 발명은 일반적으로 데이터 처리 시스템에 관한 것이다. 더 상세하게는, 본 발명은 다중 사용자 장치를 위한 통지 메시지에 관한 것이다.
다중 사용자 장치들(예로서, 랩탑, 팜탑, 이동 전화, 스마트폰, 멀티미디어 폰, 휴대용 미디어 플레이어, GPS 유닛, 이동 게임 시스템 등)의 사용자들은 통지 서비스들로부터 통지 메시지들을 주기적으로 수신하는 애플리케이션들을 설치할 수 있다. 예를 들어, 그러한 애플리케이션들은 "푸시" 이메일 서비스들(예로서, MobileMe, Microsoft Exchange ActiveSync, push-IMAP, Yahoo! Push 등) 또는 다른 푸시 서비스들(예로서, 업데이트/업그레이드 서비스, 뉴스 서비스, 웹로그 서비스, 팟캐스트 서비스, 소셜 네트워킹 서비스, 또는 통지 메시지들이 전송될 수 있는 다른 타입의 서비스)을 포함한다. 통상적으로, 통지 메시지들은 애플리케이션들에 의해 통상적으로 정의되는 관심 있는 이벤트들(예로서, 새로운 이메일 지시자, 새로운 뉴스 아이템 지시자, 새로운 팟캐스트 지시자, 소셜 네트워킹 친구의 온라인 상태의 변화 등)을 나타낸다.
통상적으로, 통지 메시지는 그의 대응하는 발신 서버 및 수신 클라이언트 장치를 식별함으로써 푸시 서비스를 통해 라우팅될 수 있다. 통지 메시지의 수신 시에, 클라이언트 장치는 메시지를 특정 사용자를 위한 타겟 클라이언트 애플리케이션으로 전달할 수 있다. 종종, 클라이언트 장치 내의 하나 이상의 사용자를 위한 다수의 클라이언트 애플리케이션이 동시에 동일 발신 서버로부터의 통지 메시지들을 기다릴 수 있다. 각각의 기다리는 애플리케이션은 통지 메시지가 도달할 때 호출될 수 있다. 클라이언트 장치 내의 계속 증가하는 수의 클라이언트 애플리케이션들을 지원하기 위해 점점 더 많은 서버 애플리케이션들이 발신 서버에서 호스트됨에 따라, 메시지 통지를 관리하기 위해 클라이언트 장치 내의 귀중한 처리 자원들이 소모될 수 있다.
따라서, 다중 사용자 장치들을 위한 메시지 통지를 제공하기 위한 기존의 메커니즘들은 자원들을 혹사시키고, 주어진 다중 사용자 장치 상의 다수의 사용자를 책임지지 못하며 그리고/또는 다른 문제들을 제기할 수 있다.
본 발명은 클라이언트 다중 사용자 장치에서 통지 메시지를 효율적으로 전달하여 자원 사용을 최소화하기 위해 개별 클라이언트 애플리케이션들 및 다수의 사용자에 어드레싱할 수 있는 지명 계층 구조들의 다수의 레벨을 제공할 수 있다. 서버 식별자 또는 토픽에 의해 식별되는 공통 서버에서 호스트되는 다수의 서버 애플리케이션이 동일 토픽을 공유하는 통지 메시지들을 클라이언트 장치로 푸시할 수 있다. 토픽에 가입한 타겟 클라이언트 애플리케이션을 식별하기 위해 클라이언트 장치에서 토픽에 대해 수신되는 통지 메시지 내에 서브토픽이 삽입될 수 있다.
일 실시예에서, 클라이언트 애플리케이션은 옵션으로서 클라이언트 애플리케이션 식별자를, 토픽에 의해 식별되는 서버에서 실행되는 대응하는 서버 애플리케이션 내에 서브토픽으로서 등록할 수 있다. 서브토픽은 클라이언트 애플리케이션에 대한 지명 계층 구조의 추가적인 레벨일 수 있다. 결과적으로, 서버에서 호스트되는 서버 애플리케이션으로부터 푸시되는 통지 메시지는 토큰 및 클라이언트 애플리케이션 식별자를 운반함으로써, 공유 토픽에 가입한 다른 클라이언트 애플리케이션들 또는 다른 사용자들을 호출하거나 통지하지 않고도 통지 메시지를 클라이언트 애플리케이션으로 직접 라우팅하는 것을 가능하게 할 수 있다. 통지 서버는 토큰을 이용하여, 메시지를 적절한 사용자 계정으로 라우팅할 수 있다. 토픽의 하나의 서버에 의해 호스트되는 개별 서버 애플리케이션들로부터의 다수의 통지 메시지는 클라이언트 장치에서 동일 토픽을 청취하는, 동일한 또는 상이한 사용자들에 대한 목적의 개별 클라이언트 애플리케이션들로 효과적으로 그리고 효율적으로 다중화되어, 수신된 통지 메시지들을 처리하는 데 필요한 클라이언트 장치의 자원 사용을 최소화할 수 있다.
일 실시예에서, 다중 사용자 클라이언트 장치 내의 클라이언트 애플리케이션을 식별하는 서브토픽 식별자를 생성하기 위한 방법 및 기기가 본 명세서에서 설명된다. 클라이언트 애플리케이션은 하나 이상의 애플리케이션 서버에서 호스트되는 서버 애플리케이션과 관련될 수 있다. 클라이언트 애플리케이션은 통지 서비스를 애플리케이션 서버에 등록하여 클라이언트 애플리케이션과 관련된 식별자들을 전송할 수 있으며, 서버 애플리케이션으로 하여금 클라이언트 애플리케이션에 대해 선택적으로 통지 메시지들을 해당 사용자에 대한 클라이언트 장치로 푸시하는 것을 가능하게 할 수 있다. 애플리케이션 서버로부터 통지 메시지를 수신할 때, 통지 메시지가 클라이언트 애플리케이션의 서브토픽 식별자를 운반하는 경우에 통지 메시지는 클라이언트 장치 내의 다른 애플리케이션들을 호출하지 않고도 클라이언트 애플리케이션으로 직접 전송되도록 검사 또는 조사될 수 있다.
다른 실시예에서는, 메시지 통지에 대한 등록 요청이 클라이언트 장치에서 실행되는 클라이언트 애플리케이션으로부터 제1 네트워크 접속을 통해 서버 애플리케이션에 의해 수신될 수 있다. 제1 네트워크 접속은 클라이언트 장치로부터 서버 애플리케이션을 호스트하기 위한 서버 식별자를 갖는 애플리케이션 서버로의 개시 시에 설정될 수 있다. 요청은 사용자 및 클라이언트 장치를 식별하는 사용자 토큰 및 클라이언트 애플리케이션을 식별하는 클라이언트 애플리케이션 식별자를 포함하는 식별자들을 운반할 수 있다. 서버 식별자는 클라이언트 장치로 전송되어, 클라이언트 장치로 하여금 애플리케이션 서버로부터 푸시되는 메시지들을 청취하게 할 수 있다. 일 실시예에서, 요청 내에서 운반되는 식별자들은 메시지 통지를 위해 사용자를 등록하기 위해 저장될 수 있다. 애플리케이션 서버는 클라이언트 애플리케이션에 통지하기 위해 사용자 토큰을 통해 클라이언트 장치와 결합된 푸시 네트워크에 대한 제2 네트워크 접속을 통해 통지 메시지들을 클라이언트 장치로 전송 또는 푸시할 수 있다. 통지 메시지들은 서버 식별자에 의해 식별될 수 있다. 옵션으로서, 통지 메시지들은 클라이언트 애플리케이션 식별자를 운반함으로써, 클라이언트 장치로 하여금 통지 메시지들을 클라이언트 애플리케이션으로 직접 전달하는 것을 가능하게 할 수 있다.
본 발명의 다른 특징들은 첨부 도면들로부터 그리고 이어지는 상세한 설명으로부터 명백할 것이다.
본 발명은 첨부 도면들에 한정이 아니라 예로서 도시되며, 도면들에서 동일한 참조 부호들은 유사한 요소들을 지시한다.
도 1a는 메시지 통지를 위한 네트워킹된 시스템들의 일 실시예를 나타내는 블록도이다.
도 1b는 다중 사용자 장치에 관한 사용자 계정을 갖는 사용자를 식별하는 데 사용되는 별명(alias)을 포함하는 사용자 토큰의 블록도이다.
도 2는 본 명세서에서 설명되는 실시예들에 따른, 통지 메시지들을 관리하기 위한 다중 사용자 장치 내의 예시적인 컴포넌트들을 나타내는 블록도이다.
도 3은 통지 메시지들을 제공하기 위한 애플리케이션 서버의 예시적인 컴포넌트들을 나타내는 블록도이다.
도 4는 본 명세서에서 설명되는 실시예들에 따른, 다중 사용자 장치와 애플리케이션 서버 사이의 예시적인 메시지 교환들을 나타내는 시퀀스 도면이다.
도 5a는 다중 사용자 장치로 하여금 통지 메시지를 식별된 클라이언트 애플리케이션으로 라우팅하는 것을 가능하게 하기 위한 프로세스의 일 실시예를 나타내는 흐름도이다.
도 5b는 통지 메시지를 사용자 토큰과 관련된 사용자에 대한 식별된 클라이언트 애플리케이션으로 라우팅하는 데 사용되는 사용자 토큰을 생성하기 위한 프로세스의 일 실시예를 나타내는 흐름도이다.
도 6은 애플리케이션 서버로부터 애플리케이션 클라이언트로 통지 메시지들을 제공하기 위한 프로세스의 일 실시예를 나타내는 흐름도이다.
도 7은 본 명세서에서 설명되는 실시예들과 함께 사용될 수 있는 데이터 처리 시스템의 일례를 나타낸다.
도 8은 본 명세서에서 설명되는 실시예들과 접합하여 사용될 수 있는 통상적인 컴퓨터 시스템의 일례를 나타낸다.
공통 애플리케이션 서버를 청취하거나 그에 가입함으로써 다중 사용자 장치 상의 다수의 사용자와 관련된 다수의 클라이언트 애플리케이션 중에서 타겟 클라이언트 애플리케이션을 식별하는 통지 메시지들을 위한 방법 및 기기가 본 명세서에서 설명된다. 아래의 설명에서는 본 발명의 실시예들의 더 충분한 설명을 제공하기 위해 다양한 상세들이 설명된다. 그러나, 본 발명의 실시예들은 이러한 특정 상세들 없이도 실시될 수 있다는 것이 이 분야의 기술자에게 명백할 것이다. 다른 예들에서는 본 발명의 실시예들을 불명확하게 하지 않기 위해 공지 구조들 및 장치들은 상세히 도시되지 않고 블록도 형태로 도시된다.
명세서에서 "하나의 실시예" 또는 "일 실시예"에 대한 참조는 그 실시예와 관련하여 설명되는 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 명세서 내의 다양한 곳들에서의 "일 실시예에서"라는 문구들의 출현들은 모두가 반드시 동일 실시예를 참조하지는 않는다.
구체적으로 달리 언급되지 않는 한, 설명 전반에서 "처리" 또는 "컴퓨팅" 또는 "계산" 또는 "결정" 또는 "표시" 등과 같은 용어들을 이용한 설명들은 컴퓨터 시스템의 레지스터들 및 메모리들 내에 물리(전자) 양들로서 표현된 데이터를 조작하고, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 그러한 정보 저장, 전송 또는 표시 장치들 내에 물리 양들로서 유사하게 표현되는 다른 데이터로 변환하는 데이터 처리 시스템 또는 유사한 전자 컴퓨팅 장치의 액션 및 프로세스들을 참조한다는 것을 이해한다.
본 명세서에서 제공되는 알고리즘들 및 디스플레이들은 어떠한 특정 컴퓨터 또는 다른 기기와도 고유하게 관련되지 않는다. 다양한 범용 시스템들이 본 발명의 가르침에 따른 프로그램들과 함께 사용될 수 있거나, 필요한 기계 구현 방법 동작들을 수행하도록 더 특수화된 기기를 구성하는 것이 편리한 것을 알 수 있다. 다양한 이러한 시스템들에 필요한 구조는 아래의 설명으로부터 나타날 것이다. 게다가, 본 발명의 실시예들은 임의의 특정 프로그래밍 언어와 관련하여 설명되지 않는다. 본 명세서에서 설명되는 바와 같은 본 발명의 실시예들의 가르침을 구현하기 위해 다양한 프로그래밍 언어들이 사용될 수 있다는 것을 알 것이다.
본 발명의 일 실시예는 방법으로서 또는 데이터 처리 시스템에 의해 실행될 때 시스템으로 하여금 방법을 수행하게 하는 실행 가능 명령어들을 저장하는 기계 판독 가능 비일시적 저장 매체로서 구현될 수 있다. 데이터 처리 시스템과 같은 기기도 본 발명의 일 실시예일 수 있다. 본 발명의 다른 특징들은 첨부 도면들로부터 그리고 이어지는 상세한 설명으로부터 명백할 것이다.
본 발명의 적어도 소정 실시예들은 미디어를 제공하기 위한 미디어 처리 시스템, 미디어를 저장하기 위한 저장 장치, 및 안테나 시스템 및 미디어 처리 시스템과 결합된 무선 주파수(RF) 송수신기(예로서, 셀룰러 전화용 RF 송수신기)를 포함할 수 있는 휴대용 음악 및/또는 비디오 미디어 플레이어와 같은 디지털 미디어 플레이어의 일부일 수 있다. 소정 실시예들에서는 원격 저장 장치에 저장된 미디어가 RF 송수신기를 통해 미디어 플레이어로 전송될 수 있다. 미디어는 예를 들어 음악 또는 다른 오디오, 정지 화상 또는 동화상 중 하나 이상일 수 있다.
휴대용 미디어 플레이어는 터치 스크린 입력 장치, 푸시버튼 장치, 이동식 포인팅 입력 장치 또는 다른 입력 장치와 같은 미디어 선택 장치를 포함할 수 있다. 미디어 선택 장치는 저장 장치 및/또는 원격 저장 장치에 저장된 미디어를 선택하는 데 사용될 수 있다. 휴대용 미디어 플레이어는 적어도 소정 실시예들에서 입력 장치를 통해 선택되고 스피커 또는 이어폰(들)을 통해 또는 디스플레이 장치 상에 또는 디스플레이 장치 및 스피커 또는 이어폰(들) 양자에 제공되는 미디어의 타이틀들 또는 다른 지시자들을 표시하기 위해 미디어 처리 시스템에 결합되는 디스플레이 장치를 포함할 수 있다.
본 명세서에서 설명되는 본 발명의 실시예들은 예를 들어 엔터테인먼트 시스템 또는 개인용 휴대 단말기(PDA), 또는 범용 컴퓨터 시스템, 또는 특수 목적 컴퓨터 시스템, 또는 다른 장치 내에 내장된 장치, 또는 미디어 플레이어를 포함하지 않는 셀룰러 전화, 또는 이러한 장치들의 양태들 또는 기능들을 결합하는 장치(예로서, 하나의 휴대용 장치 내에서 PDA, 엔터테인먼트 시스템 및 셀룰러 전화와 결합된 iPod®과 같은 미디어 플레이어), 또는 다중 터치 핸드헬드 장치와 같은 다중 터치 입력 장치 또는 다중 터치 입력 장치를 갖는 셀 폰 및 핸드헬드 컴퓨터를 포함하는 장치 또는 소비자 전자 제품과 같은 다른 타입의 데이터 처리 시스템들의 일부일 수 있다.
일 실시예에서, 메일 서버, 인터넷 액세스 메시지 프로토콜(IMAP) 서버, 달력 서버, 콘택 서버, 장치 관리 서버 또는 다른 적용 가능한 서버 애플리케이션 등과 같은 서버 애플리케이션을 호스트하는 서버는 통지들을 클라이언트 장치들로 전송하기 위해 서비스 당국(예로서, 애플사)으로부터 푸시 제공자 증명서를 요구함으로써 푸시 능력을 유지할 수 있다. 클라이언트 장치에서 실행되고 복수의 사용자 중 하나에 대응하는 클라이언트 애플리케이션은 클라이언트 장치로부터 애플리케이션 서버로 설정된 접속을 통해 대응하는 서버 애플리케이션을 호스트하는 애플리케이션 서버의 능력들을 조회할 수 있다. 조회 결과가 애플리케이션 서버가 푸시 서비스를 알거나 푸시 서비스를 제공할 수 있다는 것을 지시하는 경우, 클라이언트 애플리케이션은 그 자신을 서버 애플리케이션에 식별시키기 위해 푸시 서비스 명령을 전송할 수 있다.
구체적으로, 클라이언트 장치에서 실행되는 클라이언트 애플리케이션은 푸시 서비스 명령을 통해 사용자 및 클라이언트 장치의 사용자 토큰을 서버 애플리케이션에 제공하여, 서버 애플리케이션을 호스트하는 서버로 하여금 메시지들 또는 통지들을 클라이언트 장치의 적절한 사용자 계정으로 푸시하게 할 수 있다. 푸시 서비스 명령에 응답하여, 서버 애플리케이션은 클라이언트 장치가 서버로부터 푸시된 메시지들을 수신하기 위해 청취하거나 주시할 수 있는 서버에 대한 통지 토픽 또는 식별자를 식별할 수 있다.
일부 실시예들에서, 클라이언트 애플리케이션으로부터 서버 애플리케이션으로의 푸시 서비스 명령은 대응하는 애플리케이션을 위한 푸시 프로토콜의 버전 번호, 계정 식별자, (예로서, 서버 애플리케이션을 실행하는) 서버로 하여금 클라이언트 애플리케이션을 호스트하는 대응하는 사용자의 클라이언트 장치와 접촉하는 것을 가능하게 하기 위한 사용자 토큰 및/또는 클라이언트 애플리케이션을 식별하는 서브토픽 식별자와 같은 지명된 값 쌍들을 포함할 수 있다. 계정 식별자 및/또는 서브토픽 식별자는 서버에 불투명하게 유지되어 푸시 서비스(또는 푸시 서버)로 전송될 수 있다. 클라이언트 애플리케이션에 대한 클라이언트 장치로의 통지 메시지들은 계정 식별자 및 서브토픽 식별자를 운반할 수 있다.
일 실시예에서, 서버 애플리케이션으로부터 클라이언트 애플리케이션으로의 푸시 서비스 명령에 대한 응답은 푸시 프로토콜의 버전 번호 및 서버 애플리케이션을 호스트하는 서버와 관련된 토픽 식별자를 포함하는 지명된 값들을 포함할 수 있다. 토픽 식별자는 서버로 하여금 클라이언트 애플리케이션을 실행하는 클라이언트 장치의 사용자의 사용자 계정으로 통지 메시지들을 푸시하는 것을 가능하게 하기 위해 서버에 대한 제공자 증명서를 등록하는 데 사용될 수 있다. 소정 실시예들에서, 클라이언트 장치 및 서버는 예를 들어 푸시 서비스 명령/응답을 통해 핸드쉐이크 교환들을 수행하여, 서버 애플리케이션으로부터 클라이언트 애플리케이션으로의 메시지 통지를 위한 푸시 프로토콜의 버전을 협상할 수 있다(예를 들어, 서버 및 클라이언트 애플리케이션들 양자에 대한 최고 지원 버전을 식별할 수 있다).
일 실시예에 따르면, 클라이언트 애플리케이션들에 대한 서브토픽은 애플리케이션 서버와 관련된 토픽의 최상부에 인디렉션(indirection)의 하나 이상의 추가 레벨을 제공할 수 있다. 예를 들어, 서브토픽은 클라이언트 애플리케이션을 타겟으로 하는 통지 메시지들을 지향시킬 수 있다. 클라이언트 애플리케이션은 토픽 및 서브토픽 쌍에 대해 등록할 수 있다. 대안으로서, 클라이언트 애플리케이션 및 애플리케이션 서버는 서브토픽 기반 메커니즘을 통해 단단히 결합되지 않을 수 있다. 다수의 (클라이언트) 애플리케이션이 토픽 내의 공통 서브토픽에 대해 등록할 수 있다. 게다가, 클라이언트 애플리케이션은 하나 이상의 사용자에 대해 서브토픽을 등록할 수 있다.
서브토픽은 등록을 위해 클라이언트 애플리케이션으로부터 서버 애플리케이션으로 전송될 수 있다. 소정 실시예들에서, 지명 계층 구조들의 서브토픽 또는 다른 레벨들은 클라이언트 애플리케이션에 의한 서브토픽의 전송 필요 없이 서버 애플리케이션에 대한 클라이언트 애플리케이션에 대해 등록될 수 있다.
예를 들어, 일 실시예에 따르면, 콘택 애플리케이션, 달력 애플리케이션 및 워드 애플리케이션은 오피스 애플리케이션 모음에 속할 수 있다. 콘택 애플리케이션은 하나 이상의 사용자에 대해 서브토픽 "콘택"을 일반 토픽 "오피스" 아래에 등록할 수 있다. 달력 애플리케이션은 더 양호한, 더 최신의 사용 경험을 제공하기 위해, 예를 들어 생일을 추가하기 위해 콘택 애플리케이션에 대한 것과 정확히 동일한 서브토픽(즉, "콘택") 및 토픽 쌍(즉, "콘택" 및 "오피스")에 대해 등록하기로 선택할 수 있다. 그러나, 워드 애플리케이션은 서브토픽 "콘택"에 대해 등록하지 않고 일반 토픽 "오피스" 아래에 등록할 수 있다. 따라서, 서브토픽에의 등록은 특정 애플리케이션에 대한 (또는 타겟 특정 애플리케이션으로의) 일대일 맵핑을 반드시 실시하는 것은 아닐 수 있다. 서버는 서브토픽 정보를 알거나 클라이언트와 공유할 필요가 없을 수 있다. 예를 들어, 서버는 콘택 데이터의 변경을 특정 서브토픽, 예를 들어 "콘택"과 연관시키고, 푸시 프로토콜에 대한 서브토픽을 고유 메커니즘으로 사용할 수 있다.
다른 예로서, 콘택 애플리케이션은 다중 사용자 장치 상의 각각의 사용자의 개별 인스턴스들에 대한 통지들에 등록한다. 이 예에서, 콘택 애플리케이션은 다중 사용자 장치의 사용자 1, 사용자 2,..., 사용자 N에 대한 개별 통지 요청들을 등록할 수 있다. 이것은 사용자 1이 사용자 2,..., 사용자 N과 관련된 콘택 애플리케이션에 대한 통지가 아니라 콘택 애플리케이션의 사용자 1의 사용자에 대한 통지들을 획득하기를 원할 것이기 때문이다.
도 1a는 메시지 통지를 위한 네트워킹된 시스템들의 일 실시예를 나타내는 블록도이다. 네크워킹된 시스템들(100)은 애플리케이션 서버(101)와 같은 하나 이상의 서버(또는 호스트), 브리지(119), 네트워크들(107)을 통해 다중 사용자 장치(109)(예로서, 개인용 컴퓨터, 랩탑, 테이블, 스마트폰, 게임 장치 등)와 같은 하나 이상의 장치에 결합된 통지 서버(105), 예로서 APN 서버를 포함할 수 있다. 일 실시예에서, 네트워크(107)는 오픈 인터넷, 인트라넷, 방화벽 보호 보안 네트워크, 광역 셀룰러 네트워크(예로서, 3G 네트워크) 등을 통해 통지 서버(105), 다중 사용자 장치(109) 및/또는 애플리케이션 서버(101) 사이의 (예로서, 푸시 통지를 전송하기 위한) 네트워크 접속들을 허가할 수 있다. 네트워크들(107)은 유선, 무선(Wi-Fi, 블루투스 등) 또는 이 둘의 조합일 수 있다.
일 실시예에 따르면, 애플리케이션 서버(101)는 하나의 단일 서버 장치 또는 국지적으로 또는 원격적으로 분산된 서버 장치들의 클러스터를 포함할 수 있다. 애플리케이션 서버(101)는 다중 사용자 장치(109)와 같은 클라이언트 장치들에서 실행되는 대응하는 클라이언트 애플리케이션들을 서빙하는 서버 애플리케이션(117)과 같은 하나 이상의 개별 서버 애플리케이션을 호스트할 수 있다. 서버 애플리케이션들은 메일 서버, 달력 서버, 콘택 서버, 장치 관리 서버 또는 다른 적용 가능한 서버 애플리케이션들을 포함할 수 있다. 일 실시예에서, 애플리케이션 서버(101)는 통지 메시지들을 다중 사용자 장치(109)로 푸시 또는 전송하기 위해 통지 서버(105)로부터의 증명서를 등록할 수 있다. 등록은 애플리케이션 서버(101)를 식별하는 (예를 들어, 등록된 증명서 내에 포함되는) 식별자로서 토픽(103)을 할당할 수 있다. 다중 사용자 장치(109)는 다중 사용자 장치(109) 상에 계정들을 갖는 사용자들 중 하나 이상을 위해 통지 서버(105)에 의해 제공되는 애플사로부터의 APN 서비스와 같은 푸시 서비스를 통해 애플리케이션 서버(101)로부터 개시되는 메시지들을 위해 토픽(103)을 청취할 수 있다.
일 실시예에서, 애플리케이션 서버(101)는 브리지(119)를 통해 푸시 통지들을 전송한다. 일 실시예에서, 브리지(119)는 푸시 통지들을 하나의 포맷으로부터 다른 포맷으로 변환하는 데 사용된다. 일 실시예에서, 브리지(119)는 통지 서버(105)로부터 푸시 통지 요청을 수신하고 그 푸시 통지 요청을 애플리케이션 서버(101)가 이행할 수 있는 프로토콜로 변환함으로써 다중 사용자 클라이언트(109)에 대한 프록시의 역할을 한다. 더구나, 애플리케이션 서버(101)는 애플리케이션 서버에 의해 사용되는 고유 프로토콜에서 다중 사용자 클라이언트(109)를 향하는 푸시 통지들을 전송한다. 브리지(119)는 이 푸시 통지들을 수신하고, 이 통지들을 다중 사용자 요구들에 적합한 포맷으로 변환한다(예를 들어, 애플 푸시 통지(APN) 서비스 등). 예를 들어 그리고 일 실시예에서, 애플리케이션 서버(101)는 푸시 통지 요청들을 수신하고, 확장형 메시징 및 존재 프로토콜(XMPP)을 이용하여 푸시 통지들을 전송하며, 다중 사용자 장치(109))는 상이한 프로토콜(예로서, APN 프로토콜 등)을 이용하여 푸시 통지들(푸시 통지 요청들)을 수신(전송)한다.
일 실시예에서, 브리지(119)는 애플리케이션 서버(101)로부터의 푸시 통지들에 가입한 다중 사용자 클라이언트들 및/또는 단일 사용자 클라이언트들로부터의 사용자들의 리스트를 유지한다. 이 실시예에서, 애플리케이션 서버(101)는 브리지(119)가 그러한 사용자들 중 하나 이상인 것처럼 브리지(119)와 상호작용한다. 이어서, 브리지(119)는 다중 사용자 장치(109) 및/또는 단일 사용자 클라이언트들의 대응하는 사용자 계정들과 상호작용하여, 사용자들에 대한 푸시 통지를 이행한다.
일 실시예에서, 다중 사용자 장치(109)는 하나 이상의 사용자 계정(114A-B)을 호스트할 수 있다. 일 실시예에서는 다중 사용자 장치(109)가 2개의 사용자 계정을 갖는 것으로 도시되지만, 대안 실시예들에서 다중 사용자 장치(109)는 더 적거나 많은 사용자 계정을 가질 수 있다. 일 실시예에서, 사용자는 다중 사용자 장치(109)를 사용하는 사람이다. 사용자는 사용자 계정을 이용하여 다중 사용자 장치(109)를 사용할 수 있다. 일 실시예에서, 사용자 계정은 다중 사용자 장치(109)를 해당 사용자를 위해 맞춤화하는 데 사용된다. 예를 들어 그리고 일 실시예에서, 사용자는 사용자 계정을 이용하여, 사용자의 파일 시스템 환경, 데스크탑, 애플리케이션 등에 대한 특정 설정들을 생성한다. 이 실시예에서, 사용자는 사용자 계정을 이용하여, 그 사용자에 의한 특정 사용을 위해 애플리케이션을 셋업할 수 있다. 예를 들어 그리고 일 실시예에서, 사용자 1은 메일 애플리케이션을 셋업할 수 있으며, 따라서 사용자 1은 다른 사용자들이 아니라 사용자 1에 대한 이메일들을 볼 것이다.
대안 실시예에서, 다중 사용자 장치(109)가 사용하는 동일 프로토콜에서 통신하는 애플리케이션 서버들(101)의 경우, 애플리케이션 서버(101)는 브리지(119)를 통하지 않고 푸시 통지들을 통신한다.
일 실시예에서, 다중 사용자 클라이언트(109)는 애플리케이션(111A-B)을 포함하는 다수의 클라이언트 애플리케이션을 호스트할 수 있다. 일 실시예에서, 각각의 사용자(114A-B)는 통지 서버(105)와 관련하여 사용될 수 있는 하나 이상의 애플리케이션(111A-B)과 관련될 수 있다. 클라이언트 애플리케이션은 대응하는 서버 애플리케이션에 의해 서빙될 수 있는 메일 애플리케이션, 달력 애플리케이션, 콘택 애플리케이션, 장치 관리 애플리케이션 또는 다른 적용 가능한 클라이언트 애플리케이션일 수 있다. 다중 사용자 장치(109)는 예를 들어 통지 서버(105)를 통해 푸시 서비스에 등록하여, 다중 사용자 장치(109)로 하여금 푸시 서비스를 통해 애플리케이션 서버(101)와 같은 서버로부터 푸시되는 메시지들을 수신할 수 있게 하기 위한 장치 토큰(115)을 획득할 수 있다. 장치 토큰(115)은 푸시 서비스를 통해 통지 메시지들을 라우팅하기 위한 다중 사용자 장치(109)를 식별 및/또는 증명할 수 있다. 게다가, 서브토픽(들)(113A-B)이 장치 내의 상이한 클라이언트 애플리케이션들 및/또는 사용자들 중에서 애플리케이션(111A-B)을 고유하게 식별하기 위해 다중 사용자 장치(109) 내의 각각의 사용자 계정(114A-B) 인스턴스에 대해 생성될 수 있다. 더구나, 다중 사용자 장치(109)는 각각의 사용자(116A-B)에 대한 사용자 토큰(114A-B)을 각각 요청할 수 있다. 일 실시예에서, 사용자 토큰(114A-B)은 푸시 통지들을 위해 사용자(116A-B)를 각각 고유하게 식별하는 데 사용된다.
일 실시예에서, 애플리케이션(111A-B)은 통지 메시지들을 다중 사용자 장치(109)로 푸시하기 위한 애플리케이션 서버(101)의 대응하는 서버 애플리케이션(117)으로 각각의 사용자 토큰(114A-B) 및 서브토픽(113A-B)을 전송할 수 있다. 이어서, 애플리케이션 서버(101)는 애플리케이션 서버(101)로부터 푸시되는 통지 메시지들의 수신에 귀를 기울이는 다중 사용자 장치(109)에 대해 토픽(103)으로 응답할 수 있다. 통지 메시지들은 서브토픽(113A-B) 및/또는 사용자 토큰(114A-B)을 삽입하여, 다중 사용자 장치(109)로 하여금 다른 클라이언트 애플리케이션을 호출하거나 장치 내의 다른 사용자 계정에 통지하지 않고 메시지들을 서브토픽(113A-B) 및/또는 사용자 토큰(114A-B)에 의해 식별되는 사용자(116A-B) 및 애플리케이션(111A-B) 조합으로 직접 전달하게 할 수 있다.
도 1b는 다중 사용자 장치에 관한 사용자 계정을 갖는 사용자를 식별하는 데 사용되는 별명(alias)을 포함하는 사용자 토큰(114A)의 블록도이다. 도 1b에서, 사용자 토큰(114A)은 장치 식별자(130), 구역 정보(134), 별명(136) 및 패딩(padding) 데이터(138)를 포함한다. 장치 식별자(130)는 다중 사용자 장치(109)를 식별하는 데 사용되는, 이 분야에 공지된 바와 같은 식별자이다. 사용자 토큰(114A) 내에 장치 식별자(130)를 포함시킴으로써, 사용자(116A)는 다중 사용자 장치(109)와 연관된다. 일 실시예에서, 장치 식별자(134)는 장치 토큰(115)에서 사용되는 것과 동일한 식별자이다. 장치 식별자는 장치 증명서, 하드웨어 식별자, 이 분야에 알려진 바와 같은 소정의 다른 장치 식별 데이터 등 및/또는 이들의 조합일 수 있다.
일 실시예에서, 구역 정보(134)는 사용자(116A)를 통지 시스템의 특정 구역에 연관시키는 식별자이다. 일 실시예에서, 구역은 통지 시스템의 일부분이며, 통지 시스템은 하나 이상의 구역으로 구성될 수 있고, 동일 구역 내의 통지 클라이언트들(예로서, 다중 사용자 장치(109), 다른 통지 클라이언트 등) 각각은 그 구역에 대한 하나 이상의 통지 서버에 의해 처리된다. 일 실시예에서, 통지 서버(105)는 구역 정보를 이용하여, 푸시 통지를 그 구역을 처리하고 있는 적절한 통지 서버로 전송한다. 예를 들어 그리고 일 실시예에서, 통지 서버(105)가 구역 1에 대한 푸시 통지들을 처리하고, 이 통지 서버가 애플리케이션 서버(109)로부터 구역 2에 대한 푸시 통지를 수신하는 경우, 통지 서버(105)는 이 푸시 통지를 구역 2에 대한 푸시 통지들을 처리하는 다른 통지 서버(도시되지 않음)로 전송할 것이다.
게다가, 사용자 토큰(116A)은 별명(136)을 포함한다. 일 실시예에서, 별명(136)은 다중 사용자 장치의 사용자를 식별하는 데 사용된다. 이 실시예에서, 다중 사용자 머신(109) 상에 존재하는 각각의 사용자 및 대응하는 사용자 계정에 대한 고유 별명이 존재한다. 예를 들어 그리고 일 실시예에서, 다중 사용자 장치 상에 2개의 사용자 계정이 존재하는 경우, 두 사용자 각각에 대한 고유 별명들이 존재할 것이다. 별명(136)은 난수, 사용자 증명서로부터 도출된 열거된 수 등일 수 있다. 일 실시예에서, 별명(136)은 사용자 토큰(116A) 내의 4 바이트 필드이다. 일 실시예에서, 별명(136)은 사용자 계정을 표현하는 데 사용되고 푸시 통지를 위해 장치 식별자 대신 사용될 수 있는 장치의 별명이다.
더구나, 사용자 토큰(116A)은 패딩 데이터(138)를 포함할 수 있다. 일 실시예에서, 패딩 데이터(136)는 토큰(116A)의 사용에 중요하지 않고 토큰(116A) 내의 공간 및/또는 미래의 사용을 위한 토큰(116A) 내의 예약 공간을 채우는 데 사용되는 데이터이다.
도 2는 본 명세서에서 설명되는 실시예들에 따른, 통지 메시지들을 관리하기 위한 다중 사용자 장치(109) 내의 예시적인 컴포넌트들을 나타내는 블록도이다. 예를 들어, 다중 사용자 장치(109)는 다수의 사용자(116A-B)에 대해 도 1a의 네트워크 시스템들(100)을 통해 푸시 서비스에 등록할 수 있다. 일 실시예에서, 통지 관리 모듈(201)은 다중 사용자 장치(109) 내에 푸시 서비스를 위한 프레임워크를 제공할 수 있다. 통지 관리 모듈(201)은 서비스(예로서, 푸시 서비스) 접속 프로세스 동안 장치 토큰(115)을 수신하여, 다중 사용자 장치(109)를 푸시 서비스를 통해 푸시되는 통지 메시지들을 수신하도록 증명되거나 신뢰된 것으로서 식별할 수 있다. 더구나, 통지 관리 모듈(201)은 서비스(예로서, 푸시 서비스) 접속 프로세스 동안 사용자 토큰들(114A-B)을 수신하여, 사용자들(116A-B)을 각각 푸시 서비스를 통해 푸시되는 통지 메시지들을 수신하도록 증명되거나 신뢰된 것으로서 식별할 수 있다. 일 실시예에서, 통지 관리 모듈(201)은 푸시 서비스로부터 푸시된 메시지가 사용자 토큰(114A-B)과 매칭되거나 그를 포함하는지에 따라 메시지가 다중 사용자 장치(109)의 사용자(116A-B)를 향하는 것인지를 결정할 수 있다.
일 실시예에 따르면, 통지 관리 모듈(201)은 예를 들어 애플리케이션들(111A-B)로부터의 요청에 응답하여 하나 이상의 서브토픽(113A-B)을 다중 사용자 장치(109) 내의 애플리케이션들(111A-B)을 식별하는 클라이언트 애플리케이션 식별자로서 생성할 수 있다. 애플리케이션들(111A-B)은 도 1의 서버 애플리케이션(117)과 같은 대응하는 서버 애플리케이션으로부터 메시지 통지를 수신하기 위해 등록할 서브토픽(113A-B) 및 대응하는 사용자 토큰(114A-B)을 전송할 수 있다. 일 실시예에서, 애플리케이션(111A-B)은 통지 관리 모듈(201)을 통해 도 1의 토픽(103)과 같은 토픽에 가입하거나 청취할 수 있다. 다중 사용자 장치(109) 내의 둘 이상의 애플리케이션(111A-B)이 공통 토픽에 등록하거나 가입할 수 있다. 더구나, 다중 사용자 장치(109)에서 상이한 사용자들(114A-B)에 의해 사용되는 애플리케이션들(111A-B)이 공통 토픽에 등록 또는 가입할 수 있다. 통지 관리 모듈(201)은 어느 토픽이 현재 어느 애플리케이션 및 어느 사용자에 의해 가입되고 있는지를 지시하는 토픽 가입 데이터를 가입 프로파일(203) 내에 저장할 수 있다. 일 실시예에서, 통지 관리 모듈(201)은 각각의 사용자 토큰(116A-B)에 대해 상이한 가입 프로파일(302)을 가질 수 있다. 이 실시예에서, 다중 사용자 장치(109)는 상이한 가입 프로파일들을 해당 사용자 토큰(116A-B)에 대응하는 사용자(114A-B)와 각각 연관시킨다.
푸시 서비스를 통해 푸시되는 통지 메시지의 수신 시에, 통지 관리 모듈(201)은 도달한 통지 메시지로부터 토큰을 추출하여, 예를 들어 토큰과 사용자 토큰(116A 또는 116B) 사이의 매치에 기초하여 통지 메시지가 다중 사용자 장치(109)를 향하는지를 결정할 수 있다. 통지 관리 모듈(201)은 수신된 통지 메시지로부터 토픽을 식별하여, 가입 프로파일(203)에 따라 어느 클라이언트 애플리케이션들 및 어느 사용자 계정이 수신된 통지 메시지로 통지되어야 하는지를 식별할 수 있다. 옵션으로서, 통지 관리 모듈(201)은 수신된 통지 메시지에 포함된 토픽에 또한 가입한 다른 애플리케이션들을 호출하거나 그들에 통지하지 않고, 서브토픽(113A-B)에 의해 식별되는 애플리케이션(111A-B)과 같은, 서브토픽 스트링에 의해 식별되는 클라이언트 애플리케이션으로 직접 수신된 통지 메시지를 전달하기 위해 수신된 통지 메시지가 서브토픽(예로서, 스트링)을 운반하는지를 결정할 수 있다.
일 실시예에서, 통지 관리 모듈(201)은 상이한 사용자들(114A-B) 각각에 대한 화이트리스트 및/또는 블랙리스트를 유지할 수 있다. 이 실시예에서, 화이트리스트는 이동 장치의 사용자가 통지 메시지들을 수신하기를 원하는 설치된 애플리케이션들에 대응하는 애플리케이션 식별자들의 리스트이다. 더구나, 블랙리스트는 이동 장치의 사용자가 통지 메시지들을 수신하기를 원하지 않는 설치된 애플리케이션들에 대응하는 애플리케이션 식별자들의 리스트이다. 화이트리스트/블랙리스트의 유지 및 사용은 2009년 2월 24일자로 출원되고 본 명세서에 참고로 포함된 "Managing Notification Messages"라는 제목의 미국 특허 출원 제12/392,679호에 상세히 설명되어 있다.
도 3은 통지 메시지들을 제공하기 위한 애플리케이션 서버의 예시적인 컴포넌트들을 나타내는 블록도이다. 예를 들어, 애플리케이션 서버(101)는 통지 메시지들을 도 1의 네트워크 시스템들(100)을 통해 통지 서버(105)를 경유하여 클라이언트 장치들로 푸시할 수 있다. 일 실시예에서, 통지 모듈(301)은 애플리케이션 서버(101)를 식별하기 위한 토픽(103)을 푸시 서비스의 당국으로부터 수신되는 증명서의 일부로서 수신할 수 있다. 서버 애플리케이션(117)은 예를 들어 통지 모듈(301)을 통해 검색된 토픽(103)을 도 1의 이동 클라이언트(109)와 같은 클라이언트 장치로 전송하여, 클라이언트 장치로 하여금 애플리케이션 서버(101)로부터 푸시되는 메시지들을 청취하게 할 수 있다.
일 실시예에서, 통지 서비스 레지스트리(303)는 애플리케이션 서버(101)에서 호스트되는 서버 애플리케이션(117) 또는 다른 서버 애플리케이션들로부터의 메시지 통지에 대해 등록된 클라이언트 장치들로부터 수신되는 사용자 토큰들 및 관련 데이터를 저장할 수 있다. 통지 서비스 레지스트리(303)는 애플리케이션 서버(101)에 국지적으로 또는 원격적으로 결합된 메모리 또는 대용량 저장 장치들에 기초할 수 있다. 일 실시예에서, 통지 서비스 레지스트리(303) 내의 사용자 토큰은 메시지 통지에 대해 등록할 클라이언트 애플리케이션으로부터 전송된 서브토픽들과 같은 데이터와 관련될 수 있다. 관련 데이터는 애플리케이션 서버(101) 및/또는 통지 서버(105)에 대해 불투명하게 유지될 수 있다. 예를 들어, 관련 데이터를 저장, 검색, 제거 및/또는 전송하는 것을 제외하고는, 관련 데이터에 대해 애플리케이션 서버(101)에서 어떠한 처리 자원도 할당되지 않을 수 있다. 통지 메시지를 사용자 토큰에 의해 식별되는 클라이언트 장치로 푸시할 때, 서버 애플리케이션(117)은 사용자 토큰을 그의 관련 데이터 및 토픽(103)과 함께 예를 들어 통지 모듈(301)을 통해 통지 서버(105)로 전송할 수 있다.
사용자 토큰과 장치 토큰 사이의 맵핑을 유지하기 위해, 통지 서버(105)는 어느 별명들이 어느 장치와 연관되는지에 대한 리스트를 유지한다. 일 실시예에서, 통지 서버(105)는 다수의 별명을 식별자 리스트(300) 내의 장치와 연관시킨다. 일 실시예에서, 식별자 리스트(300) 내의 별명들은 도 2에서 전술한 바와 같은 별명(136)일 수 있다. 예를 들어 그리고 일 실시예에서, 통지 서버(105)는 별명들(304A-N)을 장치 토큰(302A)과 그리고 별명들(306A-N)을 장치 토큰(302B)과 연관시킨다. 일 실시예에서, 통지 서버(105)는 상이한 사용자 계정들에 의해 사용중인 애플리케이션들이 푸시 통지들에 가입하기 위한 요청들을 전송할 때 사용자 토큰들을 처리함으로써 이 리스트를 유지한다. 예를 들어 그리고 일 실시예에서, 통지 서버(105)는 애플리케이션이 푸시 통지에 가입하기 위해 요청할 때 장치 식별자를 포함하는 사용자 토큰을 수신한다. 이 실시예에서, 통지 서버는 사용자 토큰으로부터 별명 및 관련 장치 식별자를 추출하고, 필요에 따라 식별자 리스트(300)를 갱신한다.
도 4는 본 명세서에서 설명되는 실시예들에 따른, 다중 사용자 장치와 애플리케이션 서버 사이의 예시적인 메시지 교환들을 나타내는 시퀀스 도면이다. 일 실시예에서, 다중 사용자 장치(109), 애플리케이션 서버(101) 및 통지 서버(105)는 도 1의 네트워크(107)를 통해 서로 결합될 수 있다. 다중 사용자 장치(109)는 메시지 통지 애플리케이션 서버(101)에 대한 등록 전에, 예를 들어 인스턴스(401) 전에 예를 들어 통지 서버(105)를 통해 푸시 서비스로부터 도 1의 사용자 토큰(114A 또는 114B)과 같은 사용자 토큰을 수신할 수 있다. 애플리케이션 서버(101)는 푸시 서비스의 보안 당국으로부터 증명서를 수신하여, 통지 서버(105)와 같은 푸시 서버에 대한 접속을 설정하도록 애플리케이션 서버(101)를 허가할 수 있다. 수신되는 증명서는 애플리케이션 서버(101)를 식별하기 위한 도 1의 토픽(103)과 같은 토픽을 스트링으로서 포함할 수 있다.
일 실시예에서, 다중 사용자 장치(109)의 클라이언트 애플리케이션, 예를 들어 메일은 애플리케이션 서버(101)에서 호스트되는 대응하는 서버 애플리케이션, 예를 들어 IMAP 서버와의 네트워크 접속을 개시하여, 서버 애플리케이션으로부터의 메시지 통지에 대해 등록할 수 있다. 시퀀스 401에서, 클라이언트 애플리케이션은 다중 사용자 장치(109)와 애플리케이션 서버(101) 사이의 네트워크 접속을 개시하여, 서버 애플리케이션에 의해 어떤 능력들이 지원되는지를 문의하기 위한 조회 요청을 전송할 수 있다. 이에 응답하여, 시퀀스 403에서, 서버 애플리케이션은 예를 들어 XAPPLEUSHSERVICE 지시자를 포함하는 프로토콜에 기초하여 푸시 옵션의 가용성을 지시하는 지시자들로 응답할 수 있다.
이어서, 시퀀스 405에서, 클라이언트 애플리케이션은 다중 사용자 장치(109)로부터의 명령을 애플리케이션 서버(101)로 전송하여, 메시지 푸시 또는 통지에 대해 등록할 수 있다. 명령은 서버 애플리케이션으로 하여금 다중 사용자 장치(109), 사용자 계정(예를 들어, 사용자 토큰) 및/또는 클라이언트 애플리케이션에 어드레스할 수 있게 하는 이름들 또는 식별자들을 갖는 파라미터들을 포함할 수 있다. 일 실시예에서, 파라미터들은 다중 사용자 장치(109)의 사용자 토큰을 포함하는 지명된 값들에 기초할 수 있다. 옵션으로서, 파라미터들은 다중 사용자 장치(109) 내의 클라이언트 애플리케이션이 고유하게 소유하는 서브토픽, 예를 들어 "com.apple.mobilemail"을 포함할 수 있다. 시퀀스 407에서, 애플리케이션 서버는 애플리케이션 서버(101)를 식별하는 토픽으로 응답할 수 있다. 토픽은 다수의 서버에 의해 공유되는 푸시 서비스를 통해 애플리케이션 서버(101)로부터 푸시되는 메시지들을 식별하는 데 사용될 수 있는 스트링, 예를 들어 "com.google.push"일 수 있다. 다중 사용자 장치(109)와 애플리케이션 서버(101) 사이의 메시지 통지를 등록하기 위해 설정된 동일 네트워크 접속을 통해 추가적인 애플리케이션 고유 트랜잭션들이 교환될 수 있다. 이러한 네트워크 접속은 다중 사용자 장치(109)가 애플리케이션 서버(101)로부터의 통지를 기다리는 동안에 접속해제될 수 있다.
이어서, 서버 애플리케이션은 예를 들어 특정 사용자에 대한 IMAP 서버 내의 새로운 메일들의 도달과 같은 소정의 애플리케이션 고유 이벤트들의 발생에 응답하여 다중 사용자 장치(109)로 푸시될 통지 메시지를 생성할 수 있다. 서버 애플리케이션은 통지 메시지들을 사용자 토큰과 함께 패키징하고, 예를 들어 다중 사용자 장치(109)에 대해 등록된(또는 저장된) 클라이언트 애플리케이션의 서브토픽을 포함하는, 사용자 토큰과 관련된 데이터를 전송할 수 있다. 시퀀스 409에서, 애플리케이션 서버(101)는 애플리케이션 서버(101)를 식별하는 토픽을 갖는 통지 메시지를 통지 서버(105)를 통해 다중 사용자 장치(109)로 전송할 수 있다. 이어서, 시퀀스 411에서, 통지 서버(105)는 통지 메시지를 푸시 네트워크 서비스를 통해 다중 사용자 장치(109)로 푸시할 수 있다.
통지 메시지의 도달 시에, 다중 사용자 장치(109)는 메시지를 관심 클라이언트 애플리케이션들 및 사용자 계정으로 전송하기 전에 메시지의 토픽 및/또는 사용자 토큰을 검증할 수 있다. 다중 사용자 장치(109)는 검증에 실패한 경우에(예를 들어, 토픽이 가입되어 있지 않고, 그리고/또는 사용자 토큰이 국지적 사용자 토큰과 매칭되지 않는 경우에) 메시지를 무시할 수 있다. 옵션으로서, 다중 사용자 장치(109)는 통지 메시지의 페이로드로부터 서브토픽을 추출하여, 통지 메시지를 서브토픽에 의해 지명된 클라이언트 애플리케이션으로만 전달하고, 토픽에 가입한 다른 애플리케이션들로는 전송하지 않을 수 있다. 다중 사용자 장치(109)는 클라이언트 애플리케이션이 슬립 상태에 있거나 현재 통지 메시지를 수신하도록 실행되고 있지 않은 경우에 해당 사용자 계정에 대한 클라이언트 애플리케이션을 호출할 수 있다. 이어서, 시퀀스 413에서, 클라이언트 애플리케이션은 애플리케이션 서버(101) 내의 대응하는 서버 애플리케이션과의 접속을 개시하여, (예를 들어, 대응하는 사용자에 대한 메일 메시지들을 검색하는) 애플리케이션 고유 트랜잭션들을 수행할 수 있다.
도 5a는 다중 사용자 장치로 하여금 통지 메시지를 식별된 클라이언트 애플리케이션으로 라우팅하는 것을 가능하게 하기 위한 프로세스(500)의 일 실시예를 나타내는 흐름도이다. 예시적인 프로세스(500)는 하드웨어(회로, 전용 논리 등), (전용 기계에서 실행되는 바와 같은) 소프트웨어 또는 이 둘의 조합을 포함할 수 있는 처리 논리에 의해 수행될 수 있다. 예를 들어, 프로세스(500)는 도 1의 시스템(100)의 일부 컴포넌트들에 의해 수행될 수 있다. 블록 501에서, 프로세스(500)의 처리 논리는 사용자 토큰에 의해 식별되는 클라이언트 장치 내에 상주하는 클라이언트 애플리케이션에 대한 애플리케이션 식별자(예로서, 서브토픽)를 생성할 수 있으며, 클라이언트 애플리케이션은 서버 식별자(예로서, 토픽)에 의해 식별되는 하나 이상의 애플리케이션 서버에 의해 호스트되는 서버 애플리케이션과의 트랜잭션들을 수행한다.
블록 503에서, 일 실시예에서, 프로세스(500)의 처리 논리는 클라이언트 애플리케이션에 대해 애플리케이션 서버들로부터의 메시지 통지 서비스를 등록할 수 있다. 프로세스(500)의 처리 논리는 클라이언트 애플리케이션과 관련된 (예를 들어, 클라이언트 애플리케이션 식별자에 대한 서브토픽 및 클라이언트 장치의 사용자에 대한 사용자 토큰을 포함하는) 식별자들을 애플리케이션 서버들에서 호스트되는 서버 애플리케이션으로 전송하여, 서버 애플리케이션으로 하여금 통지 메시지들을 클라이언트 애플리케이션 및 대응하는 사용자에 대한 클라이언트 장치로 푸시하는 것을 가능하게 할 수 있다.
블록 505에서, 애플리케이션 서버로부터의 통지 메시지의 수신에 응답하여, 프로세스(500)의 처리 논리는 통지 메시지가 애플리케이션 식별자를 운반하는지를 결정할 수 있다. 일 실시예에서, 프로세스(500)의 처리 논리는 통지 메시지로부터 (예로서, 지명된 값들에 기초하는) 토큰 및 토픽을 추출하여, 통지 메시지가 다중 사용자 장치에 의해 수신되도록 의도되는지를 검증할 수 있다. 일 실시예에서, 프로세스(500)의 처리 논리는 통지 메시지의 페이로드로부터 애플리케이션 식별자, 예로서 서브토픽을 식별할 수 있다.
애플리케이션 식별자 또는 서브토픽 및 사용자 토큰 내의 별명이 식별되는 경우, 블록 507에서, 프로세스(500)의 처리 논리는 통지 메시지를 별명에 의해 식별되는 사용자에 대한 서브토픽에 의해 식별되는 클라이언트 애플리케이션으로 전송하고, 통지 메시지를 토픽에 가입한 다른 애플리케이션들 또는 통지 메시지의 다른 사용자들에게로는 (그러한 사용자들이 클라이언트 애플리케이션을 사용하는지의 여부에 관계없이) 전송하지 않을 수 있다. 프로세스(500)의 처리 논리는 다수의 클라이언트 애플리케이션 중에서 서브토픽에 의해 식별되는 클라이언트 애플리케이션을 선택하고, 클라이언트 장치 내의 토픽에 가입한 적절한 사용자에 대한 클라이언트 애플리케이션을 선택할 수 있다. 이와 달리, 통지 메시지 내에서 서브토픽이 발견되지 않는 경우, 프로세스(500)의 처리 논리는 통지 메시지를 클라이언트 애플리케이션에 대한 토픽에 가입한 각각의 클라이언트 애플리케이션으로 그리고/또는 각각의 사용자에게 전송하여, (예를 들어, 메시지 내에서 운반되는 콘텐츠에 기초하여) 통지 메시지를 처리할지를 결정할 수 있다.
도 5b는 통지 메시지를 사용자 토큰과 관련된 사용자에 대한 식별된 클라이언트 애플리케이션으로 라우팅하는 데 사용되는 사용자 토큰을 생성하기 위한 프로세스의 일 실시예를 나타내는 흐름도이다. 예시적인 프로세스(500)는 하드웨어(회로, 전용 논리 등), (전용 기계에서 실행되는 바와 같은) 소프트웨어 또는 이 둘의 조합을 포함할 수 있는 처리 논리에 의해 수행될 수 있다. 예를 들어, 프로세스(500)는 도 1a의 시스템(100)의 일부 컴포넌트들(예로서, 다중 사용자 클라이언트(109))에 의해 수행될 수 있다. 블록 552에서, 프로세스(550)의 처리 논리는 푸지 통지 요청을 수신할 수 있다. 일 실시예에서, 통지 관리 모듈(201)은 도 2에서 전술한 바와 같이 클라이언트 애플리케이션(111A 또는 111B)으로부터 푸시 통지 요청을 수신한다. 이 실시예에서, 푸시 통지 요청은 사용자로부터의 클라이언트 애플리케이션으로부터 이루어질 수 있다. 일 실시예에서, 푸시 통지 요청은 어느 클라이언트 애플리케이션 및 사용자가 푸시 통지를 요청하고 있는지를 식별한다.
일 실시예에서, 푸시 통지 요청은 장치 토큰, 사용자 토큰 및/또는 사용자 증명서 중 하나 이상을 포함할 수 있다. 예를 들어 그리고 일 실시예에서, 장치 토큰은 푸시 통지 시스템에 장치를 식별시키는 장치 토큰(115)이고, 사용자 토큰은 푸시 통지 시스템에 사용자를 식별시키는 데 사용되고 도 1a-2에서 전술한 바와 같이 그 사용자에 대한 별명을 포함할 수 있는 사용자 토큰(116A)이다.
블록 554에서, 프로세스(500)는 요청 내에 포함된 증명서가 존재하는지를 결정한다. 일 실시예에서, 증명서는 요청을 행하고 있는 사용자를 식별하는 데 사용되는 공개 키 증명서이다. 증명서는 사용자 식별자(Apple ID, MobileMe ID, 이 분야에 공지된 바와 같은 소정의 다른 증명서 등)에 기초하는 증명서일 수 있다. 요청 내에 증명서가 포함되지 않은 경우, 블록 556에서, 프로세스(550)는 증명서를 생성한다. 일 실시예에서, 프로세스(500)는 제삼자 증명서 생성 서비스로부터 증명서를 검색함으로써 증명서를 생성한다. 일 실시예에서, 적절한 증명서 당국이 증명서에 서명한다. 일 실시예에서, 증명서는 사용자에 대한 별명(예를 들어, 도 1에서 전술한 바와 같은 사용자 토큰(116A)의 일부인 별명(136))을 생성하는 데 사용된다.
증명서가 푸시 통지 요청 내에 포함된 경우, 프로세스(550)는 블록 558에서 푸시 통지 시스템에 접속한다. 일 실시예에서, 프로세스(550)는 푸시 통지 접속 명령을 통지 서버(105)로 전송한다. 푸시 통지 접속을 전송함으로써, 프로세스(550)는 프로세스(550)가 사용자 및 사용자와 관련된 클라이언트 애플리케이션에 대한 통지들을 수신할 준비가 되었다는 것을 통지 시스템에 시그널링한다.
블록 560에서, 프로세스(560)는 푸시 통지 시스템으로부터 장치 토큰을 검색하고 저장한다. 일 실시예에서, 프로세스(500)는 통지 서버(105)로부터 장치 토큰을 검색하고, 장치 토큰을 도 2에서 전술한 바와 같은 가입 프로파일(203) 내에 저장한다. 일 실시예에서, 장치 토큰은 통지 서버(105)에 접속하는 다중 사용자 장치(109)의 최초 인스턴스 시에 생성된다.
프로세스(550)는 블록 562에서 사용자 토큰이 푸시 통지 요청 내에 포함되어 있는지를 결정한다. 일 실시예에서, 사용자 토큰이 푸시 통지 요청에 대해 이용 가능한 경우, 요청 프로세스는 도 1b에서 설명된 바와 같은 사용자 토큰(116A)과 같은 사용자 토큰을 푸시 통지 요청 내에 삽입한다. 사용자 토큰이 푸시 통지 요청 내에 포함되지 않은 경우, 프로세스(550)는 블록 564에서 사용자 토큰을 인출(fetch)한다. 일 실시예에서, 프로세스(550)는 사용자 토큰을 인출하기 위해 푸시 통지 접속 존재 명령을 통지 서버로 전송한다. 이에 응답하여, 통지 서버는 적절한 사용자 토큰(예를 들어, 사용자 토큰(116A))을 요청 프로세스(예로서, 프로세스(550))로 전송한다. 이 실시예에서, 접속 존재 명령은 장치 및 장치와 관련된 사용자가 온라인 상태이며 푸시 통지들을 수신할 준비가 되었다는 것을 푸시 통지 서버에 시그널링한다. 일 실시예에서, 프로세스(550)는 사용자가 다중 사용자 장치에 로그인할 때 또는 다중 사용자 장치가 1-사용자 장치 또는 디폴트 사용자를 갖는 다중 사용자 장치에 대해 부트 업할 때 푸시 통지 접속 존재 명령을 전송한다. 사용자 토큰이 요청 내에 포함된 경우, 프로세스(550)는 블록 566에서 사용자 토큰을 인에이블(enable)한다. 일 실시예에서, 프로세스(550)는 사용자 토큰이 생성될 때 사용자 토큰을 인에이블한다.
도 6은 애플리케이션 서버로부터 애플리케이션 클라이언트로 통지 메시지들을 제공하기 위한 프로세스의 일 실시예를 나타내는 흐름도이다. 예시적인 프로세스(600)는 하드웨어(회로, 전용 논리 등), (전용 기계에서 실행되는 바와 같은) 소프트웨어 또는 이 둘의 조합을 포함할 수 있는 처리 논리에 의해 수행될 수 있다. 예를 들어, 프로세스(600)는 도 1의 애플리케이션 서버(101)와 같은 시스템(100)의 일부 컴포넌트들에 의해 수행될 수 있다. 블록 601에서, 프로세스(600)의 처리 논리는 애플리케이션 서버에서 호스트되는 서버 애플리케이션으로부터의 메시지 통지에 대해 클라이언트 장치 내의 클라이언트 애플리케이션으로부터 등록 요청을 수신할 수 있다. 등록 요청은 클라이언트 장치 및/또는 사용자에 대한 식별자(예를 들어, 사용자 토큰) 및 옵션으로서 클라이언트 애플리케이션에 대한 추가적인 식별자(예로서, 서브토픽)를 포함할 수 있다.
블록 603에서, 프로세스(600)의 처리 논리는 애플리케이션 서버를 식별하는 서버 식별자(예로서, 토픽)를 클라이언트 장치로 전송하여, 클라이언트 장치로 하여금 애플리케이션 서버로부터 통지(또는 푸시)되는 메시지들을 청취하게 할 수 있다. 일 실시예에서, 프로세스(600)의 처리 논리는 블록 605에서 푸시 서비스가 클라이언트 장치에 대한 통지 메시지를 어드레스하기 위한 장치 식별자 및 별명을 포함하는 식별자들을 저장할 수 있다. 예를 들어 그리고 일 실시예에서, 서버는 도 3에서 전술한 바와 같은 식별자 리스트(300)와 같은 식별자 리스트 내에 장치 식별자 및 대응하는 별명을 저장할 수 있다. 저장된 식별자들은 통지 메시지를 수신할 클라이언트 장치 내의 클라이언트 애플리케이션을 식별하기 위한 서브토픽을 포함할 수 있다.
일 실시예에서, 블록 607에서, 프로세스(600)의 처리 논리는 클라이언트 애플리케이션을 호스트하는 클라이언트 장치의 사용자에 대한 저장된 식별자들에 따라 메시지를 수신하도록 등록된 클라이언트 애플리케이션에 대한 통지 메시지를 생성할 수 있다. 예를 들어, 통지 메시지는 새로운 메일 메시지들의 도달, 채트 요청, 스케줄 갱신 또는 다른 적용 가능 이벤트들과 같은 클라이언트 애플리케이션과 관련된 계정과 관련된 서버 애플리케이션에서의 이벤트의 발생을 지시할 수 있다. 통지 메시지는 통지 메시지 및 클라이언트 애플리케이션을 식별하는 서브토픽을 포함하는 페이로드를 수신할 클라이언트 장치 및 사용자를 식별하는 장치 토큰과 함께 패키징될 수 있다. 블록 609에서, 프로세스(600)의 처리 논리는 발신 애플리케이션 서버를 식별하는 토픽을 포함하는 통지 메시지를 푸시 서비스를 통해 클라이언트 장치로 전송할 수 있다. 통지 메시지는 클라이언트 애플리케이션을 식별하기 위해 메시지의 페이로드 내에 삽입된 서브토픽을 운반할 수 있다. 이어서, 블록 611에서, 프로세스(600)의 처리 논리는 클라이언트 애플리케이션으로부터 서버 애플리케이션과 설정된 네트워크 세션을 통해 애플리케이션 고유 트랜잭션들을 수행할 수 있다.
블록 613에서, 프로세스(600)의 처리 논리는 클라이언트 애플리케이션, 사용자 및/또는 클라이언트 장치로의 통지 메시지들의 전송을 중지하기 위한 조건이 충족되었는지를 결정할 수 있다. 사용자에 대한 클라이언트 애플리케이션은 서버 애플리케이션으로부터 통지 메시지들을 수신하기 위해 등록했을 수 있다. 일 실시예에서, 프로세스(600)의 처리 논리는 최근의 통지 메시지를 클라이언트 장치로 전송한 이후의 사용자 및/또는 클라이언트 장치에 대한 지속 기간 또는 경과 시간을 모니터링할 수 있다. 지속 기간이 임계치(예를 들어, 사전 구성되거나 동적으로 구성될 수 있는 1일, 12시간 등)를 초과하는 경우, 사용자 및/또는 클라이언트 장치로의 통지 메시지들의 전송을 중지하기 위한 조건이 충족될 수 있다. 블록 615에서, 프로세스(600)의 처리 논리는 조건이 충족된 경우에 서버 애플리케이션의 메시지 통지(또는 푸시 서비스)로부터 사용자 및/또는 클라이언트 장치를 등록 해제할 수 있다. 일 실시예에서, 사용자는 서버 애플리케이션에 대한 통지 수신자들의 리스트로부터 제거될 수 있다. 예를 들어 그리고 일 실시예에서, 프로세스(600)의 처리 논리는 메시지 통지를 위한 레지스트리로부터 클라이언트 장치의 클라이언트 애플리케이션을 식별하는 서브토픽을 운반하는 데이터를 포함하여 사용자를 식별하는 별명과 관련된 엔트리들을 제거할 수 있다. 다른 실시예에서, 클라이언트 장치는 서버 애플리케이션에 대한 통지 수신자들의 리스트로부터 제거될 수 있다. 예를 들어, 프로세스(600)의 처리 논리는 메시지 통지를 위한 레지스트리로부터 클라이언트 장치의 클라이언트 애플리케이션을 식별하는 서브토픽을 운반하는 데이터를 포함하여 클라이언트 장치를 식별하는 장치 토큰과 관련된 엔트리들을 제거할 수 있다. 이 실시예에서, 클라이언트 장치를 등록 해제함으로써, 클라이언트 장치와 관련된 사용자(들)도 등록 해제된다.
도 7은 본 명세서에서 설명되는 실시예들과 관련하여 사용될 수 있는 데이터 처리 시스템의 일례를 나타낸다. 도 7에 도시된 데이터 처리 시스템(700)은 하나 이상의 마이크로프로세서일 수 있거나 시스템 온 칩 집적 회로일 수 있는 처리 시스템(711)을 포함하며, 시스템은 또한 처리 시스템에 의한 실행을 위해 데이터 및 프로그램들을 저장하기 위한 메모리(701)를 포함한다. 시스템(700)은 또한 예를 들어 음악을 재생하거나 스피커 및 마이크를 통해 전화 기능을 제공하기 위한 마이크 및 스피커를 포함할 수 있는 오디오 입출력 서브시스템(705)을 포함한다. 시스템(700)은 적어도 소정 실시예들에서 본 명세서에서 설명되는 하나 이상의 프로파일을 요청하고, 그러한 프로파일들을 다운로드하여 네트워크를 통한 통신을 위해 장치를 구성할 수 있다. 시스템(700)은 도 7에 도시된 시스템일 수 있는 서버 데이터 처리 시스템으로부터 그러한 프로파일들을 다운로드할 수 있다. 일 실시예에서, 시스템(700)은 도 1에 도시된 장치(111A-B)일 수 있다.
디스플레이 제어기 및 디스플레이 장치(707)는 사용자를 위한 비주얼 사용자 인터페이스를 제공하며, 이 디지털 인터페이스는 OS X 운영 체제 소프트웨어를 실행할 때 매킨토시 컴퓨터 상에 나타나는 것과 유사한 그래픽 사용자 인터페이스를 포함할 수 있다. 시스템(700)은 또한 다른 데이터 처리 시스템과 통신하기 위한 하나 이상의 무선 송수신기(703)를 포함한다. 무선 송수신기는 WiFi 송수신기, 적외선 송수신기, 블루투스 송수신기 및/또는 무선 셀룰러 전화 통신 송수신기일 수 있다. 소정 실시예들에서는 도시되지 않은 추가적인 컴포넌트들도 시스템(700)의 일부일 수 있으며, 소정 실시예들에서는 도 7에 도시된 것보다 적은 컴포넌트들도 데이터 처리 시스템에서 사용될 수 있다는 것을 알 것이다.
데이터 처리 시스템(700)은 또한 사용자로 하여금 시스템에 입력을 제공할 수 있게 하기 위해 제공되는 하나 이상의 입력 장치(713)를 포함한다. 이러한 입력 장치들은 키패드, 키보드, 터치 패널 또는 다중 터치 패널일 수 있다. 데이터 처리 시스템(700)은 또한 도크(dock)에 대한 커넥터일 수 있는 옵션인 입출력 장치(715)를 포함한다. 도시되지 않은 하나 이상의 버스가 이 분야에 공지된 바와 같은 다양한 컴포넌트들을 상호접속하는 데 사용될 수 있다는 것을 알 것이다. 도 7에 도시된 데이터 처리 시스템은 핸드헬드 컴퓨터, 개인 휴대 단말기(PDA), PDA와 같은 기능을 갖는 셀룰러 전화, 셀룰러 전화를 포함하는 핸드헬드 컴퓨터, 아이팟과 같은 미디어 플레이어 또는 하나의 장치 내에서 PDA 및 셀룰러 전화와 결합된 미디어 플레이어와 같이 이러한 장치들의 양태들 또는 기능들을 결합하는 장치들일 수 있다. 다른 실시예들에서, 데이터 처리 시스템(700)은 네트워크 컴퓨터 또는 다른 장치 내의 내장 처리 장치, 또는 도 7에 도시된 것보다 적은 컴포넌트들 또는 아마도 더 많은 컴포넌트들을 갖는 다른 타입의 데이터 처리 시스템들일 수 있다.
도 8은 본 명세서의 일 실시예와 함께 사용될 수 있는 데이터 처리 시스템의 일례를 나타낸다. 도 8은 컴퓨터 시스템의 다양한 컴포넌트들을 도시하지만, 컴포넌트들을 상호접속하는 임의의 특정 아키텍처 또는 방식을 나타내는 것을 의도하지 않으며, 이는 그러한 상세들이 본 발명과 밀접한 관계가 있지 않기 때문이라는 점에 유의한다. 더 적은 컴포넌트 또는 아마도 더 많은 컴포넌트를 갖는 네트워크 컴퓨터들 및 다른 데이터 처리 시스템들도 본 발명과 함께 사용될 수 있다는 것도 알 것이다. 도 8은 도 1에 도시된 서버 시스템을 나타낼 수 있다.
도 8에 도시된 바와 같이, 데이터 처리 시스템의 한 형태인 컴퓨터 시스템(800)은 마이크로프로세서(들)(805), 판독 전용 메모리(ROM)(807), 휘발성 RAM(809) 및 비휘발성 메모리(811)에 결합되는 버스(803)를 포함한다. 마이크로프로세서(805)는 메모리들(807, 809, 811)로부터 명령어들을 검색하고, 명령어들을 실행하여 전술한 동작들을 수행할 수 있다. 버스(803)는 이러한 다양한 컴포넌트들을 함께 상호접속하고, 또한 이러한 컴포넌트들(805, 807, 809, 811)을 디스플레이 제어기 및 디스플레이 장치(813)에 그리고 이 분야에 공지된 마우스, 키보드, 모뎀, 네트워크 인터페이스, 프린터 및 다른 장치일 수 있는 입출력(I/O) 장치들과 같은 주변 장치들에 상호접속한다. 통상적으로, 입출력 장치들(815)은 입출력 제어기들(817)을 통해 시스템에 결합된다. 휘발성 랜덤 액세스 메모리(RAM)(809)는 통상적으로 메모리 내의 데이터를 리프레시하거나 유지하기 위해 전력을 계속 필요로 하는 동적 RAM(DRAM)으로서 구현된다.
대용량 저장 장치(811)는 통상적으로 시스템으로부터 전력이 제거된 후에도 데이터(예를 들어, 많은 양의 데이터)를 유지하는 자기 하드 드라이브, 자기 광 드라이브, 광 드라이브, DVD RAM, 플래시 메모리 또는 다른 타입의 메모리 시스템이다. 통상적으로, 대용량 저장 장치(811)는 또한 랜덤 액세스 메모리일 것인데, 이는 필요한 것은 아니다. 도 8은 대용량 저장 장치(811)가 데이터 처리 시스템 내의 나머지 컴포넌트들에 직접 결합되는 국지적 장치인 것으로 도시하지만, 본 발명은 모뎀, 이더넷 인터페이스 또는 무선 네트워크와 같은 네트워크 인터페이스를 통해 데이터 처리 시스템에 결합되는 네트워크 저장 장치와 같이 시스템으로부터 떨어진 비휘발성 메모리를 사용할 수 있다는 것을 알 것이다. 버스(803)는 이 분야에 공지된 바와 같은 다양한 브리지, 제어기 및/또는 어댑터를 통해 서로 접속되는 하나 이상의 버스를 포함할 수 있다.
본 명세서에서 사용되는 바와 같은 "메모리"라는 용어는 동적 랜덤 액세스 메모리(DRAM) 및 정적 RAM(SRAM)과 같은 모든 휘발성 저장 매체들을 포함하는 것을 의도한다. 컴퓨터 실행 가능 명령어들은 자기 하드 디스크, 광 디스크와 같은 비휘발성 저장 장치들에 저장될 수 있으며, 통상적으로 프로세서에 의한 소프트웨어의 실행 동안 직접 메모리 액세스 프로세스에 의해 메모리 내에 기록된다. 이 분야의 기술자는 "기계 판독 가능 저장 매체"라는 용어가 프로세서에 의해 액세스될 수 있는 임의 타입의 휘발성 또는 비휘발성 저장 장치를 포함한다는 것을 바로 인식할 것이다.
위의 명세서에서, 본 발명은 그의 특정 실시예들을 참조하여 설명되었다. 아래의 청구항들에서 설명되는 바와 같은 본 발명의 더 넓은 사상 및 범위로부터 벗어나지 않고 그에 대한 다양한 변경들이 이루어질 수 있다는 것이 명백하다. 따라서, 명세서 및 도면들은 한정이 아니라 예시적인 것으로 간주되어야 한다.

Claims (20)

  1. 다중 사용자 메시지 통지를 위한 기계 구현 방법으로서,
    클라이언트 장치 내의 복수의 사용자 계정 중 하나인 대응하는 사용자 계정을 식별하는 별명(alias)을 생성하는 단계 - 상기 별명은 하나 이상의 애플리케이션 서버에서 호스트되는 서버 애플리케이션과 관련된 클라이언트 애플리케이션에 대응하는 서브토픽 식별자와 결합하여 사용되고, 상기 클라이언트 장치에서 복수의 클라이언트 애플리케이션이 호스트되고, 상기 서브토픽 식별자는 상기 복수의 클라이언트 애플리케이션 중에서 상기 클라이언트 애플리케이션을 고유하게 식별함 -;
    상기 클라이언트 애플리케이션과 관련된 식별자들을 상기 서버 애플리케이션으로 전송하여, 상기 서버 애플리케이션으로 하여금 통지 메시지들을 상기 클라이언트 애플리케이션에 대한 상기 클라이언트 장치의 상기 대응하는 사용자 계정으로 푸시(push)하는 것을 가능하게 하도록, 상기 클라이언트 애플리케이션 및 상기 별명에 대해 상기 하나 이상의 애플리케이션 서버에 통지 서비스를 등록하기 위한 요청을 송신하는 단계;
    상기 하나 이상의 애플리케이션 서버로부터 통지 메시지를 수신하는 것에 응답하여, 상기 통지 메시지가 상기 클라이언트 애플리케이션의 상기 별명 및 상기 서브토픽 식별자를 운반하는지를 결정하는 단계; 및
    상기 통지 메시지가 상기 클라이언트 애플리케이션에 대한 상기 식별자를 운반하는 경우에 상기 통지 메시지를 상기 클라이언트 장치 내의 다른 애플리케이션들로 전송하지 않고 상기 통지 메시지를 상기 대응하는 사용자 계정에 대한 상기 클라이언트 애플리케이션으로 전송하는 단계
    를 포함하는 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 식별자들은 상기 서브토픽 식별자를 포함하는 방법.
  4. 제1항에 있어서, 상기 대응하는 사용자 계정과 관련된 증명서로부터 상기 별명이 도출되는 방법.
  5. 제1항에 있어서, 상기 별명은 상기 클라이언트 장치의 장치 식별자를 더 포함하는 사용자 토큰 내에 저장되는 방법.
  6. 제3항에 있어서, 상기 식별자들은 상기 대응하는 사용자 계정을 고유하게 식별하는 사용자 토큰을 포함하는 방법.
  7. 제1항에 있어서, 상기 하나 이상의 애플리케이션 서버는 토픽 식별자에 의해 고유하게 식별되고,
    상기 등록은 상기 애플리케이션 서버들로부터 통지들을 청취하기 위해 상기 토픽 식별자에 대해 상기 클라이언트 애플리케이션을 등록하는 것을 더 포함하고, 상기 클라이언트 애플리케이션들 중 둘 이상이 상기 토픽 식별자에 대해 등록되는 방법.
  8. 제5항에 있어서,
    상기 하나 이상의 애플리케이션 서버와의 네트워크 접속을 개시하는 단계; 및
    상기 하나 이상의 애플리케이션 서버에 상기 식별자들을 상기 네트워크 접속을 통해 송신하는 단계
    를 더 포함하는 방법.
  9. 제5항에 있어서, 상기 결정은
    상기 통지 메시지로부터 상기 별명 및 상기 토픽 식별자를 추출하는 것; 및
    상기 통지 메시지가 상기 서브토픽 식별자를 운반하지 않는 경우에 상기 토픽 스트링에 대해 등록된 각각의 클라이언트 애플리케이션 및 대응하는 사용자에게 상기 통지 메시지를 전송하는 것
    을 포함하는 방법.
  10. 제1항에 있어서, 상기 전송하는 단계는 상기 클라이언트 애플리케이션이 현재 활성이 아닌 경우에 상기 클라이언트 애플리케이션을 호출하는 단계를 포함하는 방법.
  11. 메시지 통지를 제공하기 위한 기계 구현 방법으로서,
    애플리케이션 서버에서 호스트되는 서버 애플리케이션에서, 상기 메시지 통지를 위해 클라이언트 장치의 사용자에 대한 클라이언트 애플리케이션으로부터 등록 요청을 수신하는 단계 - 상기 요청은 상기 클라이언트 장치를 식별하는 사용자 토큰 및 상기 클라이언트 애플리케이션을 식별하는 클라이언트 애플리케이션 식별자를 포함하는 식별자들을 갖고, 상기 클라이언트 장치는 다수의 운영 체제 사용자 계정을 호스트하고 상기 사용자에 대한 대응하는 사용자 계정을 포함할 수 있음 -;
    상기 클라이언트 장치로 하여금 상기 애플리케이션 서버로부터 푸시되는 메시지들을 청취할 수 있게 하기 위해 상기 사용자에 대해 서버 식별자를 송신하는 단계;
    상기 메시지 통지에 대해 상기 사용자를 등록하기 위해 상기 수신된 식별자들을 저장하는 단계; 및
    상기 사용자에 대한 상기 클라이언트 애플리케이션에 통지하기 위해 상기 사용자 토큰을 통해 통지 메시지들을 상기 클라이언트 장치로 송신하는 단계
    를 포함하고,
    상기 통지 메시지들은 상기 서버 식별자에 의해 식별되고, 상기 통지 메시지들은 상기 클라이언트 애플리케이션 식별자를 내장하는 방법.
  12. 제11항에 있어서, 상기 사용자 토큰은 상기 사용자를 식별하는 별명 및 상기 클라이언트 장치를 식별하는 장치 식별자를 포함하는 방법.
  13. 제11항에 있어서, 상기 등록 요청은 상기 클라이언트 장치에 의해 개시되는 네트워크 접속을 통해 수신되고, 상기 서버 식별자는 상기 네트워크 접속을 통해 송신되는 방법.
  14. 제11항에 있어서, 상기 사용자 토큰은 상기 클라이언트 애플리케이션 식별자를 포함하는 불투명 데이터와 관련하여 저장되는 방법.
  15. 제14항에 있어서, 상기 통지 메시지들은 상기 클라이언트 장치의 상기 사용자를 식별하기 위한 상기 사용자 토큰을 포함하고, 상기 불투명 데이터는 상기 통지 메시지들의 페이로드들 내에서 운반되는 방법.
  16. 제12항에 있어서, 상기 송신하는 단계는
    푸시 서비스에서 푸시 서버와의 네트워크 접속을 설정하는 단계; 및
    상기 통지 메시지들을 상기 네트워크 접속을 통해 상기 푸시 서버로 송신하는 단계
    를 포함하고,
    상기 통지 메시지들은 상기 서버 식별자와 함께 패키징되는 방법.
  17. 제16항에 있어서, 상기 서버 식별자는 상기 푸시 서비스의 당국으로부터의 증명서 내에서 수신되고, 상기 서버 식별자는 상기 푸시 서비스를 공유하는 상기 애플리케이션 서버를 고유하게 식별하는 방법.
  18. 기계에 의해 실행될 때 상기 기계로 하여금 메시지 통지를 위한 방법을 수행하게 하는 명령어들을 갖는 기계 판독 가능 비일시적 매체로서,
    상기 방법은
    클라이언트 장치 상의 복수의 사용자 계정 중 하나인 대응하는 사용자 계정을 식별하는 별명을 생성하는 단계 - 상기 별명은 하나 이상의 애플리케이션 서버에서 호스트되는 서버 애플리케이션과 관련된 클라이언트 애플리케이션에 대응하는 서브토픽 식별자와 결합하여 사용되고, 상기 클라이언트 장치에서 복수의 클라이언트 애플리케이션이 호스트되고, 상기 서브토픽 식별자는 상기 복수의 클라이언트 애플리케이션 중에서 상기 클라이언트 애플리케이션을 고유하게 식별함 -;
    상기 클라이언트 애플리케이션과 관련된 식별자들을 상기 서버 애플리케이션으로 전송하여, 상기 서버 애플리케이션으로 하여금 통지 메시지들을 상기 클라이언트 애플리케이션에 대한 상기 클라이언트 장치의 상기 대응하는 사용자 계정으로 푸시하는 것을 가능하게 하도록, 상기 클라이언트 애플리케이션 및 상기 별명에 대해 상기 하나 이상의 애플리케이션 서버에 통지 서비스를 등록하기 위한 요청을 송신하는 단계;
    상기 하나 이상의 애플리케이션 서버로부터 통지 메시지를 수신하는 것에 응답하여, 상기 통지 메시지가 상기 클라이언트 애플리케이션의 상기 별명 및 상기 서브토픽 식별자를 운반하는지를 결정하는 단계; 및
    상기 통지 메시지가 상기 클라이언트 애플리케이션에 대한 상기 식별자를 운반하는 경우에 상기 통지 메시지를 상기 클라이언트 장치 내의 다른 애플리케이션들로 전송하지 않고 상기 통지 메시지를 상기 대응하는 사용자 계정에 대한 상기 클라이언트 애플리케이션으로 전송하는 단계
    를 포함하는 기계 판독 가능 비일시적 매체.
  19. 기계에 의해 실행될 때 상기 기계로 하여금 메시지 통지를 제공하기 위한 방법을 수행하게 하는 명령어들을 갖는 기계 판독 가능 비일시적 매체로서,
    상기 방법은
    애플리케이션 서버에서 호스트되는 서버 애플리케이션에서, 상기 메시지 통지를 위해 클라이언트 장치의 사용자에 대한 클라이언트 애플리케이션으로부터 등록 요청을 수신하는 단계 - 상기 요청은 상기 사용자 및 상기 클라이언트 장치를 식별하는 사용자 토큰 및 상기 클라이언트 애플리케이션을 식별하는 클라이언트 애플리케이션 식별자를 포함하는 식별자들을 갖고, 상기 클라이언트 장치는 다수의 운영 체제 사용자 계정을 호스트하고 상기 사용자에 대한 대응하는 사용자 계정을 포함할 수 있음 -;
    상기 클라이언트 장치로 하여금 상기 애플리케이션 서버로부터 푸시되는 메시지들을 청취할 수 있게 하기 위해 상기 사용자에 대해 서버 식별자를 송신하는 단계;
    상기 메시지 통지에 대해 상기 사용자를 등록하기 위해 상기 수신된 식별자들을 저장하는 단계; 및
    상기 사용자에 대한 상기 클라이언트 애플리케이션에 통지하기 위해 상기 사용자 토큰을 통해 통지 메시지들을 상기 클라이언트 장치로 송신하는 단계
    를 포함하고,
    상기 통지 메시지들은 상기 서버 식별자에 의해 식별되고, 상기 통지 메시지들은 상기 클라이언트 애플리케이션 식별자를 내장하는 기계 판독 가능 비일시적 매체.
  20. 서버 애플리케이션을 포함하는 실행 가능 명령어들을 저장하는 메모리;
    푸시 네트워크에 결합된 네트워크 인터페이스;
    상기 네트워크 인터페이스 및 상기 메모리에 결합되어, 메시징 서비스들을 위해 상기 메모리로부터 상기 실행 가능 명령어들을 실행하는 프로세서
    를 포함하고,
    상기 프로세서는
    클라이언트 장치로부터의 개시에 응답하여, 상기 네트워크 인터페이스를 통해 상기 클라이언트 장치와의 제1 네트워크 접속을 설정하고;
    상기 서버 애플리케이션에서, 상기 제1 네트워크 접속을 통해 클라이언트 장치의 클라이언트 애플리케이션으로부터 등록 요청을 수신하고 - 상기 요청은 상기 클라이언트 장치의 사용자를 식별하는 사용자 토큰 및 상기 클라이언트 애플리케이션을 식별하는 클라이언트 애플리케이션 식별자를 포함하는 식별자들을 가지고, 상기 클라이언트 장치에서 복수의 클라이언트 애플리케이션이 호스트되고, 해당 사용자 계정은 상기 클라이언트 장치의 복수의 운영 체제 사용자 계정 중 하나임 -;
    상기 클라이언트 장치로 하여금 상기 애플리케이션 서버로부터 푸시되는 메시지들을 청취할 수 있게 하기 위해 상기 클라이언트 장치에 대해 서버 식별자를 송신하고;
    상기 메시지 통지에 대해 상기 사용자를 등록하기 위해 상기 수신된 식별자들을 저장하고;
    상기 네트워크 인터페이스를 통한 상기 푸시 네트워크에 대한 제2 네트워크 접속을 통해 통지 메시지들을 상기 클라이언트 장치로 송신하도록 구성되며,
    상기 통지 메시지들은 상기 사용자에 대한 상기 클라이언트 애플리케이션에 통지하기 위한 상기 사용자 토큰을 가지며, 상기 통지 메시지들은 상기 서버 식별자에 의해 식별되고, 상기 통지 메시지들은 상기 클라이언트 애플리케이션 식별자를 내장하는 장치.
KR1020137020721A 2011-01-05 2011-12-30 다중-사용자 장치를 위한 메시지 푸시 통지 클라이언트 개량 KR101510977B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161430126P 2011-01-05 2011-01-05
US61/430,126 2011-01-05
US13/080,131 US8924489B2 (en) 2011-01-05 2011-04-05 Message push notification client improvements for multi-user devices
US13/080,131 2011-04-05
PCT/US2011/068189 WO2012094253A1 (en) 2011-01-05 2011-12-30 Message push notification client improvements for multi-user devices

Publications (2)

Publication Number Publication Date
KR20130109229A KR20130109229A (ko) 2013-10-07
KR101510977B1 true KR101510977B1 (ko) 2015-04-10

Family

ID=46381746

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137020721A KR101510977B1 (ko) 2011-01-05 2011-12-30 다중-사용자 장치를 위한 메시지 푸시 통지 클라이언트 개량

Country Status (9)

Country Link
US (2) US8924489B2 (ko)
EP (1) EP2649781B1 (ko)
JP (1) JP5719453B2 (ko)
KR (1) KR101510977B1 (ko)
CN (1) CN103348663B (ko)
AU (1) AU2011353561B2 (ko)
BR (1) BR112013017443B1 (ko)
MX (1) MX2013007842A (ko)
WO (1) WO2012094253A1 (ko)

Families Citing this family (146)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150088982A1 (en) * 2006-09-25 2015-03-26 Weaved, Inc. Load balanced inter-device messaging
US9712486B2 (en) 2006-09-25 2017-07-18 Weaved, Inc. Techniques for the deployment and management of network connected devices
US11184224B2 (en) 2006-09-25 2021-11-23 Remot3.It, Inc. System, method and compute program product for accessing a device on a network
US10637724B2 (en) 2006-09-25 2020-04-28 Remot3.It, Inc. Managing network connected devices
EP3484135A1 (en) 2008-04-02 2019-05-15 Twilio Inc. System and method for processing telephony sessions
US8837465B2 (en) 2008-04-02 2014-09-16 Twilio, Inc. System and method for processing telephony sessions
CN102227904A (zh) 2008-10-01 2011-10-26 特维里奥公司 电话网络事件的系统和方法
JP5671484B2 (ja) 2009-03-02 2015-02-18 トゥイリオ インコーポレイテッドTwilio Inc. マルチテナント電話ネットワークのための方法およびシステム
US9210275B2 (en) 2009-10-07 2015-12-08 Twilio, Inc. System and method for running a multi-module telephony application
US9459925B2 (en) 2010-06-23 2016-10-04 Twilio, Inc. System and method for managing a computing cluster
US9338064B2 (en) 2010-06-23 2016-05-10 Twilio, Inc. System and method for managing a computing cluster
US9459926B2 (en) 2010-06-23 2016-10-04 Twilio, Inc. System and method for managing a computing cluster
US9590849B2 (en) 2010-06-23 2017-03-07 Twilio, Inc. System and method for managing a computing cluster
US8838707B2 (en) 2010-06-25 2014-09-16 Twilio, Inc. System and method for enabling real-time eventing
US8649268B2 (en) 2011-02-04 2014-02-11 Twilio, Inc. Method for processing telephony sessions of a network
US8407776B2 (en) * 2011-02-11 2013-03-26 Good Technology Corporation Method, apparatus and system for provisioning a push notification session
KR101845086B1 (ko) * 2011-03-30 2018-04-03 삼성전자주식회사 푸시 알림 메시지를 전송하기 위한 장치 및 방법
KR101914488B1 (ko) * 2011-04-06 2018-11-05 삼성전자주식회사 푸시 알림 서비스를 위한 서버 클러스터 및 방법
US8825842B2 (en) * 2011-04-28 2014-09-02 Facebook, Inc. Managing notifications pushed to user devices
US9529417B2 (en) 2011-04-28 2016-12-27 Facebook, Inc. Performing selected operations using low power-consuming processors on user devices
US9648006B2 (en) * 2011-05-23 2017-05-09 Twilio, Inc. System and method for communicating with a client application
US20140044123A1 (en) 2011-05-23 2014-02-13 Twilio, Inc. System and method for real time communicating with a client application
WO2012162397A1 (en) 2011-05-23 2012-11-29 Twilio, Inc. System and method for connecting a communication to a client
JP2012247841A (ja) * 2011-05-25 2012-12-13 Sony Corp 近隣人物特定装置、近隣人物特定方法、近隣人物特定プログラム及び近隣人物特定システム
JP2012247840A (ja) * 2011-05-25 2012-12-13 Sony Corp 近隣人物特定装置、近隣人物特定方法、近隣人物特定プログラム及び近隣人物特定システム
US8731523B1 (en) 2011-06-14 2014-05-20 Urban Airship, Inc. Push notification delivery system with feedback analysis
US9531827B1 (en) 2011-06-14 2016-12-27 Urban Airship, Inc. Push notification delivery system with feedback analysis
US8554855B1 (en) * 2011-06-14 2013-10-08 Urban Airship, Inc. Push notification delivery system
US10182147B2 (en) 2011-09-21 2019-01-15 Twilio Inc. System and method for determining and communicating presence information
US9336500B2 (en) 2011-09-21 2016-05-10 Twilio, Inc. System and method for authorizing and connecting application developers and users
US9578014B2 (en) 2011-09-29 2017-02-21 Oracle International Corporation Service profile-specific token attributes and resource server token attribute overriding
US9495227B2 (en) 2012-02-10 2016-11-15 Twilio, Inc. System and method for managing concurrent events
US20140365606A1 (en) * 2012-02-13 2014-12-11 Sony Corporation Information processing apparatus, information processing method, and program
US11593800B2 (en) 2012-03-07 2023-02-28 Early Warning Services, Llc System and method for transferring funds
US20130244579A1 (en) * 2012-03-16 2013-09-19 Rapidblue Solutions Method of enabling proximity based connectivity between mobile devices using different operating systems
US9100497B2 (en) * 2012-04-05 2015-08-04 Blackberry Limited Method, system and apparatus for managing persona-based notifications at a communication device
US9602586B2 (en) 2012-05-09 2017-03-21 Twilio, Inc. System and method for managing media in a distributed communication network
US20130304928A1 (en) 2012-05-09 2013-11-14 Twilio, Inc. System and method for managing latency in a distributed telephony network
US9240941B2 (en) 2012-05-09 2016-01-19 Twilio, Inc. System and method for managing media in a distributed communication network
GB201210598D0 (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
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
US9247062B2 (en) 2012-06-19 2016-01-26 Twilio, Inc. System and method for queuing a communication session
US8737962B2 (en) 2012-07-24 2014-05-27 Twilio, Inc. Method and system for preventing illicit use of a telephony platform
US9524198B2 (en) * 2012-07-27 2016-12-20 Google Inc. Messaging between web applications
WO2014030199A1 (ja) * 2012-08-20 2014-02-27 富士通株式会社 シームレスアプリプッシュシステム及びその方法
KR101488268B1 (ko) * 2012-08-30 2015-01-30 삼성전자주식회사 푸시 메시지 서비스 방법 및 시스템
WO2014035194A1 (en) * 2012-08-30 2014-03-06 Samsung Electronics Co., Ltd. Push message service system and method
EP2706727B1 (en) 2012-09-11 2014-09-10 BlackBerry Limited Systems, devices and methods for authorizing endpoints of a push pathway
US8948356B2 (en) 2012-10-15 2015-02-03 Twilio, Inc. System and method for routing communications
US8938053B2 (en) 2012-10-15 2015-01-20 Twilio, Inc. System and method for triggering on platform usage
KR101399292B1 (ko) * 2012-12-07 2014-05-27 전남대학교산학협력단 Sns를 이용한 사물통신 시스템, 방법 및 그 사물통신 서버
CN103392328B (zh) * 2012-12-21 2016-05-25 华为技术有限公司 远程控制通讯终端工作的服务器和方法及通讯终端
CN103902616B (zh) * 2012-12-28 2017-04-12 腾讯科技(深圳)有限公司 一种推送网页应用消息的方法、装置和系统
US9253254B2 (en) 2013-01-14 2016-02-02 Twilio, Inc. System and method for offering a multi-partner delegated platform
US9232339B2 (en) * 2013-02-07 2016-01-05 Oracle International Corporation Mobile push notification
US9282124B2 (en) 2013-03-14 2016-03-08 Twilio, Inc. System and method for integrating session initiation protocol communication in a telecommunications platform
US9001666B2 (en) 2013-03-15 2015-04-07 Twilio, Inc. System and method for improving routing in a distributed communication platform
US8918529B1 (en) * 2013-03-15 2014-12-23 Mobile Iron, Inc. Messaging gateway
WO2014183208A1 (en) * 2013-05-17 2014-11-20 Initiative Inc. System for quickly finding the whereabouts of friends
US9256484B2 (en) * 2013-06-09 2016-02-09 Apple Inc. Dynamic adjustment of mobile device based on user activity
WO2014201177A1 (en) 2013-06-11 2014-12-18 Seven Networks, Inc. Offloading application traffic to a shared communication channel for signal optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US9160696B2 (en) 2013-06-19 2015-10-13 Twilio, Inc. System for transforming media resource into destination device compatible messaging format
US9225840B2 (en) 2013-06-19 2015-12-29 Twilio, Inc. System and method for providing a communication endpoint information service
US9338280B2 (en) 2013-06-19 2016-05-10 Twilio, Inc. System and method for managing telephony endpoint inventory
US8843601B1 (en) * 2013-07-12 2014-09-23 Vonage Network, Llc Systems and methods for VOIP communication completion to a mobile device
US9780994B2 (en) 2013-07-18 2017-10-03 International Business Machines Corporation Notification normalization
US9699625B2 (en) * 2013-07-18 2017-07-04 International Business Machines Corporation Push notification middleware
US9706002B2 (en) 2013-07-18 2017-07-11 International Business Machines Corporation Push notification via file sharing service synchronization
US9483328B2 (en) 2013-07-19 2016-11-01 Twilio, Inc. System and method for delivering application content
US9137127B2 (en) 2013-09-17 2015-09-15 Twilio, Inc. System and method for providing communication platform metadata
US9338018B2 (en) 2013-09-17 2016-05-10 Twilio, Inc. System and method for pricing communication of a telecommunication platform
US9274858B2 (en) 2013-09-17 2016-03-01 Twilio, Inc. System and method for tagging and tracking events of an application platform
EP3047626B1 (en) 2013-09-20 2017-10-25 Oracle International Corporation Multiple resource servers with single, flexible, pluggable oauth server and oauth-protected restful oauth consent management service, and mobile application single sign on oauth service
US9325624B2 (en) * 2013-11-12 2016-04-26 Twilio, Inc. System and method for enabling dynamic multi-modal communication
US9553799B2 (en) 2013-11-12 2017-01-24 Twilio, Inc. System and method for client communication in a distributed telephony network
US9462044B1 (en) * 2013-11-25 2016-10-04 Ca, Inc. Secure user, device, application registration protocol
WO2015080460A1 (ko) * 2013-11-26 2015-06-04 엘지전자 주식회사 무선 통신 시스템에서 ae id 할당 방법
CN103618746A (zh) * 2013-12-10 2014-03-05 南京守护宝信息技术有限公司 一种基于推送指令的客户端服务器通信方法
US10540063B2 (en) 2014-01-27 2020-01-21 Microsoft Technology Licensing, Llc Processing actionable notifications
US10802681B2 (en) 2014-01-27 2020-10-13 Microsoft Technology Licensing, Llc Actionable notifications
US9344573B2 (en) 2014-03-14 2016-05-17 Twilio, Inc. System and method for a work distribution service
WO2015145905A1 (ja) * 2014-03-28 2015-10-01 株式会社セガ 追加ダウンロード管理システム、端末装置制御プログラム、端末装置および追加ダウンロード管理装置
CN104980298B (zh) * 2014-04-14 2018-07-06 腾讯科技(深圳)有限公司 一种异常提示方法、装置及系统
US9226217B2 (en) 2014-04-17 2015-12-29 Twilio, Inc. System and method for enabling multi-modal communication
US9760704B2 (en) * 2014-05-23 2017-09-12 Blackberry Limited Security apparatus session sharing
GB2527116B (en) * 2014-06-12 2017-09-20 Canon Kk Adaptative persistent push
CN105282107B (zh) * 2014-07-04 2018-09-11 北京信威通信技术股份有限公司 Xmpp系统访问外部数据的授权方法及通信网络
US9774687B2 (en) 2014-07-07 2017-09-26 Twilio, Inc. System and method for managing media and signaling in a communication platform
US9516101B2 (en) 2014-07-07 2016-12-06 Twilio, Inc. System and method for collecting feedback in a multi-tenant communication platform
US9246694B1 (en) 2014-07-07 2016-01-26 Twilio, Inc. System and method for managing conferencing in a distributed communication network
US9251371B2 (en) 2014-07-07 2016-02-02 Twilio, Inc. Method and system for applying data retention policies in a computing platform
EP3207452A4 (en) * 2014-10-15 2018-06-20 Ayla Networks, Inc. Registration framework for connected consumer devices
US9749428B2 (en) 2014-10-21 2017-08-29 Twilio, Inc. System and method for providing a network discovery service platform
CN104320456B (zh) * 2014-10-22 2018-04-20 迈普通信技术股份有限公司 一种页面推送方法及相关设备
US10050912B2 (en) * 2014-10-27 2018-08-14 At&T Intellectual Property I, L.P. Subscription-based media push service
WO2016078006A1 (zh) * 2014-11-19 2016-05-26 华为技术有限公司 一种定向统计流量的方法、设备及系统
KR20160077856A (ko) 2014-12-24 2016-07-04 삼성전자주식회사 알림 정보 제공 방법 및 장치
CN104580490B (zh) * 2015-01-20 2018-09-18 无线生活(杭州)信息科技有限公司 命令传输方法及装置
US10015236B2 (en) * 2015-01-30 2018-07-03 Ricoh Company, Ltd. Cloud application activation and update service
US9477975B2 (en) 2015-02-03 2016-10-25 Twilio, Inc. System and method for a media intelligence platform
CN105991412B (zh) * 2015-02-12 2019-03-19 阿里巴巴集团控股有限公司 消息推送方法及装置
US9693207B2 (en) * 2015-02-26 2017-06-27 Sony Corporation Unified notification and response system
JP6227583B2 (ja) * 2015-03-25 2017-11-08 Kddi株式会社 情報配信装置、プッシュ通知送信方法、及び、コンピュータプログラム
JP6251210B2 (ja) * 2015-03-25 2017-12-20 Kddi株式会社 端末装置、通信セッション確立方法、及び、プログラム
US11496430B2 (en) * 2015-04-13 2022-11-08 Citrix Systems, Inc. Configurable offline messaging management using user presence information
US10419891B2 (en) 2015-05-14 2019-09-17 Twilio, Inc. System and method for communicating through multiple endpoints
US9948703B2 (en) 2015-05-14 2018-04-17 Twilio, Inc. System and method for signaling through data storage
US10216709B2 (en) 2015-05-22 2019-02-26 Microsoft Technology Licensing, Llc Unified messaging platform and interface for providing inline replies
US20160344677A1 (en) 2015-05-22 2016-11-24 Microsoft Technology Licensing, Llc Unified messaging platform for providing interactive semantic objects
US10491708B2 (en) 2015-06-05 2019-11-26 Apple Inc. Context notifications
EP3342193B1 (en) * 2015-08-27 2023-06-28 Pivotal Software, Inc. Notification system for providing a network service
CN105245577B (zh) * 2015-09-11 2018-09-04 腾讯科技(深圳)有限公司 信息推送方法、装置及系统
US10178194B2 (en) * 2015-10-13 2019-01-08 Adobe Systems Incorporated Intelligent notifications to devices with multiple applications
US11328590B2 (en) * 2015-10-29 2022-05-10 InterNetwork Media, LLC System and method for internet radio automatic content management
CN105871680A (zh) * 2015-11-18 2016-08-17 乐视致新电子科技(天津)有限公司 通信方法和通信系统以及显示装置
US20170171332A1 (en) * 2015-12-15 2017-06-15 Le Holdings (Beijing) Co., Ltd. Message pushing method, electronic device and non-transitory computer-readable storage medium
US10659349B2 (en) 2016-02-04 2020-05-19 Twilio Inc. Systems and methods for providing secure network exchanged for a multitenant virtual private cloud
US10728164B2 (en) 2016-02-12 2020-07-28 Microsoft Technology Licensing, Llc Power-aware network communication
US10135946B2 (en) 2016-04-11 2018-11-20 Verizon Patent And Licensing Inc. Sending messages to mobile devices
US10075583B2 (en) * 2016-04-13 2018-09-11 Microsoft Technology Licensing, Llc Suppressing indications of incoming communications in user interfaces
US10686902B2 (en) 2016-05-23 2020-06-16 Twilio Inc. System and method for a multi-channel notification service
US10063713B2 (en) 2016-05-23 2018-08-28 Twilio Inc. System and method for programmatic device connectivity
CN106095220B (zh) * 2016-05-30 2019-09-27 北京小米移动软件有限公司 通知消息提示方法及装置
US10511542B2 (en) * 2016-06-10 2019-12-17 Microsoft Technology Licensing, Llc Multi-interface power-aware networking
US10225359B2 (en) * 2016-09-22 2019-03-05 International Business Machines Corporation Push notifications from multiple tenant servers
CN107067244B (zh) * 2016-11-03 2020-09-29 阿里巴巴集团控股有限公司 业务实现方法、支付方法、业务实现装置及支付服务端
CN108111565B (zh) * 2016-11-25 2020-08-04 腾讯科技(深圳)有限公司 消息传输方法和装置
US20180367629A1 (en) * 2017-06-20 2018-12-20 Develapp, LLC Platform and Related Process for Providing Push Notifications Via Unique Subscriber Applications
US9935984B1 (en) * 2017-07-31 2018-04-03 Malwarebytes Inc. Scalable cloud-based endpoint security system
CN108337296B (zh) * 2018-01-12 2021-01-01 深圳壹账通智能科技有限公司 消息推送处理方法、装置、计算机设备和存储介质
CN108519922B (zh) * 2018-04-12 2022-07-12 珠海市魅族科技有限公司 信息推送方法及装置、终端设备及计算机可读存储介质
US10855670B2 (en) * 2018-05-03 2020-12-01 Vmware, Inc. Polling service
US10972454B2 (en) * 2018-05-29 2021-04-06 Apple Inc. Conversation merging for electronic devices
US11303627B2 (en) 2018-05-31 2022-04-12 Oracle International Corporation Single Sign-On enabled OAuth token
US11070548B2 (en) * 2018-12-21 2021-07-20 Paypal, Inc. Tokenized online application sessions
CN110012083B (zh) * 2019-03-26 2022-07-01 青岛聚好联科技有限公司 一种数据传输方法、服务器及数据传输装置
US20210142328A1 (en) * 2019-11-13 2021-05-13 Early Warning Services, Llc System and method for preventing fraud in real-time payment transactions
CN111212062B (zh) * 2019-12-31 2022-09-30 航天信息股份有限公司 信息补全的方法、装置、存储介质及电子设备
CN111200656A (zh) * 2020-01-03 2020-05-26 北京小米移动软件有限公司 通知推送方法、装置及系统
CN111310043B (zh) * 2020-02-14 2023-07-28 北京百度网讯科技有限公司 用于推送信息的方法和装置
AU2020356802B2 (en) * 2020-04-14 2021-12-23 Citrix Systems, Inc. Triggering event notifications based on messages to application users
CN114553814B (zh) * 2020-10-27 2024-02-09 花瓣云科技有限公司 处理推送消息的方法和装置
US11558468B2 (en) * 2020-11-03 2023-01-17 T-Mobile Usa, Inc. Mobile client recovery using push notifications to execute exponential back-off procedure
CN114900489B (zh) * 2021-01-26 2023-10-13 腾讯科技(深圳)有限公司 一种消息处理方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030083045A1 (en) 2001-11-01 2003-05-01 Palm Inc. Temporary messaging address system and method
US20100161747A1 (en) 2008-12-22 2010-06-24 Cyril Rayan System and method for two-way anonymous communication
US20100250677A1 (en) 2009-03-31 2010-09-30 International Business Machines Corporation Subscriber device and subscription management that supports real-time communication

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6259446B1 (en) 1992-12-23 2001-07-10 Object Technology Licensing Corporation Menu state system
JPH10190879A (ja) * 1996-12-27 1998-07-21 Casio Comput Co Ltd 通信端末、サーバ装置、及び着信通知システム
CA2307635C (en) 1997-11-05 2004-07-06 Microsoft Corporation Notification scheduling system on a mobile device
US6512930B2 (en) 1997-12-30 2003-01-28 Telefonaktiebolaget Lm Ericsson (Publ) On-line notification in a mobile communications system
US6223046B1 (en) 1998-12-15 2001-04-24 Telefonaktiebolaget Lm Ericsson (Publ) System and method for coordinating notification requests for terminal availability
US7552200B2 (en) 2000-10-19 2009-06-23 Cisco Technology Apparatus and methods for requesting an event notification over a network
US8474693B1 (en) * 2000-12-05 2013-07-02 Diebold, Incorporated Automated banking machine security system and method
ATE244423T1 (de) * 2001-02-28 2003-07-15 Sap Ag Computersystem für geschäftsanwendungen mit alarmmeldung und bedingter inkraftsetzung
US20030061365A1 (en) 2001-03-14 2003-03-27 Microsoft Corporation Service-to-service communication for network services
JP2002344529A (ja) * 2001-05-21 2002-11-29 Sharp Corp プッシュ型サービスシステム
AU2003245766B2 (en) 2002-11-04 2007-05-24 Blackberry Limited Method and apparatus for packet data service discovery
US20040186918A1 (en) * 2003-03-21 2004-09-23 Lonnfors Mikko Aleksi Method and apparatus for dispatching incoming data in a multi-application terminal
JP4401729B2 (ja) * 2003-09-30 2010-01-20 京セラ株式会社 携帯通信端末
JP2005107897A (ja) * 2003-09-30 2005-04-21 Dainippon Printing Co Ltd アクセスポイント、配信システム及びプログラム
US20050080898A1 (en) 2003-10-08 2005-04-14 Block Jerald J. System and method for managing computer usage
US7529801B2 (en) * 2003-11-06 2009-05-05 International Business Machines Corporation Method and system for multiple instant messaging login sessions
US7383307B2 (en) 2004-01-07 2008-06-03 International Business Machines Corporation Instant messaging windowing for topic threads
US8856346B2 (en) 2004-01-15 2014-10-07 Unwired Planet, Llc Stateful push notifications
US20060009243A1 (en) 2004-07-07 2006-01-12 At&T Wireless Services, Inc. Always-on mobile instant messaging of a messaging centric wireless device
US7818379B1 (en) * 2004-08-31 2010-10-19 Aol Inc. Notification and disposition of multiple concurrent instant messaging sessions involving a single online identity
US7970823B2 (en) * 2004-09-02 2011-06-28 Broadway Technology, Llc System for sharing data objects among applications
US7978618B2 (en) * 2004-10-08 2011-07-12 Sharp Laboratories Of America, Inc. Methods and systems for user interface customization
US7617162B2 (en) * 2005-03-04 2009-11-10 Atul Saini Real time push notification in an event driven network
US7499995B2 (en) 2005-06-28 2009-03-03 International Business Machines Corporation Managing permission for accessing third party applications on a telecommunications network
US20070156693A1 (en) * 2005-11-04 2007-07-05 Microsoft Corporation Operating system roles
US8693995B2 (en) * 2007-12-13 2014-04-08 Michelle Fisher Customized mobile applications for special interest groups
US8280979B2 (en) * 2006-02-27 2012-10-02 Microsoft Corporation Persistent public machine setting
EP3575951A1 (en) * 2007-04-17 2019-12-04 Visa USA, Inc. Method and system for authenticating a party to a transaction
US8630625B2 (en) * 2007-09-14 2014-01-14 At&T Intellectual Property I, L.P. System and method for personalized messaging
JP2009157650A (ja) * 2007-12-26 2009-07-16 Softbank Mobile Corp コンテンツ提供システム、コンテンツ提供方法およびコンテンツ提供プログラム
US9363745B2 (en) 2008-03-26 2016-06-07 Srinivasan Balasubramanian Device managed access point lists in wireless communications
US8719420B2 (en) 2008-05-13 2014-05-06 At&T Mobility Ii Llc Administration of access lists for femtocell service
US8364123B2 (en) 2009-02-25 2013-01-29 Apple Inc. Managing notification messages
US8565730B2 (en) * 2008-06-19 2013-10-22 Blackberry Limited User interface for configuring service account-specific user notifications for inbound electronic messages
US9135433B2 (en) * 2008-08-29 2015-09-15 Adobe Systems Incorporated Identifying reputation and trust information for software
US8315395B2 (en) * 2008-12-10 2012-11-20 Oracle America, Inc. Nearly-stateless key escrow service
US8630624B2 (en) * 2009-02-25 2014-01-14 Apple Inc. Managing notification messages
US20100274691A1 (en) * 2009-04-28 2010-10-28 Ayman Hammad Multi alerts based system
US8417231B2 (en) 2009-05-17 2013-04-09 Qualcomm Incorporated Method and apparatus for programming a mobile device with multiple service accounts
US8826304B2 (en) * 2009-08-13 2014-09-02 Google Inc. Virtual object indirection in a hosted computer environment
US20110195695A1 (en) * 2010-02-11 2011-08-11 Rashim Gupta Managing event distribution to applications within a wireless communications device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030083045A1 (en) 2001-11-01 2003-05-01 Palm Inc. Temporary messaging address system and method
US20100161747A1 (en) 2008-12-22 2010-06-24 Cyril Rayan System and method for two-way anonymous communication
US20100250677A1 (en) 2009-03-31 2010-09-30 International Business Machines Corporation Subscriber device and subscription management that supports real-time communication

Also Published As

Publication number Publication date
US20120173610A1 (en) 2012-07-05
KR20130109229A (ko) 2013-10-07
CN103348663A (zh) 2013-10-09
EP2649781B1 (en) 2019-04-10
WO2012094253A1 (en) 2012-07-12
EP2649781A1 (en) 2013-10-16
CN103348663B (zh) 2015-08-19
BR112013017443A2 (pt) 2016-09-27
US11057484B2 (en) 2021-07-06
US8924489B2 (en) 2014-12-30
JP5719453B2 (ja) 2015-05-20
US20150067062A1 (en) 2015-03-05
MX2013007842A (es) 2013-10-03
BR112013017443B1 (pt) 2021-11-03
AU2011353561B2 (en) 2015-10-08
AU2011353561A1 (en) 2013-07-25
JP2014503152A (ja) 2014-02-06
EP2649781A4 (en) 2014-06-18

Similar Documents

Publication Publication Date Title
KR101510977B1 (ko) 다중-사용자 장치를 위한 메시지 푸시 통지 클라이언트 개량
US9985917B2 (en) Managing notification messages
EP3135022B1 (en) Answering a call with client through a host
EP3404875B1 (en) Electronic device providing dialog contents, server and method thereof
CN110839078A (zh) 代理推送
EP2898420A1 (en) A data-sharing method, terminal, server, and system
WO2008058022A2 (en) User-generated content with instant-messaging functionality
US9432437B1 (en) Dynamic telemetry client message routing
JP2020526991A (ja) マルチエージェントメッセージングのための技法
CN104272342A (zh) 用于多设备环境中的消息服务的方法和系统及其设备
EP2974159B1 (en) Method, device and system for voice communication
US10075403B2 (en) Method and system for managing voice mails in a universal plug and play network environment

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