JP2016505995A - 複数のクライアントデバイスに亘る通知フィード - Google Patents

複数のクライアントデバイスに亘る通知フィード Download PDF

Info

Publication number
JP2016505995A
JP2016505995A JP2015552637A JP2015552637A JP2016505995A JP 2016505995 A JP2016505995 A JP 2016505995A JP 2015552637 A JP2015552637 A JP 2015552637A JP 2015552637 A JP2015552637 A JP 2015552637A JP 2016505995 A JP2016505995 A JP 2016505995A
Authority
JP
Japan
Prior art keywords
notification
records
record
client
message
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2015552637A
Other languages
English (en)
Other versions
JP6105089B2 (ja
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 JP2016505995A publication Critical patent/JP2016505995A/ja
Application granted granted Critical
Publication of JP6105089B2 publication Critical patent/JP6105089B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/107Computer-aided management of electronic mailing [e-mailing]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/51Indexing; Data structures therefor; Storage structures
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Tourism & Hospitality (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

イベント通知は複数のクライアントデバイスまたはプラットフォームに亘ってユーザに提供されうる。ユーザがあるデバイスにおいて行動を起こした場合、すべてのデバイスにおける通知はその行動を反映するべく更新可能である。例えば、通知はトピックおよび時間シーケンス(または他のシーケンス)によってインデクス化されうる。現在の情報がユーザに提供されうるよう、同じトピックに関する複数の通知はサーバまたはクライアントにおいて統合されうる。【選択図】図1

Description

本開示は一般にオンラインコンテンツ管理サービスに関し、特にそのようなサービスから複数のクライアントデバイスに通知を提供することに関する。
オンラインコンテンツ管理サービスは、インターネットを使用して、ユーザが複数のデバイスに亘るコンテンツにアクセスしそのコンテンツを管理することを可能とする。典型的なオンラインコンテンツ管理サービスでは、ユーザはサービス提供者にアカウントを開設し、種々のコンテンツアイテムをそのアカウントと関連付ける。例えば、あるオンラインコンテンツ管理サービスは、ユーザがコンテンツアイテム(テキストドキュメント、電子メールメッセージ、テキストメッセージ、他のタイプのメッセージ、写真やビデオや音声ファイルなどのメディアファイル、および/または複数のファイルを含むフォルダを含むがそれに限定されない)を格納し、他のユーザが選択的にそのコンテンツアイテムにアクセスすることを可能としてもよい。コンテンツアイテムはサービス提供者によって維持されているマスタレポジトリに保持されてもよく、種々のユーザデバイス上のローカルコピーに反映されるか同期されてもよい。ユーザは他のユーザの行動に基づいて更新を受けることができる。例えば、ソーシャルネットワークにおいて、状態更新またはあるユーザによって掲示された他のコンテンツアイテムは、受け取ることへの関心を示した他のユーザに伝搬されうる。
モバイルコンピューティングデバイスの急増と共に、ユーザは今やウェブブラウザやデスクトップアプリケーションプログラムやモバイルデバイスアプリケーションなどのさまざまなクライアントから、同じオンラインコンテンツ管理サービスにアクセスすることが可能である。オンラインコンテンツ管理サービス提供者にとって、ユーザのクライアントすべてを同期したままにすることは困難でありうる。
本発明のある実施の形態は、複数のクライアントデバイスまたはプラットフォームに亘ってユーザにイベント通知を提供することに関する。ある実施の形態では、通知フィードはメッセージのストリームまたはシーケンスを含んでもよい。メッセージのストリームまたはシーケンスは、ユーザが共有コンテンツレポジトリまたはグループに参加するよう招待されたときや、ユーザがそのような招待を受け入れた(または拒否した)ときや、ユーザのアカウントを含む活動(例えば、パスワードなどのセキュリティ設定の変更や課金エラーや割り当て超過など)が検出されたときなどのさまざまなイベントの発生を報告する。ユーザがあるデバイスにおいて行動を起こした場合、すべてのデバイスにおける通知はその行動を反映するべく更新されてもよい。
通知フィードはフレキシブルフィードであってもよい。フレキシブルフィードでは、ユーザに出される通知情報(本明細書では「アラート」とも称される)は、例えば新たなイベントが起こると旧い情報を現在の情報に置き換えることで、現在の状態を反映するよう実質的にリアルタイムで更新される。ある実施の形態では、各通知をトピック識別子に加えてシーケンス情報およびコンテンツを含むよう構成することで、フレキシブルフィードを実装してもよい。通知のリストが与えられると、サーバおよび/またはクライアントはトピック識別子を使用して、同じトピックに係る複数の通知を特定してもよい。複数の通知が同じトピックを含む場合、クライアントは時間シーケンス情報を使用して、どの通知がユーザにアラートとして出されるべきかを決定してもよい。例えば、より古い通知はユーザに対して隠されてもよい。ある実施の形態では、サーバは時間情報を使用して、例えばまだ送られていない通知が後のイベントによってすでに取って代わられている場合にある通知は特定のクライアントには送信される必要がないと決定してもよい。
本発明のある態様はサーバおよびサーバで実行可能な方法に関する。例えば、サーバはターゲットユーザに関連するイベントに係るイベント情報を受け、そのイベント情報に基づいて通知データストアに第1通知レコードを生成してもよい。第1通知レコードはトピックフィールドとシーケンスフィールドとコンテンツフィールドとを含んでもよい。サーバは、第1通知レコードが利用可能であることを示す第1メッセージを生成してもよい。第1メッセージは、ターゲットユーザの識別子と第1通知レコードの識別子とを含んでもよい。サーバは、ターゲットユーザに関連する複数のクライアントに第1メッセージを発してもよい。そのメッセージは、他の任意のクライアントへの発布とは独立して各クライアントに発せられてもよい。
他の例として、サーバはクライアントから新たな通知レコードの要求を受けてもよい。サーバは、通知データストアから、要求に応じた通知レコードの始めの組を取得し、その通知レコードの始めの組から通知レコードの終わりの組を生成してもよい。例えば、終わりの組を生成する際、始めの組の第1通知レコードのトピックフィールドに基づいて、サーバは第1通知レコードが組の他の通知レコードと統合されるべきか否かを決定してもよい。もしそうであれば、サーバはそれらのレコードを統合してもよい。この統合は、通知データストアのレコードに影響を与えずに達成されてもよい。通知レコードの終わりの組は要求したクライアントに送られてもよい。
本発明のある態様はクライアントおよびクライアントで実行可能な方法に関する。例えば、クライアントはサーバから通知レコードを要求し、そのサーバからその要求に応じたひとつ以上の通知レコードを取得してもよい。クライアントは、処理すべき通知レコードの始めの組を特定してもよい。始めの組は、サーバから受けた通知レコードを含む。ある例では、始めの組はサーバに要求する前にクライアントに存在する通知レコードを含んでもよい。クライアントは通知レコードの始めの組から通知レコードの終わりの組を生成してもよい。例えば、始めの組の第1通知レコードのトピックフィールドに基づいて、クライアントは第1通知レコードが始めの組の他の通知レコードと統合されるべきか否かを決定してもよい。もしそうであれば、クライアントはそれらのレコードを統合してもよい。通知レコードの終わりの組に基づき、クライアントはユーザにひとつ以上のアラートを出してもよい。
以下の詳細な説明および添付の図面は、本発明の性質および利点についてのよりよい理解を与えるであろう。
本発明の実施の形態に係るオンラインコンテンツ管理サービスにアクセスするクライアントを示す図である。 本発明の実施の形態に係るクライアントへプッシュ通知を行うためのシステムを示す図である。 代表的なコンピュータシステムを示す簡略化されたブロック図である。 本発明の実施の形態に係るイベント分類体系を示す図である。 本発明の実施の形態に係る通知レコードの例を示す図である。 本発明の実施の形態に係るメッセージについて使用できる一般化可能なデータ構造を示す図である。 本発明の実施の形態に係るユーザに関連する複数のクライアントへイベント通知をプッシュするための処理のフロー図である。 本発明の実施の形態に係るユーザに通知を提供するための処理のフロー図である。 本発明の実施の形態に係るクライアントへ通知レコードを提供するための処理のフロー図である。
本発明のある実施の形態は、複数のクライアントデバイスまたはプラットフォームに亘ってユーザにイベント通知を提供することに関する。ある実施の形態では、通知フィードはメッセージのストリームまたはシーケンスを含んでもよい。メッセージのストリームまたはシーケンスは、ユーザが共有コンテンツレポジトリまたはグループに参加するよう招待されたときや、ユーザがそのような招待を受け入れた(または拒否した)ときや、ユーザのアカウントを含む活動(例えば、パスワードなどのセキュリティ設定の変更や課金エラーや割り当て超過など)が検出されたときなどのさまざまなイベントの発生を報告する。ユーザがあるデバイスにおいて行動を起こした場合、すべてのデバイスにおける通知はその行動を反映するべく更新されてもよい。
通知フィードはフレキシブルフィードであってもよい。フレキシブルフィードでは、ユーザに出される通知情報(本明細書では「アラート」とも称される)は、例えば新たなイベントが起こると旧い情報を現在の情報に置き換えることで、現在の状態を反映するよう実質的にリアルタイムで更新される。ある実施の形態では、各通知をトピック識別子に加えて時間シーケンス情報およびコンテンツを含むよう構成することで、フレキシブルフィードを実装してもよい。通知のリストが与えられると、サーバおよび/またはクライアントはトピック識別子を使用して、同じトピックに係る複数の通知を特定してもよい。複数の通知が同じトピックを含む場合、クライアントは時間シーケンス情報を使用して、どの通知がユーザにアラートとして出されるべきかを決定してもよい。例えば、より古い通知はユーザに対して隠されてもよい。ある実施の形態では、サーバは時間情報を使用して、例えばまだ送られていない通知が後のイベントによってすでに取って代わられている場合にある通知は特定のクライアントには送信される必要がないと決定してもよい。
図1は、本発明の実施の形態に係るオンラインコンテンツ管理サービス100にアクセスするクライアントを示す図である。オンラインコンテンツ管理サービス100は、例えば、ファイル保管サービスとファイル共有サービスとユーザがメッセージおよび/または他のコンテンツを掲示することを可能とするソーシャルメディアサービスなどを含んでもよい。オンラインコンテンツ管理サービス100はサービス提供者によって維持されるサーバ上でホストされ、インターネットなどのネットワーク102を介してアクセスされてもよい。
ユーザは、種々のクライアント110、112、114、116を操作することでオンラインコンテンツ管理サービス100にアクセスしてもよい。本明細書において、「クライアント」は主に、ユーザがオンラインコンテンツ管理サービス100とやりとりすることを可能とするコンピュータハードウエアとソフトウエアとの組み合わせを指す。例えば、クライアント110はウェブブラウザ(例えば、インターネットエクスプローラ(登録商標)、グーグルクローム(登録商標)、またはサファリ(登録商標))を実行するデスクトップまたはラップトップコンピュータであってもよい。このウェブブラウザは、HTTP(Hypertext Transfer Protocol)などのウェブプロトコルを使用してオンラインコンテンツ管理サービス100と通信する。クライアント112は、オンラインコンテンツ管理サービス100の提供者によって提供されるアプリケーションプログラムを実行するデスクトップまたはラップトップコンピュータであってもよい。オンラインコンテンツ管理サービスがファイルへのアクセスを提供するある例では、アプリケーションプログラムはサーバ上にホストされたファイルがクライアントコンピュータのオペレーティングシステムに関連するファイルシステム構造内に存在するように現れることを可能としてもよい。ある例では、同じクライアントコンピュータがウェブブラウザおよびデスクトップアプリケーションプログラムの両方を実行することができることに注意すべきである。したがって、単一の物理的なデバイスがひとつ以上のクライアントを実装しうることは理解されるべきである。
クライアントの他の例は、タブレットコンピュータ114や携帯電話116などのモバイルデバイスを含み、それらはオンラインコンテンツ管理サービス100と通信するアプリケーションプログラム(「apps」とも称される)を実行することができる。様々なときに、ユーザはクライアント110、112、114、116のうちのひとつ以上とやりとりしてもよい。
ある実施の形態では、オンラインコンテンツ管理サービス100は、ユーザおよび/またはクライアントが関心を持ちうるイベントの通知を提供してもよい。本明細書では、「イベント」はユーザに関連する任意のタイプの活動を含んでもよい。例えば、ユーザがファイルを含む共有フォルダへのアクセスを有し、かつ、他のユーザがその共有フォルダのファイルを変更する場合、オンラインコンテンツ管理サービス100は通知を提供してもよい。他の例としては、第2ユーザはユーザにコンテンツを共有する機会を提供してもよい。これは例えば第2ユーザによって生成または管理される共有フォルダに「参加」するようにユーザを招待することによる。ある実施の形態では、ユーザが現在どのプラットフォームとやりとりしているかによらずに、イベント通知はユーザに関連するすべてのクライアント110、112、114、116に提供される。
イベントが通知されることに続いて、通知されたユーザ(または他のユーザ)はそのイベントに関して行動を起こしてもよいし、この行動は他のイベントを構成してもよい。例えば、共有フォルダに参加するための招待を受けることに応じて、ユーザはその招待を受け入れてもよいし拒否してもよい。または招待するユーザは受け取りユーザが受け入れる前にその招待を取り下げてもよい。これらの行動はさらなるイベントを構成してもよく、このさらなるイベントについて通知が作成されうる。
本明細書において、「通知」は主にサービスがひとつ以上のクライアントに提供するイベント関連情報を指す。ある実施の形態では、クライアントはそれが受けた通知のいくつかまたはすべてをユーザによって視認可能(または知覚可能)としてもよい。例えば、クライアントは通知が受け取られたことを示す視覚的インジケータを表示してもよいし、通知を説明するテキスト(例えば「ジョーがフォルダ3を共有するようあなたを誘いました。」)を表示してもよいし、音を流してもよいし、振動してもよいし、通知を説明する言葉を話してもよい。本明細書において、「アラート」という語はユーザ視認可能(知覚可能)な形の通知を指すために使用される。
ある実施の形態では、個々のイベント通知に加えてまたはその代わりに、クライアント110、112、114、116の任意のものまたはすべてはユーザに通知フィードを提供してもよい。本明細書において、「通知フィード」(または単に「フィード」)はイベント関連アラートのリストである。例示的なフィード120はクライアント110のディスプレイ122に示される。フィードは時系列にリストされたアラートであってもよく、各通知のコンテンツおよび/または状態についてユーザに知らせる種々のしるしを含んでもよい。フィードは「フレキシブルな」フィードであってもよい。このフレキシブルなフィードでは、同じトピックに係る通知は統合されるかまたは折りたたまれる。これにより例えばフィードは同じトピックに関する直近の通知のみを提供する。例として、フィード120は「ジョーがフォルダ3を共有するようあなた(ユーザボブ)を誘いました。」というアラートを含む。ユーザボブがジョーの招待を受け入れた場合、フィード120は表示されたアラートを隠し、表示されたアラートを「あなたはフォルダ3を共有するジョーの誘いを受け入れました。」に置き換えるよう更新されてもよい。または表示されたアラートは隠されてもよい。他の例として、ユーザケイが共有フォルダに写真をアップロードすると、各新たな写真はイベント通知を生成してもよく、一方でフィード120は「ケイがフォルダ7に写真をアップロードしました。」などの単一のアラートを出してもよい。通知を統合するために使用されうる技術の例は後述する。
フィードはクライアント110、112、114、116の任意のものまたはすべてで提示可能である。異なるクライアントで提示されるフィードは同期されうるかまたは整合されうる。例えば、オンラインコンテンツ管理サービス100はクライアント110、112、114、116に「プッシュ」通知を行ってもよい。
図2は、本発明の実施の形態に係るクライアント110、112、114、116へプッシュ通知を行うためのシステム200を示す図である。システム200は通知サーバ202とモバイルディスパッチャ204とウェブディスパッチャ206とデスクトップディスパッチャ208とを含む。これらのすべては、図1のオンラインコンテンツ管理サービス100の提供者によって維持および/または運営されるサーバ(または他のコンピュータシステム)に実装されうる。サーバ202は通知データストア210に通信可能に接続される。サーバ202はメッセージキュー214を維持し、メッセージキュー214はモバイルディスパッチャ204とウェブディスパッチャ206とデスクトップディスパッチャ208とによってアクセス可能である。
通知サーバ202はイベント通知の生成およびこれらの通知のクライアントへの発布に関する動作を行ってもよい。この例は後述する。ある実施の形態では、通知サーバ202はサーバなどの適切なコンピュータハードウエア上で実行されるひとつ以上のソフトウエア(コード)モジュールとして実装されうる。ある例では、通知サーバ202は、コンテンツ管理(例えばファイル保管および取得)および/またはユーザアカウント管理(例えばユーザアカウントの生成および更新、課金等)などのオンラインコンテンツ管理サービスの他の側面に関する動作を行う他のサーバから物理的または論理的に離されてもよい。
リスナデータストア212は、例えばデータベースまたは他の任意のデータ保管技術と適切なコンピュータ読み取り可能保持媒体とを使用して、実装されてもよい。リスナデータストア212は、特定のクライアントデバイスおよび/または特定のユーザに関連するクライアントを特定する情報を含んでもよい。例えば、ユーザ名「ボブ」を有する特定のユーザは、彼の家のコンピュータにインストールされたデスクトップアプリケーションプログラム(例えば、クライアント112)と、彼の家のコンピュータまたは他のコンピュータ上で動くウェブブラウザクライアント(例えば、クライアント110)と、iOSオペレーティングシステム(アップル社の製品)を実行するタブレット(例えば、クライアント114)と、アンドロイド(登録商標)オペレーティングシステム(Open Handset Allianceの製品)を実行する携帯電話(例えば、クライアント116)と、を有してもよい。リスナデータストア212は、ユーザ名「ボブ」で質問された場合に、これらのクライアントのそれぞれについての特定情報を提供できる。リスナデータストア212は、種々のクライアントからの通信に基づいてオンラインコンテンツ管理サービスによって入力されてもよい。例えば、ボブが最初に特定のクライアントからオンラインコンテンツ管理サービスにサインインした場合、通知サーバ202(またはオンラインコンテンツ管理サービスに関連する他のサーバ)はリスナデータストア212にボブとそのクライアントとを関連付けるレコードを生成してもよい。
通知サーバ202は、それについての通知が生成されるべきイベントを検出することができる。ある実施の形態では、オンラインコンテンツ管理サービスに関連する他のサーバによって通知サーバ202に送られたイベント情報220に基づいて、イベントが検出されうる。したがって、例えば、ユーザアカウントサーバまたはコンテンツ管理サーバは、それらのサーバで発生する行動に基づいて通知サーバ202にイベント情報220を送ってもよい。イベントおよび関連情報の例は図4を参照して後述する。
通知サーバ202はイベント情報220に基づいて通知レコード222を生成し、通知レコード222を通知データストア210に保持してもよい。通知データストア210は、例えばデータベースまたは他の任意のデータ保管技術と適切なコンピュータ読み取り可能保持媒体とを使用して実装されてもよい。通知レコード222はデータベーステーブル内の列を含んでもよいし、または任意の構造化されたデータオブジェクトを含んでもよい。列やデータオブジェクトは、クライアントからの要求に応じてサーバ202が特定の通知を容易に取得できるようにするような形でイベント情報220を表す。通知レコード222の例示的な構造は図5を参照して後述する。
通知サーバ202は、通知レコードがデータストア210に加えられたときにクライアントに知らせるために、クライアントにメッセージを発してもよい。ある実施の形態では、通知サーバ202は通知レコード222に対応するメッセージ224を生成し、メッセージ224をメッセージキュー214に加える。メッセージ224は通知レコード222内の実際の情報を含んでもよいが、そうである必要はない。ある実施の形態では、メッセージ224は単に通知レコード222の存在を示し、かつメッセージ224をクライアントへルートするのに使用可能な情報を提供し、かつ受け取るクライアントがデータストア210から通知レコード222を取得することを可能としてもよい。例えば、メッセージ224はメッセージが向けられているユーザの識別子とレコード222の識別子とを含んでもよい。メッセージ224の例示的な構造は図6を参照して後述する。
クライアントへ発せられたメッセージ224の配送は、モバイルディスパッチャ204、ウェブディスパッチャ206およびデスクトップディスパッチャ208などのディスパッチャを使用することでクライアント特定的な形で達成可能である。それらのディスパッチャのそれぞれは、メッセージキュー226のなかの新たなメッセージ224を独立に検出し、適切な技術を使用して対応するクライアント特定メッセージ(CSM)240、242、244、246をクライアントにプッシュしてもよい。クライアント特定メッセージ240、242、244、246は、メッセージ224と構造的および/または内容的に同等であってもよい(が、そうである必要はない)。特定のクライアント特定メッセージのフォーマットおよびコンテンツは、そのクライアントについて使用される配送プロトコルに合わせられる。クライアント特定メッセージが通知データストア210内で対応する通知レコードを見つけるのに使用可能な参照情報を含む限り、クライアントは後述のように通知レコードを取得することができるであろう。
例えば、タブレットコンピュータや携帯電話などのモバイルプラットフォームは、クライアント特定メッセージを特定のデバイスに配送するために、そのオペレーティングシステムに関連するプッシュ通知サービスに依存してもよい。プッシュ通知サービスの例は、アップル社によって運営されiOSオペレーティングシステムを実行するデバイスに関連するApple Push Notification Service (APNS)と、グーグル社によって運営されアンドロイド(登録商標)オペレーティングシステムを実行するデバイスに関連するGoogle Cloud Messaging (GCM)と、を含む。
あるプッシュ通知サービスは、クライアントへのメッセージのソースが宛先デバイスの識別子とメッセージの内容とを提供することを要求する。したがって、ある実施の形態では、モバイルディスパッチャ204がメッセージキュー214に新たなメッセージ224を検出した場合、モバイルディスパッチャ204はメッセージ224からユーザ識別子を抽出してもよい。モバイルディスパッチャ204はユーザ識別子を使用してリスナデータストア212に質問し、どの(あれば)モバイルデバイスがユーザ識別子と関連付けられているかを決定してもよい。リスナデータストア212からの情報に基づいて、モバイルディスパッチャ204は、例えばAPNS(クラウド232として表される)、GCM(クラウド234として表される)または特定のモバイルデバイスにとって適切な他のプッシュ通知サービスと通信することによって、ひとつ以上のプッシュ通知(クライアント特定メッセージ240、242として表される)を生成してもよい。
ウェブディスパッチャ206は、ロングプリング(long pulling)などの技術を使用して、クライアント110などのアクティブなウェブクライアントにクライアント特定メッセージ244を(例えば(明示的には図示されていない)インターネットを介して)配送してもよい。
デスクトップディスパッチャ208は、クライアント112などのアクティブなデスクトップクライアントにクライアント特定メッセージ246を(例えばインターネットを介して)配送してもよい。デスクトップクライアント112とオンラインコンテンツ管理サービスとの間に確立された特定の通信プロトコルに応じて、種々の技術が使用可能である。その例は、ロングプリングやデスクトップクライアントによるディスパッチャ208のポーリングやHTTPサーバプッシュなどを含む。
各ディスパッチャ204、206、208は独立にメッセージキュー214をスキャンし、それがまだ処理していないメッセージを特定してもよい。ある実施の形態では、ディスパッチャ204、206、208はメッセージキュー214からメッセージを除去しない。代わりに、キュー214はFIFO(first in、first out)キューとして管理されてもよく、各ディスパッチャは個別にキュー内での自己の現在のリード位置を追跡してもよい。この場合、各ディスパッチャはすべてのメッセージを時系列で読むことができる。その結果、各ディスパッチャ204、206、208はキュー214内の各メッセージを適切なクライアントへ送り出すことができ、特定のユーザに関連するすべてのクライアントはそのユーザへのすべてのメッセージを受けることができる。
ある実施の形態では、メッセージキュー214から定期的に、古いメッセージ(例えば、1日や1週間などのある固定期間の後にメッセージは期限切れとなってもよい)および/またはすべてのディスパッチャ204、206、208によって処理されたことが知られているメッセージがパージされうる。
メッセージ224に対応するクライアント特定メッセージ(例えば、メッセージ240、242、244、246のひとつ)を受けることに応じて、受け取ったクライアントは、例えばサーバ202または他のサーバ(不図示)に要求を送ることで、関心のあるレコードを特定するための受け取ったクライアント特定メッセージに含まれる情報を使用して、通知データストア210から対応する通知レコード222を要求してもよい。
本明細書で説明される種々の動作はコンピュータシステムに実装されてもよく、そのようなコンピュータシステムは一般的に用いられているデザインのものであってもよい。図3は、代表的なコンピュータシステム300を示す簡略化されたブロック図である。種々の実施の形態では、コンピュータシステム300または類似のシステムは、クライアント(例えば、プラットフォーム110、112、114、116のいずれか)またはサーバ(例えば、サーバ200)を実現してもよい。
コンピュータシステム300は、処理ユニット305と保持サブシステム310と入力デバイス320と出力デバイス325とネットワークインタフェース335とバス340とを備える。
処理ユニット305は単一のプロセッサを含んでもよく、そのプロセッサはひとつ以上のコアを有してもよい。あるいは処理ユニット305は複数のプロセッサを含んでもよい。ある実施の形態では、処理ユニット305は汎用プライマリプロセッサに加えて、グラフィックプロセッサやデジタル信号プロセッサなどのひとつ以上の特定用途コプロセッサを含んでもよい。ある実施の形態では、いくつかまたはすべての処理ユニット305は、特定用途向け集積回路(ASICs)やフィールドプログラマブルゲートアレイ(FPGAs)などのカスタマイズされた回路を使用して実装されてもよい。ある実施の形態では、そのような集積回路は回路自体に保持されているインストラクションを実行する。他の実施の形態では、処理ユニット305は保持サブシステム310に保持されるインストラクションを実行してもよい。
保持サブシステム310は、システムメモリやリードオンリーメモリ(ROM)やパーマネントストレージデバイスなどの種々のメモリユニットを含んでもよい。ROMは、処理ユニット305および電子デバイス300の他のモジュールが必要とする静的データおよびインストラクションを保持してもよい。パーマネントストレージデバイスは読み書きメモリデバイスであってもよい。このパーマネントストレージデバイスは、コンピュータシステム300の電源が切られた場合でもインストラクションおよびデータを保持する不揮発性メモリユニットであってもよい。本発明のある実施の形態は、パーマネントストレージデバイスとしてマスストレージデバイス(例えば、磁気ディスクや光学ディスクやフラッシュメモリ)を使用してもよい。他の実施の形態は、パーマネントストレージデバイスとしてリムーバブルストレージデバイス(例えば、フロッピー(登録商標)ディスクやフラッシュドライブ)を使用してもよい。システムメモリは、読み書きメモリデバイスであってもよく、あるいはまたダイナミックランダムアクセスメモリなどの揮発性の読み書きメモリであってもよい。システムメモリは、処理ユニット305が実行中に必要とするいくつかまたはすべてのインストラクションおよびデータを保持してもよい。
保持サブシステム310は、いろいろな種類の半導体メモリチップ(DRAM、SRAM、SDRAM、フラッシュメモリ、プログラマブルリードオンリーメモリ)などを含むコンピュータ読み取り可能保持媒体の任意の組み合わせを含んでもよい。磁気ディスクおよび/または光学ディスクが使用されてもよい。ある実施の形態では、保持サブシステム110は読み取り可能および/または書き込み可能なリムーバブルストレージ媒体を含んでもよい。そのような媒体の例は、コンパクトディスク(CD)やリードオンリーデジタルバーサタイルディスク(例えば、DVDROMやデュアルレイヤDVDROM)やリードオンリーかつ記録可能ブルーレイ(登録商標)ディスクやウルトラデンシティー光学ディスクやフラッシュメモリカード(例えば、SDカードやミニSDカードやマイクロSDカードなど)や磁気「フロッピー(登録商標)」ディスクなどを含む。コンピュータ読み取り可能保持媒体は、無線で通過するまたは有線接続を介する搬送波も一時的な電気信号も含まない。
ある実施の形態では、保持サブシステム310は、オペレーティングシステムやブラウザアプリケーションやオンラインコンテンツ管理サービスにアクセスするためのモバイルアプリケーションやオンラインコンテンツ管理サービスにアクセスするためのデスクトップアプリケーションなどの、処理ユニット305によって実行されるべきひとつ以上のソフトウエアプログラムを保持してもよい。「ソフトウエア」は主に、処理ユニット305によって実行されるとコンピュータシステム300に種々の動作を行わせ、したがってソフトウエアプログラムの動作を実行するひとつ以上の特定のマシン実装を規定する一連のインストラクションを指す。インストラクションは、リードオンリーメモリに存在するファームウエアとしておよび/または不揮発性保持媒体に保持されるアプリケーションとして保持されてもよく、処理ユニット305による実行のために揮発性の作業メモリに読み出されてもよい。ソフトウエアは、単一のプログラムとして、または別個のプログラムの集合として、または所望の通りに作用し合うプログラムモジュールとして、実装されてもよい。処理ユニット305は保持サブシステム310から実行すべきプログラムインストラクションと処理すべきデータとを取得し、本明細書で説明される種々の動作を実行してもよい。
ユーザインタフェースは、ひとつ以上のユーザ入力デバイス320とひとつ以上のユーザ出力デバイス325とによって提供されてもよい。入力デバイス320は、それを介してユーザがコンピュータシステム300に信号を提供できる任意のデバイスを含んでもよい。コンピュータシステム300はその信号を、特定のユーザ要求または情報を示すものとして解釈してもよい。種々の実施の形態では、入力デバイス320は、キーボード、タッチパッド、タッチスクリーン、マウスまたは他のポインティングデバイス、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、マイクロホンなどのいずれかまたはすべてを含んでもよい。
ユーザ出力デバイス325は、それを介してコンピュータシステム300が情報をユーザに提供できる任意のデバイスを含んでもよい。例えば、ユーザ出力デバイス325はコンピューティングシステム300によって生成された画像を表示するディスプレイを含んでもよい。ディスプレイは、例えば液晶ディスプレイ(LCD)や有機発光ダイオード(OLED)を含む発光ダイオード(LED)や投影システムや陰極線管(CRT)などの種々の画像生成技術を、支持エレクトロニクス(例えばデジタルアナログコンバータやアナログデジタルコンバータやシグナルプロセッサなど)といっしょに組み入れてもよい。ある実施の形態は、入力デバイスおよび出力デバイスの両方として機能するタッチスクリーンなどのデバイスを含んでもよい。ある実施の形態では、他のユーザ出力デバイス325がディスプレイに加えてまたはその代わりに提供されてもよい。その例は、インジケータライトやスピーカや触覚「ディスプレイ」デバイスやプリンタなどを含む。
ネットワークインタフェース335はコンピュータシステム300にボイスおよび/またはデータ通信能力を提供してもよい。ある実施の形態では、ネットワークインタフェース335は、(例えば、携帯電話技術や3G、4G、EDGE、WiFi(IEEE802.11ファミリー規格)などのアドバンストデータネットワーク技術や他のモバイル通信技術やそれらの任意の組み合わせを使用して)無線ボイスおよび/またはデータネットワークにアクセスするための無線(RF)送受信コンポーネント、GPSレシーバコンポーネント、および/または他のコンポーネント、を含んでもよい。ある実施の形態では、ネットワークインタフェース335は無線インタフェースに加えてまたはその代わりに有線ネットワーク接続(例えば、イーサネット(登録商標))を提供してもよい。ネットワークインタフェース335は、ハードウエアコンポーネント(例えば、アンテナや変調器/復調器や符号化器/復号化器や他のアナログおよび/またはデジタル信号処理回路)とソフトウエアコンポーネントとの組み合わせを使用して実装されてもよい。
バス340は、コンピューティングシステム300の種々のコンポーネントを通信可能に接続する種々のシステムバス、周辺バスおよびチップセットバスを含んでもよい。例えば、バス340は処理ユニット305を保持サブシステム310と通信可能に接続してもよい。バス340は、入力デバイス320および出力デバイス325に接続されてもよい。バス340は、ネットワークインタフェース335を介してコンピュータシステム300をネットワークに接続してもよい。このようにして、コンピューティングシステム300は複数のコンピュータシステムのネットワーク(例えば、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)やイントラネットやインターネットなどのネットワークのネットワーク)の一部であってもよい。
ある実施の形態は、コンピュータ読み取り可能保持媒体にコンピュータプログラムインストラクションを保持するマイクロプロセッサ、ストレージおよびメモリなどの電子コンポーネントを含む。本明細書で説明される特徴の多くは、コンピュータ読み取り可能保持媒体上で符号化されているプログラムインストラクションの組として特定される処理として実装されてもよい。これらのプログラムインストラクションがひとつ以上の処理ユニットによって実行されると、それらは処理ユニットにそれらのプログラムインストラクションに示される種々の動作を行わせる。プログラムインストラクションまたはコンピュータコードの例は、コンパイラにより生成されるようなマシンコードと、コンピュータや電子コンポーネントやマイクロプロセッサによってインタプリタを使用して実行される高レベルコードを含むファイルと、を含む。
適切なプログラミングを通して、処理ユニット305はコンピューティングデバイス300に種々の機能を提供してもよい。例えば、モバイルコンピューティングデバイスでは、処理ユニット305は、プッシュ通知を受けることができるオペレーティングシステムを実行してもよく、またオンラインコンテンツ管理サービス100と通信するアプリケーションを実行してもよい。デスクトップコンピューティングデバイスでは、処理ユニット305は、オンラインコンテンツ管理サービス100とのインタフェースを提供するデスクトップアプリケーションプログラムおよびオペレーティングシステムを実行してもよい。ある実施の形態では、このインタフェースはオペレーティングシステムによって維持されるファイルシステムとのインタフェースと統合されてもよい。ある実施の形態では、処理ユニット305はブラウザアプリケーションを実行してもよい。このブラウザアプリケーションは、オンラインコンテンツ管理サービス100などのソースからコンテンツアイテムを(例えばHTTPまたはウェブページを取得して表示するための他のデータトランスファプロトコルを使用して)取得して表示する能力と、見るアイテムの選択や特定のコンテンツアイテムに応じたユーザによるデータの提出(例えば、インタラクティブウェブページ上のフォームに入力すること)などのコンテンツアイテムに係るユーザ入力を受けて解釈する能力と、を提供する。
ある実施の形態では、コンピュータシステム300または類似のシステムは、通知サーバ202および/またはモバイルディスパッチャ204やウェブディスパッチャ206やデスクトップディスパッチャ208などのディスパッチャを実現してもよい。そのような例では、ユーザインタフェースは処理ユニット305および/または保持サブシステム310から離れて配置されてもよい。同様に、保持サブシステム310またはその部分は処理ユニット305から離れて配置されてもよい。したがって、ある例では、コンピュータシステム300の種々のコンポーネントは互いに物理的に近接して配置される必要はない。
コンピュータシステム300は例示であり、変形や変更が可能であることは理解されるであろう。コンピュータシステム300は本明細書で特に説明されてはいない他の能力(例えば、携帯電話、グローバルポジショニングシステム(GPS)、電力管理、ひとつ以上のカメラ、外部デバイスやアクセサリを接続するための種々の接続ポートなど)を有してもよい。さらに、コンピュータシステム300は特定のブロックを参照して説明されたが、これらのブロックは説明の便宜上規定されたものであり、コンポーネント部分の特定の物理的な構成を暗示することを意図したものではないことは理解されるべきである。さらに、ブロックは物理的に別個のコンポーネントに対応する必要はない。ブロックは、例えばプロセッサをプログラムするかまたは適切な制御回路を提供することによって、種々の動作を行うよう構成されてもよい。種々のブロックは、初期設定がどのように得られるかに依存して、再構成可能であってもよいし、そうでなくてもよい。本発明の実施の形態は、回路とソフトウエアとの任意の組み合わせを使用して実装される電子デバイスを含む種々の装置で実現されてもよい。
図2を参照して上述した通り、システム200は種々のイベントをクライアントに知らせるよう動作する。ここで、イベントは複数の起こりうる出来事のいずれかを含んでもよい。ある実施の形態では、さまざまな種類のイベントは階層的分類を参照して特定されてもよい。
図4は、本発明の実施の形態に係るイベント分類体系を示す図である。この例では、イベント(ノード400)は第1レベルにおいて、イベントがアカウント(ノード402)に関するかソーシャル活動(ノード404)に関するかに基づいて分類されてもよい。ノード402のアカウント関連イベントは第2レベルにおいて、イベントがセキュリティ(ノード406)に関するか課金(ノード408)に関するかに基づいてさらに分類されてもよい。ノード406のセキュリティイベントは、パスワード変更(葉ノード410)や疑わしい行動(葉ノード412)などの具体的なイベントにさらに分類されてもよい。疑わしい行動は、ユーザのアカウントが毀損されているかまたは攻撃されているかもしれないことを示す。同様に、ノード408の課金イベントは、支払いエラー(葉ノード414)や割り当ていっぱい(葉ノード416)などの具体的なイベントにさらに分類されてもよい。
同様に、ノード404のソーシャル活動イベントは第2レベルにおいて、イベントが共有フォルダ(ノード418)に関するかリンクの共有(ノード420)に関するかに基づいてさらに分類されてもよい。ノード418の共有フォルダイベントは、招待(葉ノード422)や参加(葉ノード424)や更新(葉ノード426)などの具体的なイベントにさらに分類されてもよい。ノード420のリンク共有イベントは、一般ファイルリンクの共有(葉ノード428)や写真リンクの共有(葉ノード430)やコレクションの共有(例えば、フォルダへのリンク)(葉ノード432)などの具体的なイベントにさらに分類されてもよい。
ある実施の形態では、各イベントには階層構造化イベント識別子が割り当てられてもよい。この識別子は分類体系におけるその位置を表す。例えば、割り当ていっぱいイベントは402 408 416というイベント識別子を有しうる。イベント識別子を割り当てるための他の規則が使用されてもよい。
図4に示されるイベント分類体系および具体的なイベントは例示であり、変形や変更が可能であることは理解されるであろう。イベント分類体系は任意の数のレベル(単一レベルが縮退したケースを含む)を含んでもよい。また、各レベルに任意の数のノードが存在してもよい。ある実施の形態では、例えばどのアラートをユーザに出すか決めるためにまたはアラートの出し方を調整するためにまたは通知データストア210の検索をより容易にするために、イベント分類体系を使用して通知をフィルタしてもよい。
上述の通り、通知サーバ202は通知レコード222を生成して保持してもよい。図5は、本発明の実施の形態に係る通知レコード222の例を示す図である。この例では、各通知レコード222は列502に示される構造を有する。列504、506、508はこの構造を有する通知レコードの例を提供する。
この例では、トピックおよび時刻によるソーティングおよび/またはフィルタリングを容易にするように通知レコードを構成する。例えば、トピックフィールド510はひとつ以上のフィールドを含んでもよく、これらのフィールドを合わせると通知レコードの主題を示す情報が提供される。この例では、トピックフィールド510はイベントタイプ識別子とターゲット対象とターゲットユーザとを含む。イベントタイプ識別子は図4の階層からのノード識別子であってもよい。ターゲット対象はイベントが関連するファイルやフォルダの識別子であってもよい。ターゲットユーザはそのユーザのクライアントが通知を受けるべきであるユーザであってもよい。列504、506、508のそれぞれにおいて、トピックフィールドは通知が同じトピックに係ることを示す。そのトピックはユーザ「ボブ」に対する共有フォルダ招待であって、そのフォルダは「VacationPhotos」と称される。上述の通り、ある実施の形態では、トピックフィールド510をキーとして使用することで、統合のための通知レコードを特定してもよい。
シーケンスフィールド512は、通知レコードを論理的なシーケンスにソートする並べるのに使用可能な情報を提供する。ある実施の形態では、ソーティングは時刻に基づいてもよく、シーケンスフィールド512は通知レコードを時間シーケンスにソートするのに使用可能な時刻ベース情報を提供してもよい。例えば、特定のレコードを特定するために、通知サーバ202は各通知レコードが生成されるたびにその通知レコードにシリアル番号を割り当ててもよい。ある実施の形態では、シリアル番号は単調増大的なシーケンスで生成されてもよい。ある実施の形態では、通知データストア210のすべてのメッセージに対してシリアル番号は一意であってもよく、特定の通知レコードはそのシリアル番号を参照することで見つけられてもよい。他の実施の形態では、同じターゲットユーザを有するすべてのメッセージに対してシリアル番号は一意であってもよく、特定の通知レコードはターゲットユーザIDとシリアル番号とを参照することで見つけられてもよい。
シーケンスフィールド512はひとつ以上のタイムスタンプを含んでもよい。この例では、送信時刻が含まれる。送信時刻は、サーバ202が通知レコードを生成した時刻および/またはサーバ202がメッセージキュー214のための対応するメッセージ224を生成した時刻を反映してもよい。この例では、「フィード時刻」が含まれる。フィード時刻は、基のイベントのソース(例えば、特定のクライアントまたはサーバ)によって確立された時刻基準を反映してもよい。例えば、クライアントが第1イベントに応じた行動を起こした場合、第2通知レコードは、第1通知レコードのフィード時刻にマッチするフィード時刻を有してもよい。ある実施の形態では、クライアントまたはイベントを報告する他のソースは、対応する通知レコードに関連付けられるべきフィード時刻を特定することを許可される。サーバ202は許されるフィード時刻について制限を課してもよい。例えば、フィード時刻は送信時刻(これはサーバ202によって決定される)より後であってはならないということを規定すうルールである。
他の時刻フィールド(不図示)が含まれてもよい。例えば、通知レコードの生成を導いたイベントがいつ発生したかを示すためにイベント時刻フィールドを使用してもよい。
コンテンツフィールド514はイベントに関するさらなる詳細を提供してもよい。例えば、コンテンツフィールド514は、ペイロードフィールドと原ユーザフィールドと原アプリケーションフィールドと状態フィールドとを含んでもよい。ペイロードフィールドはイベント特定データを含んでもよい。ある実施の形態では、ペイロードフィールドはキー/値辞書としてフォーマットされてもよい。そこでは、キーおよび値の特定の組み合わせが特定のイベントについて定められる。例えば、ユーザが招待を受け入れるか拒否する場合、ペイロードは招待が受け入れられたかまたは拒否されたかを示すキー値ペアを含んでもよい。原ユーザフィールドは、イベントを引き起こした行動をとったユーザを特定してもよい。例えば、招待の場合、原ユーザは招待を発行したユーザであってもよい。原アプリケーションは、特定のアプリケーションまたはプラットフォームから行動が引き起こされたときのその特定のアプリケーションまたはプラットフォームを特定してもよい。
状態フィールドは通知に関連する状態を示してもよい。ある実施の形態では、状態フィールドは通知レコードの異なる状態に対応する列挙型であってもよい。例えば、列挙値は「unread、read、invisible」を含んでもよい。この例では、「unread」はユーザが(おそらく)イベント(または通知)にまだ気付いていないことを示し、「read」はユーザが基のイベント(または通知)に気付いたことを示し、「invisible」は基のイベント(または通知)を廃れさせるようななんらかの行動が発生したことを示す。ある実施の形態では、クライアントによって通知に対して行動が起こされた場合、更新された状態フィールド(およびおそらくは他の更新されたコンテンツフィールド)を伴う新たなイベントが生成される。
同じトピックに関連する複数の通知を処理するときに、サーバ202および/またはクライアント110、112、114、116のいずれかまたはすべては状態フィールドを使用してもよい。具体例として、ユーザ(アリス)が自分が生成した「VacationPhotos」と称されるフォルダを共有しませんかとユーザボブを招待したとする。アリスがその招待を送ると、この最初のイベントにより通知サーバ202が通知レコード504を生成する。イベントトピックは、イベントがフォルダVacationPhotosについての共有フォルダ招待に関し、ボブに向けられていることを示す。コンテンツフィールドはアリスを原ユーザとして特定し、状態をunreadとする。サーバ202はボブがその招待を読んだということを示す情報を受け取っていないからである。通知レコード504の生成はボブに招待を送ることとは別でありうることは理解されるべきである。例えば、オンラインコンテンツ管理サービス100はボブのインボックスに実際の招待を含む電子メールまたは他のメッセージを送ってもよい。通知サーバ202は、ボブのクライアントにボブが彼の注意を待つ招待を有していることを知らせるための独立した経路を提供する。
次に、通知レコード504に基づいてひとつ以上の彼のクライアントによって生成されたアラートを見た結果として、またはどのアラートとも無関係に、ボブは招待を読んでもよい。例えば、ボブはたまたま彼のインボックスをチェックし招待を見るかもしれない。ボブが招待を読むと、この第2イベントにより通知サーバ202が通知レコード506を生成する。第2イベントもまたアリスからのVacationPhotosフォルダを共有しませんかという招待に関するので、トピックフィールドは通知レコード504のそれと同じであってもよい。時刻フィールドは異なる。これは、ボブが招待を読んだことは別個のイベントであり、この場合ボブのクライアントがイベントのソースとなるため原ユーザおよび原アプリケーションもまた異なりうることを反映する。状態はreadとして特定され、ボブが招待を読んだことを示す。
招待を読んだ後のある時点で、ボブはそれを受け入れることを決めるかもしれない。ボブが招待を受け入れると、この第3イベントにより通知サーバ202が通知レコード508を生成する。第3イベントもまたアリスからのVacationPhotosフォルダを共有しませんかという招待に関するので、トピックフィールドは通知レコード504および506のそれと同じであってもよい。時刻フィールドはより後のものである。これは招待の受け入れはそれを読んだ後に発生することを反映する。コンテンツフィールドは、ボブが招待を受け入れた(それを拒否することに対して)ことおよびボブのクライアントが再びイベントのソースであることを示すペイロードを含んでもよい。状態はinvisibleとして特定され、ボブはもはや通知に関心を持たない可能性が高いことを示す。
この例では、各イベントは既存のレコードの更新よりむしろ新たな通知レコードの生成を導く。後述するように、このメカニズムによって、クライアントは現在の状態をよりよく反映するよう動的に更新されうる通知フィードを提供することができる。
再び図2を参照すると、通知レコード222が生成されると、サーバ202はメッセージキュー214に対応するメッセージ224を追加する。メッセージ224は通知レコード222と同じ情報を含んでもよいが、そうである必要はない。ある実施の形態では、代替的に、メッセージ224はクライアントが対応する通知レコード222を取得するのに使用可能な情報を提供してもよい。
図6は、本発明の実施の形態に係るメッセージ224について使用できる一般化可能なデータ構造600を示す図である。データ構造600はソースフィールド600と対象フィールド602と取得コードフィールド604とを含む。通知サーバ202はメッセージ224について構造600を使用してもよい。ソースフィールド600は通知サーバ202(メッセージ224のソース)を特定するのに使用されてもよい。対象フィールド602はターゲットユーザを特定するのに使用されてもよい。取得コードフィールド604はメッセージのシリアル番号(図5参照)を提供するのに使用されてもよい。上述のように、メッセージの受け手(クライアントデバイス)は、通知データストア210から対応する通知レコード222を取得するために、フィールド604からのシリアル番号をそれだけでまたはフィールド602からのターゲットユーザ識別子と組み合わせて使用してもよい。
より一般的には、データ構造600は異なるソースからのおよび/または異なる宛先に向けられたメッセージについて使用されてもよい。構造600は通知が利用可能であることを示すクライアントへのメッセージに限られるものではない。例えば、ある実施の形態では、オンラインコンテンツ管理サービス上で保持されるファイルに対する更新はサーバファイルジャーナルに記録される。ファイルの更新に関するメッセージはサーバファイルジャーナルをソースとして特定し、更新されたファイルに関連する名前空間を対象として特定し、シリアルファイルジャーナルエントリに割り当てられたシリアル番号を取得コードとして特定してもよい。そのようなファイル更新メッセージは異なるクライアント間で交換されてもよい。これにより例えば異なるクライアントでデータを同期することができる。またはサーバとクライアントとの間で交換されてもよい。これにより例えばクライアントはファイルのローカルコピーをサーバにより維持されるマスターコピーと同期させることができる。
ある実施の形態では、オンラインコンテンツ管理サービスの提供者はメッセージ224のクライアントへの配送を制御できないかもしれない。例えば、モバイルデバイスへのプッシュ通知はセキュアでないチャネルを使用する場合があり、侵入者による傍受に遭うかもしれない。データ構造600が実際の通知コンテンツを含まない場合、メッセージ傍受によるユーザへの潜在的な危害(例えば、機密データの暴露)は低減される。データ構造600に準拠するメッセージを受ける認証されたクライアントはセキュアなチャネルを通じてサーバ202にアクセスし、通知レコードのコンテンツを取得してもよい。認証されていないクライアントは通知レコードの取得を禁止されてもよい。
図5および図6のデータ構造は例示であり、変形や変更が可能である。通知レコードは任意の数のフィールドを含んでもよく、図示されるよりも多くのまたは少ないフィールドを有してもよい。同様に、メッセージのフィールドの数字および内容は図示のものと異なってもよい。
図5および図6に示されるようなデータ構造を用いることで、図2のシステム200は特定のユーザに関連する複数のクライアントに亘って通知を調整することができる。これにより、ユーザが任意の所与の時刻にどのクライアント(または複数のクライアント)をアクティブに操作しているかによらずに、すべてのクライアントが関連するユーザに動的通知フィードを提供することが可能となる。クライアント通知サービスを提供するために通知サーバ202およびクライアント110、112、114、116で実現されてもよい処理の例が下に説明される。
図7は、本発明の実施の形態に係るユーザに関連する複数のクライアントへイベント通知をプッシュするための処理700のフロー図である。処理700は例えば通知サーバ202などのサーバに実装されてもよい。
ブロック702において、通知サーバ202はイベントを検出してもよい。例えば、サーバ202は他のサーバからまたはクライアントからイベント情報220を受けてもよい。ブロック704において、通知サーバ202は検出されたイベントに基づいて通知レコード222を生成してもよい。図5のデータ構造500または他のデータ構造が使用されてもよい。ある実施の形態では、通知サーバ202は、特定のイベントに応じて通知レコードが生成されるべきか否かを判定するための判定ルールを適用してもよい。例えば、ユーザはあらゆる通知の受け取りを許可しないようまたはあるタイプの通知の受け取りを許可しないよう設定できる。通知サーバ202はユーザがオプトアウトしたかどうかを判定してもよい。例えば後述されるように、処理の後段で、ユーザオプションが実装されてもよい。
ブロック706において、通知サーバ202は通知レコード222を通知データストア210に追加してもよい。ブロック708において、通知サーバ202は、通知レコード222が利用可能であることを示すメッセージ224を生成してもよい。図6のデータ構造600または他のデータ構造が使用されてもよい。
ブロック710において、通知サーバ202はメッセージ224をユーザに関連する複数のクライアントへ発してもよい。ある実施の形態では、メッセージ224を発することは、メッセージ224をメッセージキュー214に追加することを含んでもよい。メッセージキュー214は定期的に種々のディスパッチャ204、206、208によって読み取られ、その後そのディスパッチャは上述の通りメッセージをクライアントにプッシュしてもよい。ある実施の形態では、所与のユーザに対するすべてのメッセージはそのユーザのクライアントのすべてに発せられる。他の実施の形態では、発布はより選択的であってもよい。例えば、ユーザは彼の複数のクライアントのうちのすべてではないいくつかについて通知の受け取りを許可しないよう設定できる。ディスパッチャ204、206、208はそのようなユーザのプリファレンスを実現できる。メッセージ224を特定のクライアントへ発することによりそのクライアント上でユーザ視認可能なアラートが出されてもよいがその必要はないことは理解されるべきである。アラートの提示に関するユーザプリファレンスはクライアント内で実装され、いくつかまたはすべてのアラートメッセージが抑制されてもよい。
処理700はサーバが検出するイベントごとに繰り返されてもよい。したがって、各イベントは通知データストア210に追加される個々の通知レコードを生じさせてもよい。ある実施の形態では、通知レコードは通知データストア210から削除されない。他の実施の形態では、通知レコードは、例えば送信時刻に基づき古いと判定された通知の定期的なパージを通して、削除されてもよい。例えば、通知は固定期間、例えば1日や1週間や1ヶ月、の間維持されて、その後その通知はもはや興味の対象ではないと仮定されて削除されてもよい。イベントタイプや通知トピックに基づくルールなどの通知データストア210をパージするためのより複雑なルールが使用されてもよい。例えば、支払いエラーに関する通知はそのエラーが解消されるまで保存されてもよく、一方、共有フォルダ招待の受領や受諾についての通知はある固定期間の後に削除されてもよい。
図8は、本発明の実施の形態に係るユーザに通知を提供するための処理800のフロー図である。処理800は例えばクライアント116やクライアント110、112、114のいずれかで実装されてもよい。
ブロック802において、クライアント116は通知が利用可能であることを示すメッセージを受けてもよい。このメッセージは、処理700のブロック710でサーバ202によって発せられたメッセージ224であってもよい。ブロック804において、クライアント116は通知サーバ202に、対応する通知レコードを求める要求を送ってもよい。
ある実施の形態では、クライアント116はメッセージが受け取られるのとリアルタイムで通知レコードを要求してもよい。他の実施の形態では、クライアント116は待機し、後の任意のときに通知レコードを要求してもよい。したがって、クライアント116がブロック804において通知レコードの要求を行う前に、複数のメッセージがサーバ202によって発せられおよび/またはクライアント116によって受け取られることが可能である。通知レコードがシリアル番号で特定されるある実施の形態では、クライアント116は既に受け取った直近の通知レコードのシリアル番号を含む要求を送ってもよい。サーバ202は、クライアントによって報告された直近に受け取ったシリアル番号に続くシリアル番号を有する、クライアント116のユーザへの通知レコードを送ってもよい。ある実施の形態では、通知レコードを要求するためにおよび/またはどのレコードを提供するかを特定するために、シリアル番号に加えてまたはその代わりに、タイプスタンプを使用してもよい。
ブロック806において、クライアント116はサーバ202からひとつ以上の新たな通知レコードを受けてもよい。ある実施の形態では、クライアント116は、新たな通知レコードを、以前に受け取った通知レコードと一緒に保持してもよい。
ある実施の形態では、クライアント116は、例えばトピックフィールド510のいくつかまたはすべてをキーとして使用することで、同じトピックに関する複数の通知レコード(新たなおよび/または以前に受け取ったレコードを含む)を統合してもよい。したがって、ブロック808において、クライアント116は、例えばトピックフィールド510を比較することによって、ふたつ以上の通知レコードが同じトピックに関するか否かを判定してもよい。ある実施の形態では、トピックフィールド510のすべてがマッチする場合(そしてその場合にのみ)、通知は同じトピックに関する。
ふたつ以上の通知レコードのトピックフィールド510がマッチする場合、クライアント116は例えばシーケンスフィールド512のいくつかまたはすべてに基づいて、ブロック810においてレコードを統合してもよい。例えば、各レコードに関連するシリアル番号および/またはタイムスタンプに基づいて、クライアント116は最も最近のレコードを特定しより古いレコードを廃棄してもよい。他の例では、クライアント116はシーケンスフィールド512の情報に基づいて同じトピックに関する通知レコードをソートしおよび/または優先順位を付けてもよい。クライアント116は所与のトピックに関する通知レコードの部分集合(例えば、ひとつ)を選択し、他のレコードを廃棄してもよい。レコードを廃棄することは、例えばクライアント116のストレージからそれを削除することや、それを廃れたものとしてマークすることを含んでもよい。ある実施の形態では、特定のレコードを廃棄するというクライアントの決定はそのローカルコピーのみに影響を与え、通知データストア210に保持されるレコードには影響を与えない。ある実施の形態では、統合は複数のレコードからの情報をマージすることを含んでもよい。例えば、ユーザが同じ共有フォルダにファイルをアップロードしたことをそれぞれが示す5つのレコードをクライアント116が受ける場合、その5つのレコードは単一のレコードに統合されてもよく、その単一のレコードは5つのファイルが共有フォルダにアップロードされたことを示す。
ブロック812において、クライアント116は統合された通知レコードに基づいてユーザ視認可能なアラートを表示してもよい。例えば、図5を参照すると、ユーザボブが招待を受け取って読んだがまだ返事をしていない場合、クライアント116はサーバ202から同時にまたは異なるときに、通知レコード504および506を受けてもよい。クライアント116は例えばより古いレコード504を廃棄することで、これらのレコードを統合してもよい。最も直近のレコード506に基づいて、ボブに彼が未処理の招待を有していることを思い出させるユーザ視認可能アラートが生成されてもよい。あるいはまた、レコードの状態フィールドはボブが既に招待を読んだことを示しているので、クライアント116はレコード506に基づきアラートが生成されるべきではないと決定してもよい。任意の特定の通知レコードについてアラートが生成されるか否かはクライアント116の特定の実装によるものであり、ユーザプリファレンスおよび設定によって部分的に導かれてもよい。
クライアント116は、アラートを生成することに加えてまたはその代わりに、受け取った通知レコードに基づいて他の行動を起こしてもよいことは理解されるべきである。例えば、クライアント116はローカルファイルを更新してもよいし、設定を変更してもよいし、ユーザにアラートを出しつつまたは出さずに他の処理を行ってもよい。
処理800はクライアント116(または他のクライアント)によって繰り返し実行されてもよい。これにより、クライアント116がほぼリアルタイムでユーザアラートを更新し生成することが可能となる。ある実施の形態では、クライアント116はアラートフィード(通知フィードとも単にフィードとも称される)を表示してもよい。アラートフィードは、新たな通知レコードが受け取られて以前のレコードと統合されるにつれて動的に更新される。例えば、ボブが共有フォルダ招待を受けた場合、アラートが生成される。そのアラートはボブがその招待を読んだときに更新されてもよい(例えば、招待が読まれたがまだ未処理であることを示すため)。そしてそのアラートはボブが招待を受け入れた(または拒否した)ときに再び更新される。ある実施の形態では、招待が読まれたか招待が受け入れられたときにアラートは消えてもよい。他の実施の形態では、アラートに関連する表示されたテキストおよび/または他の状態インジケータ(例えば、色、アイコン)は、最新の行動を反映するべく動的に変更されてもよい。例えば、招待が受け取られるとアラートがある色で提示されてもよい。招待が読まれるとその色が変わってもよい。招待が受け入れられると(または拒否されると)アラートは完全に消えてもよいし、ボブに彼が招待に対して行動したことを示すようテキストが変わってもよい(例えば、「あなたには、アリスからのVacationPhotosというフォルダを共有しようという招待があります」が「あなたは、アリスからのVacationPhotosというフォルダを共有しようという招待を受け入れました」に変更されてもよい)。ある実施の形態では、アラートのテキストおよび/またはアラートの他のプロパティは、トピックフィールド510および/またはコンテンツフィールド514に部分的に基づいて決定されてもよい。
クライアントのスタートアップ時(例えば、アプリケーションが開始されたときまたはブラウザクライアントがオンラインコンテンツ管理サービスと接続したとき)、クライアントは通知レコードの現在の組を有さないかもしれない。ある実施の形態では、クライアントのスタートアップ時、クライアントは処理800をブロック804から始める形で実行することでアラートフィードを初期化してもよい。そこでは、クライアントは通知の組を初期化するための要求を送ってもよい。それに応じて、サーバ202は通知レコードの「スタートアップ」組を配送してもよい。スタートアップ組は種々の方法で規定されうる。例えば、スタートアップ組は10個(または他の数の)の直近の通知レコードを含んでもよいし、今から12時間前までのまたは昨日のまたは他のある期間のすべての通知レコードを含んでもよい。
図9は、本発明の実施の形態に係るクライアント、例えばクライアント116(またはクライアント110、112、114のいずれか)へ通知レコードを提供するための処理900のフロー図である。処理900は例えば通知サーバ202に実装されてもよい。
ブロック902において、サーバ202はクライアント116から通知レコードの要求を受けてもよい。ある実施の形態では、要求は取得されるべき特定の通知レコードの識別子(例えば、シリアル番号またはシリアル番号とユーザID)を含んでもよい。他の実施の形態では、要求はクライアントが既に受けた最も新しい通知レコードの識別子を含んでもよい。要求は、サーバが特定されたレコードよりも新しい通知レコードのすべてを提供するよう要求してもよい。ある実施の形態では、要求は例えば上述されたような通知レコードのスタートアップ組の要求であってもよい。
ブロック904において、サーバ202はクライアントの要求にマッチする通知レコードの組を特定してもよい。サーバ202はこの組をクライアントへ送ってもよいし、ある実施の形態ではサーバ202は送る前に通知レコードを統合してもよい。例えば、ブロック906において、サーバ202は、例えばトピックフィールド510を比較することによって、ふたつ以上の通知レコードが同じトピックに関するか否かを検出してもよい。ある実施の形態では、トピックフィールド510のすべてがマッチする場合(そしてその場合にのみ)、通知は同じトピックに関する。ふたつ以上の通知レコードのトピックフィールド510がマッチする場合、サーバ202はブロック908においてレコードを統合してもよい。例えば、各レコードに関連するシリアル番号および/またはタイムスタンプに基づいて、サーバ202は最も最近のレコードを特定し統合された組からより古いレコードを除いてもよい。ブロック910において、サーバ202はクライアント116にレコードの統合された組を送ってもよい。他の例として、サーバ202は通知データストア210に、複数の通知レコードからの情報を反映するマージされたレコードを生成してもよい。例えば、それはユーザが特定のフォルダに複数のファイルをアップロードしたことを示す単一のレコードであり、各アップロードについての別個のレコードの代わりである。ブロック908におけるサーバ202による統合は、通知データストア210の内容を変更することなしに、特定のクライアントに送られるレコードの組に影響を与えることができることは理解されるべきである。したがって、任意のあるクライアントに送られる通知レコードのシーケンスは他の任意のクライアントに通知レコードを送ることによって影響を受ける必要はないのであって、これにより、各クライアントが自己が要求した任意の通知を受けることが可能となる。
ある実施の形態では、サーバ202による統合は繰り返し行われてもよい。例えば、上述の通り、クライアント116は固定数(例えば10)の通知レコードを含む通知レコードのスタートアップ組を要求してもよい。サーバ202はブロック904においてそのクライアントについての10個の直近のレコードを特定してもよい(例えば、クライアントに関連するユーザIDに基づいて)。しかしながら、ブロック908における統合によりレコードの数が減らされてもよく、例えば6となる。これが生じる場合、サーバ202は減らされた組を送ってもよい。あるいはまた、サーバ202は、数が10に戻るように組にレコードを追加し、再び統合し、統合された組のレコードの数が10(または他の所望の固定数)に至るまでこれらの行動を繰り返してもよい。
ある例では、サーバ202は、要求に応じて送られるべき通知レコードが存在しないと判定してもよい。その場合、サーバ202はクライアント116にこの状態を示す応答を返してもよい。
処理700、800および900は例示であり、変形や変更が可能であることは理解されるであろう。逐次的に示されているステップは並列に実行されてもよく、ステップの順番は変更されてもよく、ステップは変更されても組み合わされても追加されても省略されてもよい。処理700、800および900(または類似の処理)が併せて使用されることで、クライアントはユーザに現在の情報を提供しかつ旧い情報を更新する(例えば、上書きまたは除去する)リアルタイム通知フィードを提供することができる。フィードはユーザのクライアントのいずれかまたはすべてで提示されてもよい。各プラットフォームのフィードは任意のクライアントでの行動に基づいて(ほぼリアルタイムで)自動的に更新される。任意のあるクライアントへの通知レコードの配送は任意の他のクライアントへの配送と独立しているので、ユーザの各クライアントはすべての通知を受けることができ、かつ完全な現在のアラートフィードを提示できる。あるクライアントとのユーザインタラクションは他のクライアントで提示されるフィードに反映されてもよい。
本発明が具体的な実施の形態に関して説明されたが、当業者であればさまざまな変形例が可能であることを認識するであろう。例えば、本明細書で説明された特定のイベントやデータ構造やプラットフォームは例示のために使用されているのであって、他のイベントやデータ構造やプラットフォームで置き換えられてもよい。クライアントへメッセージをプッシュする技術もまた特定のクライアントについて適切となるように変更されてもよい。
上述の通り、すべての通知がすべてのクライアントまたはいずれかのクライアントでアラートを生じさせることは要求されない。通知がアラートを生じさせる場合、アラートは所望の態様でユーザに出されてもよい。アラートは視覚的要素(テキストやアイコンや画像や色など)、聴覚的要素(トーンや話語など)、触覚的要素(振動やパルスなど)、および/または他の任意の知覚可能な要素を組み入れてもよい。
上述の実施の形態はデータ構造およびデータベースまたはデータストアを参照してもよい。これらの用語は、コンピュータシステムによって保持され、取得されおよび解釈されうる個々のレコードへと情報を整理するための任意の技術を包含してもよいことは理解されるべきである。
本発明の実施の形態は、専用コンポーネントおよび/またはプログラマブルプロセッサおよび/または他のプログラマブルデバイスの任意の組み合わせを使用して実現されてもよい。本明細書で説明される種々の処理は同じプロセッサまたは任意の組み合わせの異なるプロセッサで実行されてもよい。コンポーネントが所定の動作を行うよう構成されるものとして記述される場合、そのような構成は例えば電子回路をその動作を行うよう設計することにより、またはプログラマブル電子回路(例えば、マイクロプロセッサ)をその動作を行うようプログラムすることにより、またはそれらの任意の組み合わせにより、達成されうる。さらに、上述の実施の形態は特定のハードウエアおよびソフトウエアコンポーネントに言及しているが、当業者であればハードウエアおよび/またはソフトウエアコンポーネントの異なる組み合わせが使用されてもよいこと、およびハードウエアで実行されるものとして記述されている動作がソフトウエアで実行されてもよいことおよびその逆もしかりであること、を理解するであろう。
本発明の種々の特徴を組み入れたコンピュータプログラムは符号化されて種々のコンピュータ読み取り可能保持媒体に保持されてもよい。適切な媒体は、磁気ディスク、磁気テープ、コンパクトディスク(CD)やDVD(digital versatile disk)などの光学保持媒体、フラッシュメモリ、および他の非一時的媒体を含む。プログラムコードで符号化されたコンピュータ読み取り可能媒体はコンパチブルな電子デバイスと共にパッケージされてもよい。またはプログラムコードは電子デバイスとは別に提供されてもよい(例えば、インターネットダウンロードを介してまたは別個にパッケージされたコンピュータ読み取り可能保持媒体として)。
したがって、本発明が具体的な実施の形態に関して説明されたが、本発明は以下の請求の範囲内のすべての変形例および均等物をカバーするよう意図されていることは理解されるであろう。

Claims (30)

  1. サーバで実行可能な方法であって、
    クライアントデバイスから新たな通知レコードの要求を受けることと、
    通知データストアから前記要求に応じた通知レコードの始めの組を取得することであって、前記通知レコードの始めの組は第1通知レコードを含み、前記通知レコードのそれぞれはトピックフィールドとシーケンスフィールドとコンテンツフィールドとを含むことと、
    前記通知レコードの始めの組から通知レコードの終わりの組を生成することであって、前記通知レコードの終わりの組を生成することは、
    前記第1通知レコードが通知レコードの前記組の第2通知レコードと統合されるべきか否かを、前記通知レコードの前記トピックフィールドに基づき判定することと、
    前記第1通知レコードが前記第2通知レコードと統合されるべきである場合、前記第1通知レコードの前記シーケンスフィールドおよび前記第2通知レコードの前記シーケンスフィールドに基づき、前記第1通知レコードを前記第2通知レコードと統合することと、を含むことと、
    前記通知レコードの終わりの組を前記複数のクライアントデバイスのうちの前記第1クライアントデバイスに送ることと、を含むことを特徴とする方法。
  2. 各通知レコードの前記シーケンスフィールドは時間順序インジケータを含み、
    前記第1通知レコードを前記第2通知レコードと統合することは、
    前記時間順序インジケータに基づき、前記第1通知レコードおよび前記第2通知レコードのうち古い方を特定することと、
    前記第1通知レコードおよび前記第2通知レコードのうち古い方を前記通知レコードの終わりの組から除くことと、を含むことを特徴とする請求項1に記載の方法。
  3. 各通知レコードの前記時間順序インジケータは、シリアル番号およびタイムスタンプの一方または両方を含むことを特徴とする請求項2に記載の方法。
  4. 前記第1通知レコードを他の通知レコードと統合することは前記通知データストアに影響しないことを特徴とする請求項1に記載の方法。
  5. クライアントで実行可能な方法であって、
    サーバから通知レコードを要求することと、
    前記サーバから、前記要求に応じたひとつ以上の通知レコードを受けることと、
    前記クライアントが、処理すべき通知レコードの始めの組を特定することであって、前記通知レコードの始めの組は前記サーバから受けた前記ひとつ以上の通知レコードを含み、前記通知レコードのそれぞれはトピックフィールドとシーケンスフィールドとコンテンツフィールドとを含むことと、
    前記クライアントが、前記通知レコードの始めの組から通知レコードの終わりの組を生成することであって、前記通知レコードの終わりの組を生成することは、前記始めの組の第1通知レコードの前記トピックフィールドが前記始めの組の第2通知レコードの前記トピックフィールドと一致する場合に、前記第1通知レコードを前記第2通知レコードと統合することを含むことと、
    前記通知レコードの終わりの組に基づいて、ひとつ以上のアラートを出すことと、を含むことを特徴とする方法。
  6. 前記通知レコードの始めの組はさらに、前記サーバからの前記通知レコードの要求よりも前に前記クライアントに存在するひとつ以上の他の通知レコードを含むことを特徴とする請求項5に記載の方法。
  7. 前記サーバから、少なくともひとつの新たな通知レコードが利用可能であることを示すメッセージを受けることをさらに含み、
    前記通知レコードを要求することは、前記メッセージを受けることに応じてなされることを特徴とする請求項5に記載の方法。
  8. 前記終わりの組の各通知レコードの前記トピックフィールドは、前記終わりの組の他の通知レコードのそれぞれの前記トピックフィールドと異なることを特徴とする請求項5に記載の方法。
  9. 前記第1通知レコードを前記第2通知レコードと統合することは、
    前記第1通知レコードの前記シーケンスフィールドを前記第2通知レコードの前記シーケンスフィールドと比較することと、
    前記シーケンスフィールドの比較結果に基づいて、前記第1通知レコードおよび前記第2通知レコードのうちのひとつを前記通知レコードの終わりの組から除くことと、を含むことを特徴とする請求項5に記載の方法。
  10. 前記ひとつ以上のアラートを出すことは、前記ひとつ以上のアラートを含むフィードを出すことを含むことを特徴とする請求項5に記載の方法。
  11. サーバで実行可能な方法であって、
    ターゲットユーザに関連するイベントに係るイベント情報を受けることと、
    前記イベント情報に基づいて通知データストアに第1通知レコードを生成することであって、前記第1通知レコードはトピックフィールドとシーケンスフィールドとコンテンツフィールドとを含み、前記トピックフィールドは前記通知データストアから同じトピックに係る複数の通知レコードを特定するのに使用可能であり、前記シーケンスフィールドは同じトピックに係る複数の通知レコードをソート順序でソートするのに使用可能であることと、
    前記第1通知レコードが利用可能であることを示す第1メッセージを生成することであって、前記第1メッセージは前記ターゲットユーザの識別子と前記第1通知レコードの識別子とを含み、前記識別子は前記第1メッセージを受けるものが前記通知データストアから前記第1通知レコードを取得するのに使用可能であることと、
    前記ターゲットユーザに関連する複数のクライアントへ前記第1メッセージを発することと、を含み、
    前記複数のクライアントのそれぞれへ前記第1メッセージを発することは、他の任意のクライアントへ前記第1メッセージを発することと独立であることを特徴とする方法。
  12. 前記複数のクライアントデバイスのうちの第1クライアントデバイスから新たな通知レコードの要求を受けることと、
    前記要求に応じた通知レコードの始めの組を特定することであって、前記通知レコードの組は前記第1通知レコードを含むことと、
    前記通知レコードの始めの組から通知レコードの終わりの組を生成することであって、前記通知レコードの終わりの組を生成することは、前記第1通知レコードの前記トピックフィールドが前記始めの組の他の通知レコードの前記トピックフィールドと一致する場合に、前記第1通知レコードを前記他の通知レコードと統合することを含むことと、
    前記通知レコードの終わりの組を前記複数のクライアントデバイスのうちの前記第1クライアントデバイスに送ることと、をさらに含むことを特徴とする請求項11に記載の方法。
  13. 前記第1通知レコードを前記他の通知レコードと統合することは、
    前記第1通知レコードの前記シーケンスフィールドを前記他の通知レコードのシーケンスフィールドと比較することと、
    前記シーケンスフィールドの比較結果に基づいて、前記第1通知レコードおよび前記他の通知レコードのうちのひとつを前記通知レコードの終わりの組から除くことと、を含むことを特徴とする請求項12に記載の方法。
  14. 前記第1通知レコードの前記シーケンスフィールドを前記他の通知レコードのシーケンスフィールドと比較することは、前記第1通知レコードおよび前記第2通知レコードのうちどちらがより古いかを特定することを含み、前記第1通知レコードおよび前記第2通知レコードのうち古い方は前記通知レコードの終わりの組から除かれることを特徴とする請求項13に記載の方法。
  15. 通知データストアと、
    前記通知データストアと接続されているプロセッサと、を備え、
    前記プロセッサは、
    クライアントデバイスから新たな通知レコードの要求を受け、
    通知データストアから前記要求に応じた通知レコードの始めの組を取得し、ここで前記通知レコードのそれぞれはトピックフィールドとシーケンスフィールドとコンテンツフィールドとを含み、
    前記通知レコードの始めの組から通知レコードの終わりの組を生成し、ここで前記通知レコードの終わりの組を生成することは、前記始めの組からのふたつ以上の通知レコードが互いに一致するトピックフィールドを有する場合、前記ふたつ以上の通知レコードを統合することを含み、
    前記通知レコードの終わりの組を前記クライアントデバイスに送る
    よう構成されていることを特徴とするサーバシステム。
  16. 前記通知レコードのそれぞれはイベントに対応し、
    前記通知レコードのそれぞれの前記トピックフィールドは、
    前記イベントのイベントタイプを示すタイプ識別子と、
    前記イベント中に作用を受ける対象を示すターゲット対象識別子と、
    前記イベントを知らせるべきターゲットユーザを示すターゲットユーザ識別子と、
    を含むことを特徴とする請求項15に記載のサーバシステム。
  17. 前記クライアントデバイスから受けた前記要求はクライアントユーザ識別子を含み、前記通知レコードの始めの組はその前記ターゲットユーザ識別子が前記クライアントユーザ識別子と一致する通知レコードのみを含むことを特徴とする請求項16に記載のサーバシステム。
  18. 前記プロセッサはさらに、前記タイプ識別子、前記ターゲット対象識別子、前記ターゲットユーザ識別子のそれぞれが同一の場合にのみ、ふたつ以上の通知レコードを統合するよう構成されていることを特徴とする請求項16に記載のサーバシステム。
  19. データ通信インタフェースと、
    ユーザインタフェースと、
    前記データ通信インタフェースおよび前記ユーザインタフェースと接続されているプロセッサと、を備え、
    前記プロセッサは、
    サーバから、ひとつ以上の通知レコードを受け、ここで前記通知レコードのそれぞれはトピックフィールドとシーケンスフィールドとコンテンツフィールドとを含み、
    処理すべき通知レコードの始めの組を特定し、ここで前記通知レコードの始めの組は前記サーバから受けた前記ひとつ以上の通知レコードを含み、
    前記通知レコードの始めの組から通知レコードの終わりの組を生成し、ここで前記通知レコードの終わりの組を生成することは、前記トピックフィールドが一致するふたつ以上の通知レコードを統合することを含み、
    前記通知レコードの終わりの組に基づいて、ひとつ以上のアラートを出すよう構成されていることを特徴とするクライアント。
  20. 前記通知レコードのそれぞれはイベントに対応し、
    前記通知レコードのそれぞれの前記トピックフィールドは、
    前記イベントのイベントタイプを示すタイプ識別子と、
    前記イベント中に作用を受ける対象を示すターゲット対象識別子と、
    前記イベントを知らせるべきターゲットユーザを示すターゲットユーザ識別子と、
    を含むことを特徴とする請求項19に記載のクライアント。
  21. 前記タイプ識別子、前記ターゲット対象識別子、前記ターゲットユーザ識別子のそれぞれが同一である場合にのみ、ふたつ以上の通知レコードが統合されることを特徴とする請求項19に記載のクライアント。
  22. 通知データストアと、
    前記通知データストアと接続されているプロセッサと、を備え、
    前記プロセッサは、
    ターゲットユーザに関連するイベントに係るイベント情報を受け、
    前記イベント情報に基づいて前記通知データストアに通知レコードを生成し、ここで前記通知レコードはトピックフィールドとシーケンスフィールドとコンテンツフィールドとを含み、前記トピックフィールドは前記通知データストアから同じトピックに係る複数の通知レコードを特定するのに使用可能であり、前記シーケンスフィールドは同じトピックに係る複数の通知レコードをソート順序でソートするのに使用可能であり、
    前記通知レコードが利用可能であることを示すメッセージを生成し、ここで前記メッセージは前記ターゲットユーザの識別子と前記通知レコードの識別子とを含み、前記通知レコードの前記識別子は前記メッセージを受けるものが前記通知データストアから前記通知レコードを取得するのに使用可能であり、
    前記ターゲットユーザに関連する複数のクライアントへ前記メッセージを発するよう構成され、
    前記複数のクライアントのそれぞれへ前記メッセージを発することは、他の任意のクライアントへ前記メッセージを発することと独立であることを特徴とするサーバシステム。
  23. 前記シーケンスフィールドはシリアル番号を含み、前記シリアル番号は前記第1通知レコードの前記識別子として前記第1メッセージに含まれることを特徴とする請求項22に記載のサーバシステム。
  24. 前記トピックフィールドは、
    前記イベントタイプを示すタイプ識別子、
    前記イベント中に作用を受ける対象を示すターゲット対象識別子、または
    前記ターゲットユーザの前記識別子
    のうちのひとつ以上を含むことを特徴とする請求項22に記載のサーバシステム。
  25. 前記シーケンスフィールドは、
    単調に増加するよう前記サーバによって割り当てられるシリアル番号と、
    前記第1通知レコードの生成時刻を示す送信時刻と、
    を含むことを特徴とする請求項22に記載のサーバシステム。
  26. 前記複数のクライアントへ前記メッセージを発することは、複数のメッセージディスパッチャのそれぞれによって読み取り可能なメッセージキューに前記メッセージを書き込むことを含み、
    各メッセージディスパッチャは前記メッセージを読み出し、前記複数のクライアントのうちのひとつ以上に渡すための対応するクライアント専用メッセージを生成するよう構成されていることを特徴とする請求項22に記載のサーバシステム。
  27. 複数の通知レコードを保持する保持手段と、
    クライアントデバイスから新たな通知レコードの要求を受ける手段と、
    前記保持手段から前記要求に応じた通知レコードの始めの組を取得する手段であって、前記通知レコードのそれぞれはトピックフィールドとシーケンスフィールドとコンテンツフィールドとを含む手段と、
    前記通知レコードの始めの組から通知レコードの終わりの組を生成する手段であって、前記通知レコードの終わりの組を生成することは、前記始めの組からのふたつ以上の通知レコードが互いに一致するトピックフィールドを有する場合、前記ふたつ以上の通知レコードを統合することを含む手段と、
    前記通知レコードの終わりの組を前記クライアントデバイスに送る手段と、を備えることを特徴とするサーバシステム。
  28. 前記通知レコードのそれぞれはイベントに対応し、
    前記通知レコードのそれぞれの前記トピックフィールドは、
    前記イベントのイベントタイプを示すタイプ識別子と、
    前記イベント中に作用を受ける対象を示すターゲット対象識別子と、
    前記イベントを知らせるべきターゲットユーザを示すターゲットユーザ識別子と、
    を含むことを特徴とする請求項27に記載のサーバシステム。
  29. 前記通知レコードの終わりの組を生成する前記手段は、ふたつ以上の通知レコードの前記タイプ識別子、前記ターゲット対象識別子、前記ターゲットユーザ識別子のそれぞれが同一である場合にのみ、該ふたつ以上の通知レコードを統合することを特徴とする請求項28に記載のサーバシステム。
  30. ターゲットユーザに関連するイベントに係るイベント情報を受ける手段と、
    前記イベント情報に基づいて前記保持手段に通知レコードを生成して保持する手段であって、前記通知レコードはトピックフィールドとシーケンスフィールドとコンテンツフィールドとを含み、前記トピックフィールドは前記通知データストアから同じトピックに係る複数の通知レコードを特定するのに使用可能であり、前記シーケンスフィールドは同じトピックに係る複数の通知レコードをソート順序でソートするのに使用可能である手段と、
    前記通知レコードが利用可能であることを示すメッセージを生成する手段であって、前記メッセージは前記ターゲットユーザの識別子と前記通知レコードの識別子とを含み、前記通知レコードの前記識別子は前記メッセージを受けるものが前記通知データストアから前記通知レコードを取得するのに使用可能である手段と、
    前記ターゲットユーザに関連する複数のクライアントへ前記メッセージを発する手段と、
    をさらに備え、
    前記複数のクライアントのそれぞれへ前記メッセージを発することは、他の任意のクライアントへ前記メッセージを発することと独立であることを特徴とする請求項27に記載のサーバシステム。
JP2015552637A 2013-01-14 2013-12-11 複数のクライアントデバイスに亘る通知フィード Active JP6105089B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/741,210 US9300492B2 (en) 2013-01-14 2013-01-14 Notification feed across multiple client devices
US13/741,210 2013-01-14
PCT/US2013/074461 WO2014109860A1 (en) 2013-01-14 2013-12-11 Notification feed across multiple client devices

Publications (2)

Publication Number Publication Date
JP2016505995A true JP2016505995A (ja) 2016-02-25
JP6105089B2 JP6105089B2 (ja) 2017-03-29

Family

ID=49920615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015552637A Active JP6105089B2 (ja) 2013-01-14 2013-12-11 複数のクライアントデバイスに亘る通知フィード

Country Status (5)

Country Link
US (1) US9300492B2 (ja)
EP (2) EP2943895A1 (ja)
JP (1) JP6105089B2 (ja)
AU (2) AU2013372896A1 (ja)
WO (1) WO2014109860A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018092247A (ja) * 2016-11-30 2018-06-14 ブラザー工業株式会社 情報処理プログラム
JP2019020768A (ja) * 2017-07-11 2019-02-07 株式会社トゥービーソフトTobesoft Co., Ltd. 複数の伝送方式を支援するプッシュメッセージハンドリング方法及び装置
JP2021086460A (ja) * 2019-11-28 2021-06-03 キヤノン株式会社 端末装置、制御方法、およびプログラム

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8249932B1 (en) * 2007-02-02 2012-08-21 Resource Consortium Limited Targeted advertising in a situational network
US9560001B1 (en) * 2012-04-02 2017-01-31 Google Inc. Managing notifications across services
US10146394B2 (en) 2013-02-21 2018-12-04 Atlassian Pty Ltd Event listening integration in a collaborative electronic information system
US9342554B2 (en) * 2013-07-05 2016-05-17 Facebook, Inc. Techniques to generate mass push notifications
US9706002B2 (en) * 2013-07-18 2017-07-11 International Business Machines Corporation Push notification via file sharing service synchronization
US9699625B2 (en) 2013-07-18 2017-07-04 International Business Machines Corporation Push notification middleware
US9780994B2 (en) 2013-07-18 2017-10-03 International Business Machines Corporation Notification normalization
US9998555B2 (en) 2014-04-08 2018-06-12 Dropbox, Inc. Displaying presence in an application accessing shared and synchronized content
US10171579B2 (en) 2014-04-08 2019-01-01 Dropbox, Inc. Managing presence among devices accessing shared and synchronized content
US10270871B2 (en) 2014-04-08 2019-04-23 Dropbox, Inc. Browser display of native application presence and interaction data
US10091287B2 (en) 2014-04-08 2018-10-02 Dropbox, Inc. Determining presence in an application accessing shared and synchronized content
US9894009B2 (en) * 2014-08-29 2018-02-13 Microsoft Technology Licensing, Llc Client device and host device subscriptions
KR20160026480A (ko) * 2014-09-01 2016-03-09 엘지전자 주식회사 이동 단말기 및 이의 제어 방법
US20160164810A1 (en) * 2014-12-09 2016-06-09 Microsoft Technology Licensing, Llc Multi-endpoint actionable notifications
CN105991412B (zh) * 2015-02-12 2019-03-19 阿里巴巴集团控股有限公司 消息推送方法及装置
US9846528B2 (en) 2015-03-02 2017-12-19 Dropbox, Inc. Native application collaboration
US10248933B2 (en) 2015-12-29 2019-04-02 Dropbox, Inc. Content item activity feed for presenting events associated with content items
US10620811B2 (en) 2015-12-30 2020-04-14 Dropbox, Inc. Native application collaboration
US9413708B1 (en) * 2015-12-31 2016-08-09 Dropbox, Inc. User notifications for interaction information
US10382502B2 (en) 2016-04-04 2019-08-13 Dropbox, Inc. Change comments for synchronized content items
US10511564B2 (en) * 2017-01-20 2019-12-17 Salesforce.Com, Inc. User availability aware communication system
US10826861B1 (en) * 2018-01-24 2020-11-03 Parallels International Gmbh System and method for managing notifications from published applications
US10931780B2 (en) * 2018-02-28 2021-02-23 International Business Machines Corporation Resource pre-caching and tenant workflow recognition using cloud audit records
US10783012B2 (en) 2018-04-20 2020-09-22 CopyBucket, Inc. Systems and methods for efficient inter-device data exchange
US11609932B2 (en) * 2020-03-27 2023-03-21 Adp, Inc. Web services having live data updates
CN111669438B (zh) * 2020-05-27 2022-10-04 北京百度网讯科技有限公司 直播消息传输方法、装置、电子设备及介质
WO2022040894A1 (en) * 2020-08-25 2022-03-03 Citrix Systems, Inc. Context-based notification processing system
CN112527496B (zh) * 2020-10-29 2024-05-28 百果园技术(新加坡)有限公司 序号分配服务系统、序号分配方法、服务器及存储介质
US12058220B2 (en) * 2021-09-29 2024-08-06 Atlassian Pty Ltd. Multi-source event feeds with actionable inputs
CN116647528A (zh) * 2022-02-16 2023-08-25 北京字跳网络技术有限公司 一种对象的操作方法、装置、电子设备及存储介质
US20230316178A1 (en) * 2022-03-30 2023-10-05 Atlassian Pty Ltd. System for synchronizing contextual notifications for event feed items
US12381840B2 (en) * 2022-11-01 2025-08-05 Dell Products L.P. Providing notifications across user devices
US12513101B2 (en) 2023-10-24 2025-12-30 Dropbox, Inc. Artificially intelligent notification manager

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1664819A (zh) * 2004-03-02 2005-09-07 微软公司 通过对信息新颖性和动态学的分析来个性化新闻馈送的原理和方法

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010037379A1 (en) 2000-03-31 2001-11-01 Noam Livnat System and method for secure storage of information and grant of controlled access to same
US6763344B1 (en) * 2000-04-14 2004-07-13 International Business Machines Corporation Method of and system for dynamically controlling access to data records
US6795823B1 (en) * 2000-08-31 2004-09-21 Neoris Logistics, Inc. Centralized system and method for optimally routing and tracking articles
US8145742B1 (en) 2000-10-31 2012-03-27 Red Hat, Inc. Method of and apparatus for network administration
JP2002140224A (ja) 2000-11-01 2002-05-17 Hitachi Ltd コンテンツ変更管理方法
IL141599A0 (en) * 2001-02-22 2002-03-10 Infocyclone Inc Information retrieval system
US7529685B2 (en) * 2001-08-28 2009-05-05 Md Datacor, Inc. System, method, and apparatus for storing, retrieving, and integrating clinical, diagnostic, genomic, and therapeutic data
US7797221B2 (en) * 2001-11-14 2010-09-14 The Nasdaq Omx Group, Inc. Proprietary quote data
US8396781B2 (en) * 2002-06-05 2013-03-12 The Nasdaq Omx Group, Inc. Interest dissemination process and method
WO2006017622A2 (en) * 2004-08-04 2006-02-16 Dizpersion Technologies, Inc. Method and system for the creating, managing, and delivery of enhanced feed formatted content
US20040019634A1 (en) 2002-07-26 2004-01-29 Anne Van Geldern Methods and apparatus for facilitating revisions to content
US8250150B2 (en) * 2004-01-26 2012-08-21 Forte Internet Software, Inc. Methods and apparatus for identifying and facilitating a social interaction structure over a data packet network
US20060041375A1 (en) * 2004-08-19 2006-02-23 Geographic Data Technology, Inc. Automated georeferencing of digitized map images
US20060075071A1 (en) * 2004-09-21 2006-04-06 Gillette Joseph G Centralized management of digital files in a permissions based environment
US8620988B2 (en) * 2005-03-23 2013-12-31 Research In Motion Limited System and method for processing syndication information for a mobile device
US20060256786A1 (en) * 2005-04-18 2006-11-16 Viera Bibr System and method of message traffic optimization
US8688801B2 (en) 2005-07-25 2014-04-01 Qurio Holdings, Inc. Syndication feeds for peer computer devices and peer networks
JP2007299151A (ja) 2006-04-28 2007-11-15 Oki Electric Ind Co Ltd 通信システム、冗長サーバ、及び、データ変更の通知方法
US20080104044A1 (en) 2006-10-30 2008-05-01 Constantinos Kardamilas System and method for the remote operation and management of networked multi-function peripheral (MFP) devices via web feeds
US7844604B2 (en) * 2006-12-28 2010-11-30 Yahoo! Inc. Automatically generating user-customized notifications of changes in a social network system
US8429220B2 (en) * 2007-03-29 2013-04-23 International Business Machines Corporation Data exchange among data sources
US20090319515A1 (en) * 2008-06-02 2009-12-24 Steven Minton System and method for managing entity knowledgebases
JP5446405B2 (ja) 2009-04-09 2014-03-19 富士通株式会社 イベント検出制御方法及びシステム
US8402016B2 (en) * 2009-05-27 2013-03-19 Hewlett-Packard Development Company, L.P. Fetching optimization in multi-way pipelined database joins
US8495105B2 (en) * 2009-12-22 2013-07-23 International Business Machines Corporation Consolidating input messages for social activity summarization
US20110231361A1 (en) * 2009-12-31 2011-09-22 Fiberlink Communications Corporation Consolidated security application dashboard
US9135603B2 (en) * 2010-06-07 2015-09-15 Quora, Inc. Methods and systems for merging topics assigned to content items in an online application
AU2010202901B2 (en) * 2010-07-08 2016-04-14 Patent Analytics Holding Pty Ltd A system, method and computer program for preparing data for analysis
US9292587B2 (en) * 2010-07-21 2016-03-22 Citrix System, Inc. Systems and methods for database notification interface to efficiently identify events and changed data
US20120158837A1 (en) * 2010-12-15 2012-06-21 Research In Motion Limited Method and system for establishing a notification service for a device
US8996548B2 (en) * 2011-01-19 2015-03-31 Inmar Analytics, Inc. Identifying consuming entity behavior across domains
GB2491612A (en) 2011-06-08 2012-12-12 Canon Kk Synchronizing a web feed collaboratively produced by users
US9542711B2 (en) * 2011-10-07 2017-01-10 Salesforce.Com, Inc. Computer implemented methods and apparatus for providing selective notifications in an online social network
WO2014012576A1 (en) * 2012-07-16 2014-01-23 Qatar Foundation A method and system for integrating data into a database
US20140082183A1 (en) * 2012-09-14 2014-03-20 Salesforce.Com, Inc. Detection and handling of aggregated online content using characterizing signatures of content items
US8621244B1 (en) * 2012-10-04 2013-12-31 Datalogix Inc. Method and apparatus for matching consumers
CN102932180A (zh) 2012-11-01 2013-02-13 华为技术有限公司 设备信息通知方法和网管客户端

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1664819A (zh) * 2004-03-02 2005-09-07 微软公司 通过对信息新颖性和动态学的分析来个性化新闻馈送的原理和方法
US20050198056A1 (en) * 2004-03-02 2005-09-08 Microsoft Corporation Principles and methods for personalizing newsfeeds via an analysis of information novelty and dynamics
JP2005251203A (ja) * 2004-03-02 2005-09-15 Microsoft Corp 情報ノベルティ(novelty)と情報ダイナミックス(dynamics)の分析によってニュースフィード(newsfeeds)をパーソナライズ(personalizing)するための原理および方法
KR20060043331A (ko) * 2004-03-02 2006-05-15 마이크로소프트 코포레이션 정보 신규성 및 다이내믹스의 분석을 통해 뉴스피드를 개인화하는 원리 및 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018092247A (ja) * 2016-11-30 2018-06-14 ブラザー工業株式会社 情報処理プログラム
JP2019020768A (ja) * 2017-07-11 2019-02-07 株式会社トゥービーソフトTobesoft Co., Ltd. 複数の伝送方式を支援するプッシュメッセージハンドリング方法及び装置
JP2021086460A (ja) * 2019-11-28 2021-06-03 キヤノン株式会社 端末装置、制御方法、およびプログラム
JP7423278B2 (ja) 2019-11-28 2024-01-29 キヤノン株式会社 端末装置、制御方法、およびプログラム

Also Published As

Publication number Publication date
JP6105089B2 (ja) 2017-03-29
AU2017202007B2 (en) 2017-08-17
EP2943895A1 (en) 2015-11-18
EP3872724A1 (en) 2021-09-01
AU2013372896A1 (en) 2015-07-23
US9300492B2 (en) 2016-03-29
WO2014109860A1 (en) 2014-07-17
AU2017202007A1 (en) 2017-04-13
US20140201289A1 (en) 2014-07-17

Similar Documents

Publication Publication Date Title
JP6105089B2 (ja) 複数のクライアントデバイスに亘る通知フィード
USRE48194E1 (en) Systems and methods for monitoring and applying data related to shareable links associated with content items stored in an online content management service
US9866510B2 (en) Coordinated notifications across multiple channels
CN106068521B (zh) 关于合规策略更新的应用的通信状态
US10614197B2 (en) Monitored shareable links to content items stored in an online content management service
US9288283B2 (en) Systems and methods for managing shared content based on sharing profiles
US10110536B2 (en) System for managing event notifications to client devices
US10387539B2 (en) Digital card management with style-based dynamic card generation
US10346527B2 (en) Note browser
AU2018229515B2 (en) Access management using electronic images
JP2025087724A (ja) エンドツーエンド電子メールタグ予測
JP2017528795A (ja) コンテンツアイテムの共有のための未登録ユーザアカウントの生成
US9354796B2 (en) Referral slider
US20180227255A1 (en) Method and system for distributing digital content

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161028

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170301

R150 Certificate of patent or registration of utility model

Ref document number: 6105089

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250