以下、本発明の一実施形態について、図面を参照して説明する。
<第1の実施形態>
〔相互招待システムの概要〕
まず、本実施形態による相互招待システムの概要を説明する。この相互招待システムは、互いに異なる種類の第1アプリケーションおよび第2アプリケーションがインストールされているユーザのユーザ端末から、当該第2アプリケーションにおいて当該ユーザと所定の関係にある他のユーザのユーザ端末に対して、第1アプリケーションをインストールさせるように招待するシステムである。
例えば、SNS(Social Networking Service)の会員に対して提供されるソーシャルゲームでは、それぞれのソーシャルゲームにおけるユーザのユーザ情報とSNSにおけるユーザの会員情報とが対応付けられて管理されている。そのため、例えば友だち関係にある会員どうしでは、この会員情報を用いた対応付けにより、互いにいずれのゲームをプレイしているかを知ることができるとともに、自分がプレイしていても友だち関係にある会員がプレイしていないゲームがある場合には、SNSを介してその会員に当該ゲームをプレイするように招待することも可能である。
ところで、SNSの会員に対して提供されるソーシャルゲームではなく、SNSの会員ではなくても利用できるようなソーシャルゲーム(以下、独立型ソーシャルゲームとも称する)がある。この独立型ソーシャルゲームのようなアプリケーションは、例えば、アプリケーションを販売するストアサイトや各アプリケーションの専用サイトからダウンロードしてユーザ端末にインストールすることにより利用できる所謂ネイティブ型のアプリケーションである。
しかしながら、このようなネイティブ型のアプリケーションでは、それぞれのアプリケーションにおけるユーザのユーザ情報を独自に管理しているため、アプリケーション間でユーザ情報に互換性がない。そのため、あるアプリケーションで友だち関係にあるユーザを、他のアプリケーションに招待することができない場合がある。そこで、本実施形態では、利便性の高いアプリケーション間の相互招待システムを提供することを目的とし、ユーザ情報に互換性がないアプリケーション間であっても、あるアプリケーションで友だち関係にあるユーザを、他のアプリケーションに招待することができるように構成する。
なお、アプリケーションのインストールとは、ユーザ端末に導入されていないアプリケーションのプログラムを新規に導入することだけでなく、相互招待システムに対応するようにアプリケーションのプログラムをアップデート(更新)することを含む。すなわち、ユーザ端末に搭載しているアプリケーションに対して、相互招待システムに対応するための更新プログラムをダウンロードして更新することを含む。
〔ネットワークシステムの構成〕
図1は、相互招待システムを実現する本発明の第1の実施形態によるネットワークシステム1の構成の一例を示す概略構成図である。ネットワークシステム1は、複数のユーザ端末100−N(Nは正の整数。ユーザ端末100−1、ユーザ端末100−2、・・・)と、管理サーバ200と、複数のアプリサーバ300(アプリサーバ310、アプリサーバ320、・・・)と、アプリストア400とのコンピュータ装置を備えており、これらのコンピュータ装置はネットワークNWを介して通信可能に接続される。ここで、複数のユーザ端末100−Nは同様の構成であるので、特に区別しない場合には、「−1」、「−2」等の記載を省略してユーザ端末100として説明する。
管理サーバ200は、本実施形態の相互招待システムに対応するアプリケーションに関する情報を管理するとともに、ユーザ端末100と通信することにより、アプリケーション間の招待情報の管理や招待処理を制御する管理装置である。具体的には、管理サーバ200は、第1アプリケーションおよび第2アプリケーションがインストールされたユーザのユーザ端末100から、当該第2アプリケーションで当該ユーザと所定の関係にある他のユーザの、当該第2アプリケーションがインストールされたユーザ端末100に対して、当該第1アプリケーションをインストールさせる招待処理を制御する。
アプリサーバ300は、ユーザ端末100にインストール可能なアプリケーションに対応するサーバ装置である。ここでは、ユーザ端末100にインストールされるアプリケーションがゲームである場合を例として、ゲームAに対応するアプリサーバ310と、ゲームBに対応するアプリサーバ320とが、ネットワークNWを介してユーザ端末100と接続されることを示している。なお、ネットワークシステム1には、アプリサーバ310及びアプリサーバ320に限らず、ユーザ端末100にインストールされてプレイすることができるゲームに対応して複数のアプリサーバ300が備えられる。ここで、ユーザ端末100にインストールされるアプリケーションとは、アプリケーションのプログラムがユーザ端末100にインストールされることにより、インストールされたプログラムに基づいてユーザ端末100がアプリケーションに関する処理(例えば、ゲームの処理)を行う、所謂ネイティブ型のアプリケーションである。ユーザ端末100は、ゲームをプレイするユーザに対応したユーザ情報をアプリサーバ300に送信したり、ゲームのプレイ中に必要な情報やゲームにおいて所定の関係(例えば、友だち関係)にあるユーザのユーザリストをアプリサーバ300から取得したりする。
アプリストア400は、ユーザ端末100にインストール可能なアプリケーションをダウンロード可能なストアサイト(ダウンロードサービスサイト)を提供するサーバ装置である。ユーザは、自身のユーザ端末100からネットワークNWを介してアプリストア400に接続して所望のアプリケーションを有料または無料で購入することにより、購入したアプリケーションを自身のユーザ端末100にダウンロードしてインストールすることができる。
ユーザ端末100は、ユーザによって使用される端末装置であり、例えば、携帯電話やスマートフォン、タブレット端末、パーソナルコンピュータ、通信機能付きゲーム機などが用いられる。ここでは、ユーザ端末100はスマートフォンであるとして説明する。
図2は、本実施形態によるユーザ端末100の構成の一例を示す概略構成図である。この図に示すように、ユーザ端末100は、入力部110と、表示部120と、端末通信部130と、端末記憶部140と、端末制御部150とを備えている。
入力部110は、ユーザからの操作に応じてユーザの指示を受付けて、指示内容に応じた入力指示情報を生成する入力デバイスである。入力部110には、例えば、キーボードやボタン、タッチパネル、マウス、マイクロホン等を適用できる。
表示部120は、画像や文字等の情報を表示する表示デバイスであり、例えば、LCD(Liquid Crystal Display)、有機EL(Electro Luminescence)ディスプレイ等を適用できる。入力部110と表示部120とは一体に構成されてユーザからの操作入力を受け付けるタッチパネルとして適用することもできる。
端末通信部130は、ネットワークNWを介して管理サーバ200またはアプリサーバ300と通信する。
端末記憶部140は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュROM、HDD(Hard Disk Drive)等の記録媒体またはこれらの組合せを用いて構成され、ユーザ端末100が備える各部を制御するためのプログラム(例えば、端末制御部150に基本動作を行わせるためのOS(Operating System))、インストールされたアプリケーションのプログラム、各種情報等を記憶する。
端末制御部150は、ユーザ端末100の制御中枢として機能するCPU(Central Processing Unit)等の情報処理装置を備えており、ユーザ端末100が備える各部を制御する。例えば、端末制御部150は、端末記憶部140に記憶されているOSに基づく基本動作の処理を実行するとともに、アプリケーションのプログラム(ゲームのプログラム)に基づく処理を実行する。また、端末制御部150は、OS上で動作可能な各種のアプリケーション(Webブラウザや、アプリストア400が提供するストアサイトのストアページを表示させるアプリケーション等)の機能をOSを介して実行する処理を行う。
ネットワークNWは、例えば、携帯電話網、PHS(Personal Handy-phone System)網、VPN(Virtual Private Network)網、専用通信回線網、WAN(Wide Area Network)、LAN(Local Area Network)、PSTN(Public Switched Telephone Network;公衆交換電話網)など、またはこれらの組み合わせによって構成される情報通信ネットワークである。
〔相互招待システムの構成及び処理〕
次に、図3を参照して、本実施形態の相互招待システムの構成及び処理について説明する。
図3は、本実施形態のネットワークシステム1における相互招待システムの構成及び処理の一例を説明する説明図である。この図において図1の各部と対応する構成には同一の符号を付している。ここで、ユーザXのユーザ端末100をユーザ端末100−1とし、ユーザYのユーザ端末100をユーザ端末100−2とする。また、ユーザ端末100にインストール可能なゲームAとゲームBとは相互招待システムに対応するアプリケーションであり、ユーザ端末100−1にはゲームAとゲームBとがインストールされており、ユーザ端末100−2にはゲームBがインストールされている(ゲームAはインストールされていない)ものとする。また、ユーザXとユーザYとは、ゲームBにおいて友だち関係にあるとする。
この図は、ユーザX(招待ユーザ)のユーザ端末100−1のゲームAから、ゲームBにおいて友だち関係にあるユーザY(被招待ユーザ)のユーザ端末100−2に対して、ゲームAをインストールさせるように招待申請する招待処理を説明する図である。つまり、この招待処理は、ユーザX(招待ユーザ)がプレイしている招待申請元のアプリケーション(以下、申請元アプリと称する)であるゲームAへ、招待申請先のアプリケーション(以下、申請先アプリと称する)であるゲームBにおいて友だち関係にあるユーザY(被招待ユーザ)を招待する処理である。なお、申請元アプリ10(ゲームA)と申請先アプリ20(ゲームB)とは、招待処理が行われる以前はそれぞれ申請元と申請先とになっていないが、便宜上、それぞれ申請元アプリ10と申請先アプリ20と称して説明する。
なお、ゲームAが申請元アプリ10でありゲームBが申請先アプリ20である場合の例を説明するが、ゲームBが申請元アプリ10となりゲームAが申請先アプリ20となることもありうる。相互招待システムにおける「相互招待」とは、各アプリケーションのそれぞれにおいて所定の関係(例えば、友だち関係)にあるユーザを、アプリケーション間で互いに招待することができることをいう。
ここでは、ユーザ端末100−1には、申請元アプリ10(ゲームA)及び申請先アプリ20(ゲームB)がインストールされていることを模式的に示している。一方、ユーザ端末100−2には、申請先アプリ20(ゲームB)がインストールされており、申請元アプリ10(ゲームA)が初めはインストールされておらず、ユーザXからの招待申請に基づいてインストールされることを模式的に示している。
申請元アプリ10(ゲームA)は、ゲームAをプレイするユーザに対応したユーザ情報をアプリサーバ310(ゲームA)に送信したり、ゲームAのプレイ中に必要な情報をアプリサーバ310(ゲームA)から取得したりする。同様に、申請先アプリ20(ゲームB)は、ゲームBをプレイするユーザに対応したユーザ情報をアプリサーバ320(ゲームB)に送信したり、ゲームBのプレイ中に必要な情報をアプリサーバ320(ゲームB)から取得したりする。さらに、本実施形態の相互招待システムでは、申請先アプリ20(ゲームB)は、例えば、申請元アプリ10(ゲームA)からの指示に基づいて、申請先アプリ20(ゲームB)におけるユーザリストをアプリサーバ320(ゲームB)から取得する。
また、アプリサーバ310(ゲームA)とアプリサーバ320(ゲームB)とは、それぞれのユーザのユーザ情報を独自の形式により管理している。そのため、申請元アプリ10(ゲームA)と申請先アプリ20(ゲームB)とのユーザ情報には互換性がない。ここで、このユーザ情報とは、例えば、それぞれのアプリケーションにおけるユーザを一意に識別する識別情報であって、アプリケーション毎に独自に管理される識別情報(以下、「ユーザID」と称する)である。なお、ユーザIDは、ユーザが把握できない不可視化情報(内部情報)であってもよい。また、ユーザIDとユーザ自身が登録したユーザ名とが関連付けられてユーザ情報として登録されてもよい。
また、本実施形態の相互招待システムに対応するアプリケーションには、招待処理用のソフトウェア(以下、SDK(Software Development Kit)11と称する)が組み込まれている。このSDK11は、例えば、ユーザ端末100にインストールされた相互招待システムに対応する各アプリケーションと管理サーバ200とを仲介するためのAPI(Application Programming Interface)の集合体で構成されている。この図では、申請元アプリ10(ゲームA)にはSDK11Aが組み込まれ、申請先アプリ20(ゲームB)にはSDK11Bが組み込まれている。SDK11AとSDK11Bとのそれぞれは、申請元アプリ10と申請先アプリ20とのそれぞれに対応する機能を実行する構成を備えており、各アプリケーションに応じて必要な機能が実行される。なお、相互招待システムに対応するアプリケーションは、申請元アプリ10と申請先アプリ20のどちらにもなり得るので、SDK11AとSDK11Bの両方の構成を備えたSKD11が組み込まれている。
つまり、上述のSDK11を組み込み可能なようにアプリケーションを構成すれば、当該アプリケーションは、本実施形態の相互招待システムに対応するアプリケーションとなる。なお、上述のSDK11が予め組み込まれているアプリケーションがダウンロード可能に提供されてもよいし、インストールされているアプリケーションに対して後から組込み可能なSDK11が提供されてもよい。
なお、相互招待システムに対応するアプリケーションの中には、申請先アプリ20にのみに対応するアプリケーションがあってもよい。その場合には、SDK11Bのみが組み込まれているようにしてもよいし、SDK11を組み込んでSDK11Aを機能させないようにしてもよい。例えば、アプリケーションによるサービスの提供が終了することが決まって新たなユーザの登録を受け付けないようなアプリケーションは、申請元アプリ10としての機能を具備しないようにしてもよい。また、相互招待システムに対応するアプリケーションの中には、申請元アプリ10にのみに対応するアプリケーションがあってもよい。その場合には、SDK11Aのみが組み込まれているようにしてもよいし、SDK11を組み込んでSDK11Bを機能させないようにしてもよい。なお、これらの場合は「相互招待」ではなく「一方向招待」となる。つまり、相互招待システムは「相互招待」と「一方向招待」のどちらか一方のみに対応させたり、アプリケーションに応じて「相互招待」と「一方向招待」のどちらかを対応させたりすることができる。
上述のSDK11(この図ではSDK11A、SDK11B)と管理サーバ200とを備えた構成が本実施形態の相互招待システムの主要な構成であり(符号500参照)、以下、相互招待システム500と符号を付して記述する。なお、以下の記述において、相互招待システム500に対応するアプリケーションを、「対応アプリケーション」とも称する。また、アプリケーションを一意に識別する識別情報を「アプリID」と称する。
管理サーバ200は、対応アプリケーションに関する情報を管理する。また、管理サーバ200は、ユーザ端末100にインストールされた対応アプリケーションに組み込まれたSDK11と通信することにより、招待処理を制御する。
この図に示すように管理サーバ200は、通信部210と、記憶部220と、制御部230と、を備えている。通信部210は、ネットワークNWを介してユーザ端末100、アプリサーバ310(ゲームA)、またはアプリサーバ320(ゲームB)と通信する。記憶部220は、対応アプリケーションに関する情報、招待申請に関する情報等の各種情報を記憶する。制御部230は、ユーザ端末100またはアプリサーバ310(ゲームA)との招待処理に関する情報の授受や招待処理の制御を行う。
続いて、相互招待システム500における招待処理の概略の流れについて説明する。ここで、ユーザXのユーザ端末100−1には、申請元アプリ10(ゲームA)及び申請先アプリ20(ゲームB)がインストールされている。一方、ユーザYのユーザ端末100−2には、申請先アプリ20(ゲームB)がインストールされている(申請元アプリ10(ゲームA)はインストールされていない)ものとする。
なお、ユーザ端末100に対応アプリケーションがインストールされて初めて実行(起動)した際に、例えば、対応アプリケーション本体からSDK11に、当該対応アプリケーションのアプリID、及び当該対応アプリケーションにおける自ユーザのユーザIDが設定されているものとする。
(1)申請元アプリから管理サーバへアプリケーションリスト要求(招待ユーザのユーザ端末)
招待ユーザであるユーザXのユーザ端末100−1にインストールされている申請元アプリ10(ゲームA)のSDK11Aは、通常モードで動作中の申請元アプリ10(ゲームA)における第1操作(ユーザXによる操作)に基づいて、複数の対応アプリケーションの一部または全部からなるアプリケーションリストを要求するアプリケーションリスト要求情報を、管理サーバ200に対して送信する(REQ11)。ここで、上述の第1操作とは、被招待ユーザを申請元アプリ10へ招待申請が可能な(申請先アプリ20として選択可能な)対応アプリケーションのアプリケーションリストを取得するための例えば入力部110に対する操作である。
管理サーバ200は、ユーザ端末100−1(SDK11A)からアプリケーションリスト要求情報を取得すると、被招待ユーザを申請元アプリ10(ゲームA)へ招待申請が可能な対応アプリケーションのアプリケーションリストをユーザXのユーザ端末100−1(SDK11A)に対して送信する(RES11)。ユーザ端末100−1(SDK11A)は、管理サーバ200からアプリケーションリストを取得すると、取得したアプリケーションリストの中からユーザ端末100−1にインストールされている対応アプリケーションの少なくとも一部を表示部120に表示する。
(2)申請先アプリのフレンド一覧表示(招待ユーザのユーザ端末)
ユーザ端末100−1の表示部120に表示されたアプリケーションリストの中からユーザXの第2操作により、申請元アプリ10(ゲームA)へ招待したいユーザが登録されている対応アプリケーションが選択される。ここで、上述の第2操作とは、表示部120に表示されたアプリケーションリストに含まれる複数の対応アプリケーションのいずれかを選択するための例えば入力部110に対する操作である。
アプリケーションリスト含まれる複数の対応アプリケーションのいずれか(ここでは、申請先アプリ20(ゲームB))が選択されると、ユーザ端末100−1(SDK11A)は、選択された申請先アプリ20(ゲームB)を特定モードで起動させる。
ここで、対応アプリケーションの起動には、「通常モードの起動」と「特定モードの起動」がある。「通常モードの起動」とは、対応アプリケーションを利用(例えば、ゲームをプレイ)する目的での起動であり、「特定モードでの起動」とは、対応アプリケーションが有する機能のうちの特定の機能を呼び出す(実行する)形式の起動である。例えば、申請先アプリ20(ゲームB)を特定モードで起動した場合、申請先アプリ20(ゲームB)は、自身が有する機能のうちの特定の機能を実行する特定モードでの動作状態に移行する。ここでの特定の機能とは、申請先アプリ20(ゲームB)において招待ユーザ(ユーザX)と所定の関係(例えば、友だち関係)にあるユーザのユーザリストに対応するフレンド一覧をユーザ端末100−1の表示部120に表示させる機能である。
なお、対応アプリケーションの動作状態の一例として、非動作状態(Not running)と、何らかの処理を実行している動作状態(Active)と、何らかの処理を実行しているが画面に非表示とするバックグラウンド状態(BackGround)と、いずれの処理も実行せずに中断しているサスペンド状態(Suspended)がある。ここで、「対応アプリケーションの起動」とは、非動作状態(Not running)、サスペンド状態(Suspended)、またはサスペンド状態(Suspended)から動作状態(Active)に移行することをいう。また、「対応アプリケーションの終了」とは、動作状態(Active)から、非動作状態(Not running)、サスペンド状態(Suspended)、またはサスペンド状態(Suspended)に移行することをいう。
例えば、上述の申請先アプリ20(ゲームB)を特定モードで起動するとは、申請先アプリ20(ゲームB)を、特定モードの動作状態(Active)に移行することをいう。このとき、申請元アプリ10(ゲームA)は、通常モードの動作状態(Active)から、非動作状態(Not running)、サスペンド状態(Suspended)、またはサスペンド状態(Suspended)に移行する。また、申請先アプリ20(ゲームB)の特定モードの動作が終了するとは、特定モードの動作状態(Active)にある申請先アプリ20(ゲームB)を、非動作状態(Not running)、サスペンド状態(Suspended)、またはサスペンド状態(Suspended)に移行することをいう。
なお、複数の対応アプリケーションが同時に動作状態に成り得る場合には、「対応アプリケーションの起動」とは、例えば、対応アプリケーションが画面の最前面に表示されるなどして、ユーザに対して操作可能な状態に移行することをいう。
ユーザ端末100−1において、特定モードで起動した申請先アプリ20(ゲームB)は、申請先アプリ20(ゲームB)においてユーザXと所定の関係(例えば、友だち関係)にあるユーザのユーザリストをアプリサーバ320(ゲームB)に問い合わせて取得する。そして、ユーザ端末100−1の申請先アプリ20(ゲームB)のSDK11Bは、申請先アプリ20(ゲームB)が取得したユーザリストに対応するフレンド一覧を表示部120に表示する。
(3)申請先アプリから管理サーバへ招待申請(招待ユーザのユーザ端末)
ユーザ端末100−1の表示部120に表示されたフレンド一覧の中から、申請元アプリ10(ゲームA)へ招待される被招待ユーザであるユーザYを招待ユーザであるユーザXが選択すると、ユーザ端末100−1(SDK11B)は、選択されたユーザYを申請元アプリ10(ゲームA)へ招待申請する招待申請情報を管理サーバ200に対して送信する(REQ13)。このとき被招待ユーザが複数選択されてもよい。複数の被招待ユーザが選択された場合には、ユーザ端末100−1(SDK11B)は、それぞれの被招待ユーザに対応する複数の招待申請情報を管理サーバ200に対して送信する。管理サーバ200は、ユーザ端末100−1(SDK11B)から送信された招待申請情報を受け取ると、受け取った招待申請情報の記録を記憶部220に記憶させて管理する。
(4)申請先アプリから管理サーバへ申請照会(被招待ユーザのユーザ端末)
被招待ユーザであるユーザYのユーザ端末100−2にインストールされている申請先アプリ20(ゲームB)のSDK11Bは、管理サーバ200に管理されている招待申請情報の中に被招待ユーザがユーザYとなる招待申請情報があるか否かを所定のタイミング(起動時や起動中の所定の時間間隔等)で照会する(REQ21)。被招待ユーザがユーザYとなる招待申請情報が管理サーバ200に管理されている場合、管理サーバ200は、ユーザ端末100−2(SDK11B)からの上述の照会に応じて、当該招待申請情報に基づく招待通知情報をユーザ端末100−2(SDK11B)に対して送信する(RES21)。ユーザ端末100−2(SDK11B)は、管理サーバ200から送信された招待通知情報を取得する。
また、ユーザ端末100−2(SDK11B)は、管理サーバ200から招待通知情報を取得した場合、表示部120に表示される申請先アプリ20(ゲームB)の起動画面や所定の画面に招待通知情報を取得したことを示す招待通知の表示を行う。これにより、ユーザXがユーザYを申請元アプリ10(ゲームA)へ招待する招待申請が申請先アプリ20(ゲームB)を介してユーザYに通知される。また、ユーザ端末100−2(SDK11B)は、取得した招待通知情報に基づいて、招待申請の内容を示す招待情報(招待ユーザを示す情報や申請元アプリ10(ゲームA)を示す情報等)を表示部120に表示させる。
(5)申請元アプリのインストール(被招待ユーザのユーザ端末)
被招待ユーザであるユーザYは、通知された招待申請の承諾も拒否も可能である。なお、通知された招待申請の申請元アプリ10(ゲームA)が既にユーザ端末100−2にインストールされている場合には、ユーザ端末100−2(SDK11B)は、その旨を表示部120に表示させてもよい。
通知された招待申請をユーザYが承諾した場合、ユーザ端末100−2(SDK11B)は、承諾した招待申請に対応する招待通知情報を端末記憶部140に記憶させる。また、ユーザ端末100−2は、アプリストア400から提供されるストアサイトの申請元アプリ10(ゲームA)をダウンロード可能なストアページを表示部120に表示する。
ユーザYは、このストアページから申請元アプリ10(ゲームA)をユーザ端末100−2にダウンロードしてインストールする。ユーザ端末100−2にインストールされた申請元アプリ10(ゲームA)が、ユーザYの操作によって起動すると、当該申請元アプリ10(ゲームA)のSDK11Aは、申請先アプリ20(ゲームB)のSDK11Bが管理サーバ200から取得して端末記憶部140に記憶させた招待通知情報を取得する。この招待通知情報の有無により、上記招待申請に基づいてインストールされた対応アプリケーションであるか否かが判定できる。
(6)申請先アプリから管理サーバへ招待成立通知(被招待ユーザ端末)
上記招待申請に基づいてユーザ端末100−2にインストールされた申請元アプリ10(ゲームA)をユーザYが起動したことや、プレイを開始して予め設定された成果地点に到達したことに基づいて、ユーザ端末100−2(SDK11A)は、この招待申請による招待が成立したことを示す招待成立情報を管理サーバ200に対して送信する(REQ22)。ここで、上述の成果地点とは、ある程度ゲームAが進行した(プレイされた)地点であり、チュートリアルの終了、またはゲーム進行における所定のステージの終了や所定のポイントの獲得などアプリケーション側で任意に設定可能な成果地点である。
(7)管理サーバから申請元アプリのアプリサーバへ招待完了通知
管理サーバ200は、ユーザ端末100−2(SDK11A)から送信された招待成立情報を受け取ると、この招待申請による招待が完了したことを示す招待完了通知情報をアプリサーバ310(ゲームA)に対して送信する(REQ23)。アプリサーバ310(ゲームA)は、管理サーバ200から送信された招待完了通知情報を受け取ると、招待が完了(成立)したことによる所定の報酬(例えば、インセンティブ)を申請元アプリ10(ゲームA)におけるユーザXに対して付与する。この所定の報酬は、例えば、申請元アプリ10(ゲームA)内で使用できる仮想通貨やアイテムである。
このような処理の流れにより、申請元アプリ10(ゲームA)への招待申請が申請先アプリ20(ゲームB)を介して行われる。ここで、相互招待システム500においては、被招待ユーザを申請元アプリ10(ゲームA)へ招待申請する招待申請情報を、招待ユーザと被招待ユーザとが所定の関係(例えば、友だち関係)にある申請先アプリ20(ゲームB)を介して管理サーバ200に対して送信することができる。そのため、相互招待システム500では、ユーザ情報に互換性がないアプリケーション間であっても、あるアプリケーションで所定の関係(例えば、友だち関係)にあるユーザを、他のアプリケーションに招待することができる。
また、相互招待システム500では、管理サーバ200が上述の招待申請情報の記録(招待申請記録)を管理することにより、アプリケーション間でユーザ情報が異なる場合の招待処理を管理するため、SNSにおいて、アプリケーション毎の独自のユーザ情報を紐づけて管理するものとは異なる。よって、相互招待システム500では、SNSのような会員IDによるSNSサーバへのログイン操作が不要であり、ユーザは管理サーバ200の存在を意識する必要なくアプリケーションへの招待が可能である。したがって、本実施形態によれば、アプリケーション間でユーザを招待する際の利便性を向上させることができる。
〔招待処理におけるユーザ端末100の表示画面例〕
次に、図4を参照して、相互招待システム500における招待処理において、ユーザ端末100の表示部120に表示される表示画面の一例を説明する。
図4は、招待処理におけるユーザ端末100の表示画面の表示例を示す図である。この図において、符号(a)、(b)、(c)、(d)に示す表示画面は、招待処理の過程(図3の(1)〜(3)の処理の過程)において招待ユーザであるユーザXのユーザ端末100−1の表示部120に表示される表示画面を示している。また、符号(e)、(f)に示す表示画面は、招待処理の過程(図3の(4)〜(5)の処理の過程)において被招待ユーザであるユーザYのユーザ端末100−2の表示部120に表示される表示画面を示している。
ここで、符号120aの領域が招待処理に関する表示画面の全体の領域を示している。また、符号120aの領域には、タイトル等が表示される符号120bの領域と、そのタイトルに対応するコンテンツ等が表示される符号120cの領域とが含まれている。
まず、招待ユーザであるユーザXのユーザ端末100−1の表示部120に表示される表示画面について説明する。
(a)に示す表示画面は、申請元アプリ10(ゲームA)における招待画面の例である(図3の(1)の処理において表示される表示画面例)。符号120bの領域には、動作中の申請元アプリ10(ゲームA)のタイトル(ここでは、「ゲームA」)が表示される。符号120cの領域には、他のゲームの友だちを招待する招待処理を開始する「招待ボタン」K1が表示される。この「招待ボタン」K1は、アプリケーションリスト要求情報をユーザ端末100−1(SDK11A)から管理サーバ200に対して送信させるための操作子として表示される。例えば、ユーザXがこの「招待ボタン」K1に対して操作(第1操作)することにより、ユーザ端末100−1(SDK11A)は、アプリケーションリスト要求情報を管理サーバ200に対して送信する(図3の(1)のREQ11)。
(b)に示す表示画面は、アプリケーションリストに対応した対応アプリケーションの一覧の表示画面(アプリ一覧画面)の例である(図3の(1)の処理において表示される表示画面例)。上述の「招待ボタン」K1に対する操作に基づいて、ユーザ端末100−1(SDK11A)は、管理サーバ200から送信されたアプリケーションリストを取得すると(図3の(1)のRES11)、取得したアプリケーションリストの中からユーザ端末100−1にインストールされている対応アプリケーションの少なくとも一部をアプリ一覧画面として、招待画面から切り替えて表示部120に表示する。符号120bの領域には、この表示画面のタイトルとして「アプリ一覧」が表示される。符号120cの領域には、招待申請が可能(被招待ユーザを選択可能)な対応アプリケーションを示す情報が並べて表示される。ここで、この符号120cに表示される対応アプリケーションを示す情報のそれぞれは、ユーザXからの操作(第2操作)に応じて対応アプリケーションを選択可能な操作子として表示される。また、符号120bの領域には、一つ前の表示画面に戻る操作子として「戻るボタン」K2が表示される。
なお、ユーザ端末100−1(SDK11A)は、申請元アプリ10(ゲームA)以外の対応アプリケーションがユーザ端末100−1にインストールされていない場合には、その旨を通知するメッセージ、または、対応アプリケーションを紹介する情報等を表示部120に表示する。
(c)に示す表示画面は、フレンド一覧が表示された表示画面(フレンド一覧画面)の例である(図3の(2)の処理において表示される表示画面例)。(b)に示すアプリ一覧画面からユーザXの操作(第2操作)により選択された申請先アプリ20(ゲームB)が特定モードで起動すると、ユーザ端末100−1(SDK11B)は、申請先アプリ20(ゲームB)においてユーザXと所定の関係(例えば、友だち関係)にあるユーザのユーザリストに対応するフレンド一覧が表示されたフレンド一覧画面を、申請元アプリ10(ゲームA)における表示画面であるアプリ一覧画面から切り替えて表示部120に表示する。符号120bの領域には、この表示画面のタイトルとして「ゲームBのフレンド一覧」が表示される。符号120cの領域には、被招待ユーザとして選択可能なユーザを示す情報が並べて表示される。ここで、この符号120cに表示されるユーザを示す情報のそれぞれは、ユーザXからの操作に応じて被招待ユーザを選択可能な操作子として表示される。なお、このフレンド一覧画面において被招待ユーザを複数選択することも可能である。例えば、複数のユーザを示す情報それぞれに対応して表示されるチェックボックスのオンとオフ(チェックありとチックなし)を切替えることにより、一または複数のユーザを被招待ユーザとして選択可能である。符号120bの領域には、符号120cの領域において選択されたユーザを決定(選択確定)する操作子として「決定ボタン」K3が表示される。また、符号120bの領域には、一つ前の表示画面に戻る操作子として「戻るボタン」K2が表示される。
ユーザ端末100−1(SDK11B)は、申請先アプリ20(ゲームB)においてユーザXと所定の関係(例えば、友だち関係)にあるユーザがいない場合には、その旨を通知するメッセージを表示部120に表示する。
(d)に示す表示画面は、被招待ユーザに対する招待申請が完了したことを示す表示画面(招待申請完了画面)の例である(図3の(3)の処理において表示される表示画面例)。ユーザ端末100−1(SDK11B)は、(c)に示すフレンド一覧画面からユーザXの操作に応じて選択されたユーザ(ここでは、ユーザY)を被招待ユーザとして、ユーザYを申請元アプリ10(ゲームA)へ招待申請する招待申請情報を管理サーバ200に対して送信すると(図3の(3)のREQ13)、フレンド一覧画面から切り替えてこの招待申請完了画面を表示部120に表示する。符号120bの領域には、この表示画面のタイトルとして「招待申請完了」が表示される。符号120cの領域には、ユーザXからの操作により招待処理を終了する操作子として「終わるボタン」K4と、招待処理を継続する操作子として「続けるボタン」K5とが表示される。
「続けるボタン」K5に対して操作がされた場合には、ユーザ端末100−1(SDK11B)は、例えば、(c)に示すフレンド一覧画面に表示を切り替える。一方、「終わるボタン」K4に対して操作がされると、ユーザ端末100−1(SDK11B)は、招待申請完了画面の表示を終了するとともに特定モードの動作を終了する。そして、表示部120の表示画面は、申請元アプリ10(ゲームA)における招待画面の表示に戻る。
ここで、上述の(a)に示す招待画面、及び(b)に示すアプリ一覧画面は、ユーザ端末100−1(SDK11A)が、申請元アプリ10(ゲームA)の通常モードの動作において表示する表示画面である。一方、上述の(c)に示すフレンド一覧画面、及び(d)に示す招待申請完了画面は、ユーザ端末100−1(SDK11B)が、申請先アプリ20(ゲームB)の特定モードの動作において表示する表示画面である。申請先アプリ20(ゲームB)が特定モードの動作状態(Active)にあって、(c)に示すフレンド一覧画面、又は(d)に示す招待申請完了画面を表示している期間は、申請元アプリ10(ゲームA)の動作状態は、非動作状態(Not running)、サスペンド状態(Suspended)、またはサスペンド状態(Suspended)となっている。
次に、被招待ユーザであるユーザYのユーザ端末100−2の表示部120に表示される表示画面について説明する。申請先アプリ20(ゲームB)におけるユーザYを被招待ユーザとした招待申請の通知は、ユーザYのユーザ端末100−2において、申請先アプリ20(ゲームB)が通常モードで起動したときに、ユーザYに通知される。
(e)に示す表示画面は、被招待ユーザがユーザYとなる招待申請がある場合に、その旨が通知される招待通知画面の例である(図3の(4)の処理において表示される表示画面例)。この招待通知画面は、例えば、申請先アプリ20(ゲームB)の起動画面(起動したときに表示されるゲームのプレイを開始可能な画面)である。符号120bの領域には、動作中の申請先アプリ20(ゲームB)のタイトル(ここでは、「ゲームB」)が表示される。符号120cの領域には、ユーザY宛てに届くメッセージ(お知らせ)の表示領域が含まれ、被招待ユーザがユーザYとなる招待申請があることを示す招待通知メッセージが表示される。また、この招待通知メッセージは、ユーザYからの操作に応じて、申請先アプリ20(ゲームB)においてユーザY宛に届いている招待情報の一覧を表示する招待情報一覧画面に切り替える操作子として表示される。
(f)に示す表示画面は、招待情報の一覧を表示する招待情報一覧画面の例である(図3の(4)の処理において表示される表示画面例)。ユーザ端末100−2(SDK11B)は、(e)に示す招待通知画面に表示された招待通知メッセージに対するユーザYの操作に応じて、招待通知画面から切り替えて招待情報一覧画面を表示部120に表示する。符号120bの領域には、この表示画面のタイトルとして「招待情報一覧」が表示される。符号120cの領域には、申請先アプリ20(ゲームB)においてユーザY宛に届いている招待情報が並べて表示される。ここで、この招待情報として、招待ユーザを示す情報(例えば、ユーザX)と、ユーザYを招待する対応アプリケーションである申請元アプリ10(ゲームA)を示す情報(例えば、ゲームA)とが表示される。また、この招待情報は、ユーザYからの招待を承諾する操作(第3操作)に応じて、アプリストア400にアクセスして申請元アプリ10(ゲームA)をダウンロード可能なストアページの表示画面に切り替える操作子として表示される。また、符号120bの領域には、一つ前の表示画面に戻る操作子として「戻るボタン」K2が表示される。
〔ユーザ端末100(SDK11)の機能構成〕
次に、図5を参照して、相互招待システム500においてユーザ端末100(SDK11)が実行する招待処理の機能構成について説明する。図5は、本実施形態によるユーザ端末100において、端末制御部150がSDK11に基づいて実行する招待処理の機能構成の一例を示す構成図である。
SDK11は、アプリケーションリスト取得部161と、特定モード起動部162(起動部)と、ユーザリスト取得部163と、招待申請通知部164と、特定モード終了部165と、照会部166と、招待通知取得部167と、提示部168と、画面遷移部169と、招待情報管理部170と、招待成立通知部171とを備えている。
アプリケーションリスト取得部161は、相互招待システム500に対応する複数の対応アプリケーションの一部または全部からなるアプリケーションリストを管理サーバ200から取得する。例えば、アプリケーションリスト取得部161は、通常モードで動作中の対応アプリケーション(申請元アプリ10)における前述の第1操作に基づいて、上述のアプリケーションリストを要求するアプリケーションリスト要求情報を管理サーバ200に対して送信する。そして、アプリケーションリスト取得部161は、アプリケーションリスト要求情報を取得した管理サーバ200から送信されたアプリケーションリストを管理サーバ200から取得する。
特定モード起動部162は、アプリケーションリストに含まれる対応アプリケーションの中から選択されたアプリケーションである申請先アプリ20を特定モードで起動させる。例えば、申請元アプリ10のSDK11Aの特定モード起動部162は、アプリケーションリストに含まれる対応アプリケーションの中から選択された申請先アプリ20を特定モードで起動させる。ここで、前述したように、申請先アプリ20を特定モードで起動するとは、例えば、申請先アプリ20を特定モードの動作状態(Active)に移行することをいう。
また、特定モード起動部162は、通常モードで動作中の申請元アプリ10における招待ユーザ(例えば、ユーザX)のユーザIDを申請先アプリ20のSDK11Bに対して通知する。これにより、申請元アプリ10における招待ユーザ(例えば、ユーザX)のユーザIDを申請先アプリ20のSDK11Bから管理サーバ200に対して通知することが可能となる。さらに、特定モード起動部162は、通常モードで動作中の申請元アプリ10のアプリIDを申請先アプリ20に対して通知する。これにより、申請元アプリ10のアプリIDを申請先アプリ20のSDK11Bから管理サーバ200に対して通知することが可能となる。
なお、特定モード起動部162は、申請元アプリ10における招待ユーザ(例えば、ユーザX)のユーザID、又は申請元アプリ10のアプリIDを、申請先アプリ20のSDK11Bに対して、直接的又は当該ユーザ端末100の端末記憶部140を介して間接的に通知する。
ユーザリスト取得部163は、特定モードで動作中の申請先アプリ20に対応するアプリサーバ300(例えば、申請先アプリ20(ゲームB)に対応するアプリサーバ320(ゲームB))が管理している招待ユーザ(例えば、ユーザX)と所定の関係(例えば、友だち関係)にあるユーザのユーザリストを取得する。具体的には、例えば、申請先アプリ20が申請先アプリ20に対応するアプリサーバ300からユーザリストを取得し、申請先アプリ20が取得したユーザリストを申請先アプリ20のSDK11Bが備えるユーザリスト取得部163が取得する。即ち、申請先アプリ20のSDK11Bが備えるユーザリスト取得部163は、申請先アプリ20を介して申請先アプリ20に対応するアプリサーバ300からユーザリストを取得する。
招待申請通知部164は、ユーザリスト取得部163が取得したユーザリストの中から選択された被招待ユーザ(例えば、ユーザY)を、申請元アプリ10へ招待申請することを示す招待申請情報を管理サーバ200に対して送信する。この招待申請情報には、例えば、申請元アプリ10における招待ユーザ(例えば、ユーザX)のユーザID、特定モードで起動された申請先アプリ20における招待ユーザ(例えば、ユーザX)のユーザID、または、ユーザリストの中から選択された被招待ユーザ(例えば、ユーザY)の申請先アプリ20におけるユーザIDが含まれる。これにより、申請元アプリ10における招待ユーザ(例えば、ユーザX)が、申請先アプリ20において招待ユーザとして、ユーザリストの中から選択された被招待ユーザ(例えば、ユーザY)に対して、招待申請することができる。
なお、招待申請情報には、申請元アプリ10のアプリIDがさらに含まれてもよい。また、招待申請情報には、申請先アプリ20のアプリIDがさらに含まれてもよい。
ここで、招待申請情報に含まれる申請元アプリ10における招待ユーザ(例えば、ユーザX)のユーザID又は申請元アプリ10のアプリIDは、招待ユーザ(例えば、ユーザX)のユーザ端末100にて申請先アプリ20が、申請元アプリ10から直接的又は当該ユーザ端末100の端末記憶部140を介して間接的に取得したものである。
特定モード終了部165は、特定モードで起動された申請先アプリ20を終了させる。例えば、特定モードで起動された申請先アプリ20のSDK11Bが備える特定モード終了部165は、当該SDK11Bが備える招待申請通知部164が招待申請情報を送信した後に、当該申請先アプリ20の特定モードの動作を終了させる。ここで、前述したように、申請先アプリ20の特定モードの動作の終了とは、特定モードの動作状態(Active)にある申請先アプリ20(ゲームB)を、非動作状態(Not running)、サスペンド状態(Suspended)、またはサスペンド状態(Suspended)に移行することをいう。
照会部166は、通常モードで動作中の申請先アプリ20において、被招待ユーザが自ユーザ(例えば、ユーザY)となる招待申請情報(即ち、自ユーザに対する招待申請情報)の記録(招待申請記録)の有無を管理サーバ200に対して照会(申請照会)する。例えば、照会部166は、招待申請情報(招待申請記録)に含まれる被招待ユーザの申請先アプリ20におけるユーザIDが、自ユーザ(例えば、ユーザY)のユーザIDとなる招待申請情報(招待申請記録)の有無を管理サーバ200に対して照会する。
招待通知取得部167は、照会部166が照会した結果、自ユーザ(例えば、ユーザY)のユーザIDが申請先アプリ20における被招待ユーザのユーザIDとなる招待申請情報(招待申請記録)が有る場合に、当該招待申請情報(招待申請記録)に基づく招待通知情報を管理サーバ200から取得する。
提示部168は、取得されたアプリケーションリスト、ユーザリスト等に含まれる各種情報に基づく表示画面を生成して表示部120に表示させることにより、当該各種情報を提示する。例えば、提示部168(第1提示部、アプリケーションリスト提示部)は、アプリケーションリスト取得部161が取得したアプリケーションリストの中からユーザ端末100にインストールされている対応アプリケーションを提示する(図4の(b)に示すアプリ一覧画面の例参照)。
ここで、アプリケーションリストの中からユーザ端末100にインストールされている対応アプリケーションを検出する方法としては、例えばURLスキームを用いる方法がある。URLスキームは、アプリケーションまたはアプリケーション内の特定の機能を呼び出すものであり、アプリケーション毎に定められている。そのため、URLスキームを利用することによって対応アプリケーションの識別が可能である。
例えば、ユーザ端末100に対応アプリケーションがインストールされて初めて実行(起動)した際に、当該インストールされた対応アプリケーションのSDK11には、初期化処理において当該対応アプリケーションのURLスキームが設定される。また、アプリケーションリスト取得部161は、アプリケーションリストとともに、アプリケーションリストに含まれる対応アプリケーションのそれぞれに対応するURLスキームを取得する。そして、提示部168は、インストールされた対応アプリケーションのURLスキームと、アプリケーションリストに含まれる対応アプリケーションのURLスキームとに基づいて、ユーザ端末100にインストールされている対応アプリケーションを検出し、検出した対応アプリケーションを提示する。
なお、OSの標準の機能等によりユーザ端末100にインストール済みの対応アプリケーションの一覧が取得可能な場合には、提示部168は、このインストール済みの対応アプリケーションの一覧を用いることにより、アプリケーションリストの中からユーザ端末100にインストールされている対応アプリケーションを検出してもよい。
また、提示部168は、ユーザリスト取得部163が取得したユーザリストに含まれるユーザの少なくとも一部を提示する。例えば、提示部168は、申請先アプリ20において招待ユーザ(例えば、ユーザX)と所定の関係(例えば、友だち関係)にあるユーザのユーザリスト画面(フレンド一覧画面)を表示部120に表示させる(図4の(c)に示すフレンド一覧画面の例参照)。
また、提示部168(第2提示部、招待情報提示部)は、招待通知取得部167が取得した招待通知情報に基づく招待情報を提示する。例えば、提示部168は、被招待ユーザが自ユーザ(例えば、ユーザY)となる招待情報の一覧を表示する招待情報一覧画面を表示部120に表示させる(図4の(f)に示す招待情報一覧画面の例参照)。
画面遷移部169は、提示部168が提示した招待情報のうちの被招待ユーザによって招待が承諾された招待情報が示す申請元アプリ10をインストール可能な画面に遷移させる。例えば、画面遷移部169は、提示部168が提示した招待情報に対する前述の第3操作に基づいて、当該招待情報が示す申請元アプリ10をインストール可能な画面に遷移させる。
例えば、画面遷移部169は、申請元アプリ10をインストール可能(ダウンロード可能)なストアサイトのストアページを表示するアプリケーション(アプリストア)を起動させる。そして、この起動させたアプリストアが、アプリストア400から申請元アプリ10をインストール可能なストアページを取得して表示部120に表示させる。
招待情報管理部170は、提示部168が提示した招待情報のうちの被招待ユーザ(例えば、ユーザY)によって招待が承諾された招待情報に対応する招待通知情報をユーザ端末100の端末記憶部140に記憶させる。なお、招待情報管理部170は、招待通知情報に含まれる少なくとも一部の情報をユーザ端末100の端末記憶部140に記憶させてもよい。
招待成立通知部171は、通常モードで動作中の対応アプリケーションにおいて所定の条件が充足された場合に、ユーザ端末100の端末記憶部140に、当該動作中の対応アプリケーションに対応した招待通知情報が記憶されていることを条件として、当該招待通知情報に対応する招待が成立したことを示す招待成立情報を管理サーバ200に対して送信する。ここで、上述の対応アプリケーションにおいて所定の条件が充足された場合とは、図3を用いて説明したように、例えば、この対応アプリケーションにおいて予め設定された成果地点に到達した場合である。この成果地点には、対応アプリケーションがインストールされて初めて実行(起動)したときが含まれてもよい。すなわち、対応アプリケーションを通常モードで初めて実行(起動)した場合に所定の条件が充足されることとしてもよい。
ここで、上述の招待成立情報には招待通知情報の一部または全部が含まれている。この招待通知情報の一部または全部は、被招待ユーザのユーザ端末100にて申請元アプリ10のSDK11Aが、申請先アプリ20のSDK11Bから直接的又は当該ユーザ端末100の端末記憶部140を介して間接的に取得したものである。例えば、被招待ユーザ(例えば、ユーザY)のユーザ端末100(例えば、ユーザ端末100−2)において、申請元アプリ10のSDK11Aの招待成立通知部171は、申請先アプリ20のSDK11Bの招待情報管理部170が端末記憶部140に記憶させた招待通知情報に含まれる少なくとも一部の情報を取得する。
なお、図5に示すSDK11が実行する招待処理の機能構成のうち、例えば、アプリケーションリスト取得部161と、特定モード起動部162(起動部)と、提示部168と、招待情報管理部170と、招待成立通知部171とが、申請元アプリ10のSDK11Aの機能構成(すなわち、申請元の機能構成)に対応する。また、例えば、ユーザリスト取得部163と、招待申請通知部164と、特定モード終了部165と、照会部166と、招待通知取得部167と、提示部168と、画面遷移部169とが、申請先アプリ20のSDK11Bの機能構成(すなわち、申請先の機能構成)に対応する。
〔管理サーバ200の構成〕
次に、図6を参照して、管理サーバ200の構成の詳細について説明する。
図6は、本実施形態による管理サーバ200の構成の一例を示す構成図である。管理サーバ200は、図3を参照して説明したように、通信部210と、記憶部220と、制御部230とを備えており、ここでは、記憶部220と、制御部230とのそれぞれの構成について詳しく説明する。
記憶部220は、制御部230により管理される各種情報を記憶する。この図に示すように、記憶部220は、アプリケーション設定記憶部221と、招待申請情報記憶部222とを備えている。なお、各種情報は、データベースのテーブル形式やJSON(JavaScript(登録商標)Object Notation)形式など、その情報の利用に適した形式で格納されていればよい。
アプリケーション設定記憶部221は、相互招待システム500に対応する対応アプリケーションに関する情報(アプリケーション情報)を記憶する。図7は、アプリケーション設定記憶部221に記憶されるアプリケーション情報の一例を示す図である。アプリケーション情報には、対応アプリケーションのアプリID(ApID)と、通知先URL(NoticeURL)と、ストアURL(ApStoreURL)と、当該対応アプリケーションの名称を示すアプリ名称(ApNAME)と、当該対応アプリケーションに関する説明情報であるアプリ説明(ApDOC)と、当該対応アプリケーションを示すアイコン画像であるアプリアイコン画像(ApICO)と、再招待許可フラグ(FlagResultInvite)とが関連付けられている。
通知先URL(NoticeURL)は、招待完了通知情報の通知先のURL(Uniform Resource Locator)であって、例えば、当該対応アプリケーションに対応するアプリサーバ300のURLが設定される。ストアURL(ApStoreURL)は、当該対応アプリケーションをダウンロード可能な販売サイト(アプリストア400)のページのURLである。アプリURLスキーム(ApURI)は、当該対応アプリケーションにおいて定められているURLスキームが設定される。再招待許可フラグ(FlagResultInvite)は、当該対応アプリケーションが再招待可能であるか否かを表すフラグ情報が設定される。例えば、再招待許可フラグ(FlagResultInvite)には、再招待不可である場合にはフラグ「0」が設定され、再招待可である場合にはフラグ「1」が設定される。
なお、これらのアプリケーション情報は、例えば、対応アプリケーションがアプリストア400からダウンロード可能になる前に予め設定されてアプリケーション設定記憶部221に記憶される。
招待申請情報記憶部222は、ユーザ端末100から送信されて管理サーバ200が取得した招待申請情報に含まれる情報を招待申請記録として記憶する。即ち、招待申請情報記憶部222は、申請元アプリ10の招待ユーザ(例えば、ユーザX)が、申請先アプリ20において招待ユーザと所定の関係(例えば、友だち関係)にある被招待ユーザ(例えば、ユーザY)を、申請元アプリ10へ招待申請する招待申請情報に含まれる情報を招待申請記録として記憶する。
この招待申請記録は、例えば、ユーザ端末100から送信された招待申請情報を管理サーバ200が取得したときに、その招待申請情報に対応する新たなレコード(一つ分の招待申請情報のデータ)が生成されて招待申請情報記憶部222にその招待申請情報の記録として記憶される。
なお、この招待申請記録は、ユーザ端末100から取得した招待申請情報に含まれる情報以外の情報も含み、これらの情報の中には招待処理の過程において更新される情報も含む。
図8は、招待申請情報記憶部222に記憶される招待申請記録の一例を示す図である。招待申請記録には、招待ID(InviteID)と、申請元アプリID(ApIDfrom)と、申請元アプリの招待ユーザID(Apfrom_UIDfrom)と、申請元アプリの被招待ユーザID(Apfrom_UIDto)と、申請先アプリID(ApIDto)と、申請先アプリの招待ユーザID(Apto_UIDfrom)と、申請先アプリの被招待ユーザID(Apto_UIDto)と、招待申請の状態(StatusInvite)と、が関連付けられている。
招待ID(InviteID)は、招待申請記録として記憶される招待申請情報毎に識別可能なように各招待申請情報を取得した順に発行される管理IDである。申請元アプリID(ApIDfrom)は、申請元アプリ10のアプリIDであり、申請元アプリの招待ユーザID(Apfrom_UIDfrom)は、招待ユーザの申請元アプリ10におけるユーザIDであり、申請元アプリの被招待ユーザID(Apfrom_UIDto)は、被招待ユーザの申請元アプリ10におけるユーザIDである。申請先アプリID(ApIDto)は、申請先アプリ20のアプリIDであり、申請先アプリの招待ユーザID(Apto_UIDfrom)は、招待ユーザの申請先アプリ20におけるユーザIDであり、申請先アプリの被招待ユーザID(Apto_UIDto)は、被招待ユーザの申請先アプリ20におけるユーザIDである。
招待申請の状態(StatusInvite)は、ユーザ端末100から送信された招待申請情報に基づく招待処理の進行度合いの状態を表すフラグ情報が設定される。例えば、招待申請の状態(StatusInvite)には、管理サーバ200が受け取った招待申請情報に基づく招待通知情報が被招待ユーザへ未通知の状態ではフラグ「0」(招待申請未通知)が設定され、被招待ユーザへ通知済となった場合にフラグ「0」からフラグ「1」(招待申請通知済)に更新される。また、この招待申請情報に対応する招待成立情報を、被招待ユーザのユーザ端末100から管理サーバ200が受け取った場合、招待申請の状態(StatusInvite)は、フラグ「1」からフラグ「2」(招待成立未通知)に更新される。さらに、管理サーバ200が受け取った招待成立情報に基づいて、招待成立したことを申請元アプリ10に対して通知する招待成立通知情報を、申請元アプリ10に対応するアプリサーバ300に送信した場合、招待申請の状態(StatusInvite)は、フラグ「2」からフラグ「3」(招待成立通知済)に更新される。また、管理サーバ200が受け取った招待申請情報が被招待ユーザによって拒否された場合、及び招待申請の状態(StatusInvite)にフラグ「0」またはフラグ「1」が設定されている状態が予め定められた時間以上経過した場合や招待申請が拒否された場合、招待申請の状態(StatusInvite)は、招待が失敗したことを示すフラグ「−1」(失敗)に更新される。
なお、招待申請記録には、申請先アプリの招待ユーザ名(Apto_NAMEfrom)と、申請先アプリの招待ユーザ画像URL(Apto_URLfrom)とがさらに関連付けられていてもよい。ここで、申請先アプリの招待ユーザ名(Apto_NAMEfrom)は、招待ユーザの申請先アプリ20におけるユーザ名であり、申請先アプリの招待ユーザ画像URL(Apto_URLfrom)は、招待ユーザの申請先アプリ20におけるユーザ画像のリンク先を示すURLである。これらの情報は、図3に示す(1)から(7)の招待処理の流れにおいて必ずしも必要ではないが、これらの情報が招待申請記録(招待申請情報)に含まれることにより、招待通知情報を受け取った被招待ユーザのユーザ端末100の申請先アプリ20において、SDK11Bの処理だけで招待ユーザのユーザ名やユーザ画像を表示することが可能となる。
制御部230は、申請元アプリ10および申請先アプリ20がインストールされた招待ユーザのユーザ端末100から、当該申請先アプリ20で当該招待ユーザと所定の関係にある被招待ユーザの、当該申請先アプリ20がインストールされたユーザ端末100に対して、当該申請元アプリ10をインストールさせる招待処理を制御する。この図に示すように、制御部230は、アプリケーション管理部231と、アプリケーションリスト通知部232と、招待申請受取部233と、招待申請管理部234と、申請照会部235と、招待通知部236と、招待成立受取部237と、招待成立処理部238とを備えている。
アプリケーション管理部231は、相互招待システム500に対応する対応アプリケーションに関する情報を管理する。このアプリケーション管理部231が管理する対応アプリケーションに関する情報は、例えば、相互招待システム500に対応する対応アプリケーションがアプリストア400からダウンロード可能になる前に予め設定されてアプリケーション設定記憶部221に記憶される。
アプリケーションリスト通知部232は、ユーザ端末100からの要求に基づいて、アプリケーション管理部231を参照して、対応アプリケーションのアプリケーションリストをユーザ端末100に対して送信する。例えば、アプリケーションリスト通知部232は、招待ユーザ(例えば、ユーザX)のユーザ端末100(例えば、ユーザ端末100−1)の申請元アプリ10に対して、申請元アプリ10への招待申請が可能な対応アプリケーションのアプリケーションリストを送信する。
招待申請受取部233は、ユーザ端末100から送信された招待申請情報を受け取る。具体的には、招待申請受取部233は、招待ユーザのユーザ端末100においてアプリケーションリストから選択されることにより起動(特定モードで起動)された申請先アプリ20から送信された被招待ユーザを申請元アプリ10へ招待申請する招待申請情報を受け取る。
例えば、招待申請受取部233は、招待ユーザ(例えば、ユーザX)のユーザ端末100(例えば、ユーザ端末100−1)においてアプリケーションリストから選択されることにより起動(特定モードで起動)された申請先アプリ20から送信された被招待ユーザ(例えば、ユーザY)を申請元アプリ10へ招待申請する招待申請情報を受け取る。
ここで、この招待申請情報には、例えば、申請元アプリ10における招待ユーザ(例えば、ユーザX)のユーザID、申請先アプリ20における招待ユーザ(例えば、ユーザX)のユーザID、および申請先アプリ20において所定の関係(例えば、友だち関係)にあるユーザのうちの選択されたユーザである被招待ユーザ(例えば、ユーザY)のユーザIDが含まれる。また、この招待申請情報には、申請元アプリ10のアプリID、および申請先アプリ20のアプリIDが含まれる。そして、招待申請受取部233は、受け取った招待申請情報を招待申請管理部234に供給する。
招待申請管理部234は、招待申請受取部233が受け取った招待申請情報に含まれるそれぞれのアプリID及びユーザIDを関連付けて招待申請記録として招待申請情報記憶部222に記憶させて管理する。例えば、招待申請管理部234は、その招待申請情報に対応する新たなレコードを生成して招待申請記録として招待申請情報記憶部222に記憶させる。
申請照会部235は、被招待ユーザのユーザ端末100の申請先アプリ20からの照会(申請照会)に基づいて、招待申請情報記憶部222を参照して、申請先アプリ20における当該被招待ユーザに対する招待申請記録(当該被招待ユーザへの招待申請情報の記録)の有無を照会する。例えば、申請照会部235は、被招待ユーザ(例えば、ユーザY)のユーザ端末100(例えば、ユーザ端末100−2)からの照会(申請照会)に含まれる申請先アプリ20における被招待ユーザ(例えば、ユーザY)のユーザIDに対する招待申請記録(招待申請情報)の有無を照会する。
招待通知部236は、申請照会部235が照会した結果、被招待ユーザ(例えば、ユーザY)に対する招待申請記録(招待申請情報)が有る場合に当該被招待ユーザ(例えば、ユーザY)のユーザ端末100(例えば、ユーザ端末100−2)の申請先アプリ20に対して、当該招待申請記録(招待申請情報)に基づく招待通知情報を送信する。当該招待申請記録(招待申請情報)に基づく招待通知情報は、当該招待申請記録(招待申請情報)に含まれる情報の少なくとも一部を含む招待通知情報である。
招待成立受取部237は、被招待ユーザ(例えば、ユーザY)のユーザ端末100(例えば、ユーザ端末100−2)で申請元アプリ10(招待された対応アプリケーション)が起動したことや、予め設定された成果地点に到達したことに基づいて、招待通知情報に対応する招待が成立したことを示す招待成立情報を、当該被招待ユーザ(例えば、ユーザY)のユーザ端末100(例えば、ユーザ端末100−2)の申請元アプリ10から受け取る。
招待成立処理部238は、招待成立受取部237が受け取った招待成立情報に基づく所定の処理を行う。例えば、招待成立処理部238は、管理サーバ200が受け取った招待成立情報に基づいて、申請元アプリ10への招待が成立したことを通知する招待成立通知情報を、申請元アプリ10に対応するアプリサーバ300(例えば、申請元アプリ10(ゲームA)に対応するアプリサーバ310(ゲームA))に送信する。
〔招待処理の動作の詳細〕
次に、図9および図10を参照して、本実施形態による相互招待システム500の招待処理の動作の詳細について説明する。図9及び図10は、本実施形態による招待処理の動作の一例を示すフローチャートである。この図9及び図10に示す処理は、図3を参照して説明した概略処理の流れの詳細例を示すものである。
まず、図9を参照して、招待ユーザであるユーザXのユーザ端末100−1と管理サーバ200とが実行する処理について説明する。即ち、図3に示す(1)の処理から(3)の処理までの詳細例を説明する。
(1)申請元アプリから管理サーバへアプリケーションリスト要求(招待ユーザのユーザ端末)
招待ユーザであるユーザXのユーザ端末100−1にインストールされている申請元アプリ10(ゲームA)のSDK11Aは、他のゲームの友だちを招待する招待処理を開始する招待画面(図4の(a)に示す招待画面の例参照)を表示部120に表示させる(ステップSA110)。
表示部120に表示された招待画面に対してユーザXによる操作(第1操作)がされると、ユーザ端末100−1のSDK11Aのアプリケーションリスト取得部161は、複数の対応アプリケーションの一部または全部からなる招待可能なアプリケーションリストを要求するアプリケーションリスト要求情報を管理サーバ200に対して送信する(REQ11、ステップSA120)。ここで、アプリケーションリスト要求情報には、申請元アプリID(ApIDfrom)が含まれている。ここでは、申請元アプリID(ApIDfrom)には、申請元アプリ10(ゲームA)のアプリIDが設定されている。
管理サーバ200のアプリケーションリスト通知部232は、ユーザ端末100−1(SDK11A)からアプリケーションリスト要求情報を取得すると、アプリケーション管理部231が管理するアプリケーション設定記憶部221を参照して、対応アプリケーションのアプリケーションリストをユーザ端末100−1(SDK11A)に対して送信する。例えば、アプリケーションリスト通知部232は、取得したアプリケーションリスト要求情報に含まれる申請元アプリID(ApIDfrom)に基づいて、アプリケーションリスト要求情報を送信した申請元アプリ10(ゲームA)が相互招待システム500に参加していることを確認する。そして、アプリケーションリスト通知部232は、相互招待システム500に参加している申請元アプリ10(ゲームA)からの要求に対しては、対応アプリケーションのアプリケーションリストを送信する(RES11、ステップSE110)。
ここで、アプリケーションリスト通知部232がユーザ端末100−1(SDK11A)に対して送信するアプリケーションリストには、例えば、一または複数の対応アプリケーションのアプリID(ApID)が含まれる。この一または複数の対応アプリケーションのアプリID(ApID)には、アプリケーションリストに含まれる対応アプリケーションのアプリIDが設定される。
なお、アプリケーションリスト通知部232は、取得したアプリケーションリスト要求情報に含まれる申請元アプリID(ApIDfrom)に基づいて、アプリケーションリスト要求情報を送信した申請元アプリ10(ゲームA)を除いた対応アプリケーションのアプリケーションリストをユーザ端末100−1(SDK11A)に対して送信してもよい。また、アプリケーションリスト通知部232がユーザ端末100−1(SDK11A)に対して送信するアプリケーションリストには、一または複数の対応アプリケーションのアプリID(ApID)に関連付けて、それぞれの対応アプリケーションのURLスキームを送信してもよい。
次に、ユーザ端末100−1のSDK11Aのアプリケーションリスト取得部161は、管理サーバ200から送信された招待可能なアプリケーションリストを取得する(ステップSA130)。また、アプリケーションリスト取得部161は、取得したアプリケーションリストを提示部168に供給する。
ユーザ端末100−1のSDK11Aの提示部168は、アプリケーションリスト取得部161が取得したアプリケーションリストに含まれる対応アプリケーションの中からユーザ端末100−1にインストールされているアプリケーションを検出する。例えば、提示部168は、アプリケーションリスト取得部161が取得したアプリケーションリストに含まれる対応アプリケーションそれぞれのURLスキームを用いて、ユーザ端末100−1にインストールされている対応アプリケーションを検出する(ステップSA140)。
そして、提示部168は、検出結果に基づいて、アプリケーションリスト取得部161が取得したアプリケーションリストに含まれる対応アプリケーションの中からユーザ端末100−1にインストールされている対応アプリケーションが検出された場合には、その少なくとも一部を表示部120に表示させる(図4の(b)に示すアプリ一覧画面の例参照、ステップSA150)。また、提示部168は、ユーザ端末100−1にインストールされている申請元アプリ10(ゲームA)以外の対応アプリケーションが検出されなかった場合には、その旨を通知するメッセージを表示部120に表示させる。
(2)申請先アプリのフレンド一覧表示(招待ユーザのユーザ端末)
ユーザ端末100−1の表示部120に表示されたアプリケーションリストに対するユーザXの操作(第2操作)により、申請先アプリ20(ゲームB)が選択されたとする。この場合、ユーザ端末100−1のSDK11Aの特定モード起動部162は、申請先アプリ20(ゲームB)を特定モードで起動させる(ステップSA160)。
このとき、特定モード起動部162は、申請元アプリ10(ゲームA)のアプリIDが設定された申請元アプリID(ApIDfrom)と、申請元アプリ10(ゲームA)におけるユーザXのユーザIDが設定された申請元アプリの招待ユーザID(Apfrom_UIDfrom)とを、申請先アプリ20(ゲームB)のSDK11Bに対して通知する。
次に、特定モードで起動した申請先アプリ20(ゲームB)がアプリサーバ320(ゲームB)からユーザリストを取得する。なお、このユーザリストを取得する処理(以下のステップSB110及びSB120の処理)は、SDK11Aが実行する処理ではなく、申請先アプリ20(ゲームB)が実行する処理である。
ユーザ端末100−1において特定モードで起動した申請先アプリ20(ゲームB)は、申請先アプリ20(ゲームB)においてユーザXと所定の関係(例えば、友だち関係)にあるユーザのユーザリストを要求するフレンド一覧要求情報をアプリサーバ320(ゲームB)に送信する(ステップSB110)。ここで、フレンド一覧要求情報には、SDK11AからSDK11Bに対して通知された申請先アプリ20(ゲームB)におけるユーザXのユーザIDが含まれる。
アプリサーバ320(ゲームB)は、ユーザ端末100−1の申請先アプリ20(ゲームB)からフレンド一覧要求情報を取得すると、申請先アプリ20(ゲームB)においてユーザXと所定の関係(例えば、友だち関係)にあるユーザのユーザリストを、ユーザ端末100−1(申請先アプリ20(ゲームB))に対して送信する(ステップSD110)。
ユーザ端末100−1の申請先アプリ20(ゲームB)は、アプリサーバ320(ゲームB)からユーザリストを取得する(ステップSB120)。また、申請先アプリ20(ゲームB)は、取得したユーザリストをSDK11Bに受け渡す。これにより、ユーザ端末100−1のSDK11Bのユーザリスト取得部163は、この申請先アプリ20(ゲームB)が取得したユーザリストを取得する。
次に、ユーザ端末100−1のSDK11Bの提示部168は、申請先アプリ20(ゲームB)が取得したユーザリストに含まれるユーザの少なくとも一部をフレンド一覧として表示部120に表示させる。即ち、提示部168は、申請先アプリ20(ゲームB)においてユーザX(招待ユーザ)と所定の関係(例えば、友だち関係)にあるユーザのユーザリストに対応するフレンド一覧を表示部120に表示させる(図4の(c)に示すフレンド一覧画面の例参照、ステップSB150)。
(3)申請先アプリから管理サーバへ招待申請(招待ユーザのユーザ端末)
ユーザ端末100−1の表示部120に表示されたフレンド一覧の中から、申請元アプリ10(ゲームA)へ招待するユーザ(ここでは、ユーザY)をユーザXが選択すると、ユーザ端末100−1のSDK11Bの招待申請通知部164は、選択されたユーザYを被招待ユーザとして申請元アプリ10(ゲームA)へ招待申請する招待申請情報を管理サーバ200に対して送信する(REQ13、ステップSB160)。
ここで、招待申請情報には、申請元アプリ10(ゲームA)におけるユーザX(招待ユーザ)のユーザIDと、申請先アプリ20(ゲームB)におけるユーザX(招待ユーザ)のユーザIDと、申請先アプリ20(ゲームB)におけるユーザY(被招待ユーザ)のユーザIDとが含まれる。また、招待申請情報には、申請元アプリ10(ゲームA)のアプリIDと、申請先アプリ20(ゲームB)のアプリIDとが含まれる。
管理サーバ200の招待申請受取部233は、ユーザ端末100−1(SDK11B)から送信された招待申請情報を受け取る。そして、招待申請受取部233は、受け取った招待申請情報を招待申請管理部234に供給する。招待申請管理部234は、招待申請受取部233が受け取った招待申請情報に対応する新たなレコードを生成して招待申請記録として招待申請情報記憶部222に記憶させる(ステップSE130)。
ここで、招待申請情報記憶部222に招待申請記録として記憶される招待申請情報の新たなレコードは、招待申請受取部233が受け取った招待申請情報に含まれる情報に基づいて、次のように設定される。申請元アプリID(ApIDfrom)には申請元アプリ10(ゲームA)のアプリIDが設定され、申請元アプリの招待ユーザID(Apfrom_UIDfrom)には申請元アプリ10(ゲームA)におけるユーザX(招待ユーザ)のユーザIDが設定される。申請先アプリID(ApIDto)には申請先アプリ20(ゲームB)のアプリIDが設定され、申請先アプリの招待ユーザID(Apto_UIDfrom)には申請先アプリ20(ゲームB)におけるユーザX(招待ユーザ)のユーザIDが設定され、申請先アプリの被招待ユーザID(Apto_UIDto)には申請先アプリ20(ゲームB)におけるユーザY(被招待ユーザ)のユーザIDが設定される。
また、招待申請の状態(StatusInvite)にはフラグ「0」(招待申請未通知)が設定される。なお、申請元アプリの被招待ユーザID(Apfrom_UIDto)は、ユーザY(被招待ユーザ)が申請元アプリ10(ゲームA)をユーザ端末100−2にインストールした後に設定されるため、新にレコード生成した場合には例えば「null」が設定される。
なお、ユーザ端末100−1のSDK11Bの提示部168は、招待申請通知部164が招待申請情報を管理サーバ200に対して送信した後に、被招待ユーザに対する招待申請が完了したことを示す招待申請完了画面を表示部120に表示させる(図4の(d)に示す招待完了画面の例参照)。
次に、ユーザ端末100−1のSDK11Bの特定モード終了部165は、特定モードで起動された申請先アプリ20(ゲームB)を終了させる(ステップSB170)。申請先アプリ20(ゲームB)が終了することにより、ユーザ端末100−1の表示部120の表示は、申請元アプリ10(ゲームA)の招待画面(ステップSA110において表示された招待画面)の表示に戻る(ステップSA170)。このとき、申請元アプリ10(ゲームA)が非動作状態(Not running)、サスペンド状態(Suspended)、またはサスペンド状態(Suspended)の場合には、通常モードの動作状態(Active)に移行させる。
このように、図9を参照して説明したここまでの処理により、ユーザX(招待ユーザ)が申請先アプリ20(ゲームB)において所定の関係(例えば、友だち関係)にあるユーザY(被招待ユーザ)を申請元アプリ10(ゲームA)へ招待申請することができる。
次に、図10を参照して、被招待ユーザであるユーザYのユーザ端末100−2と管理サーバ200とが実行する処理について説明する。即ち、図3に示す(4)の処理から(7)の処理までの詳細例を説明する。
(4)申請先アプリから管理サーバへ申請照会(被招待ユーザのユーザ端末)
被招待ユーザであるユーザYのユーザ端末100−2にインストールされている申請先アプリ20(ゲームB)が通常モードで起動すると、申請先アプリ20(ゲームB)は、起動画面を表示部120に表示させる(ステップSB210)。
ユーザ端末100−2において申請先アプリ20(ゲームB)が通常モードで起動すると、申請先アプリ20(ゲームB)のSDK11Bの照会部166は、被招待ユーザがユーザY(自ユーザ)となる招待申請情報(招待申請記録)の有無を管理サーバ200に対して照会(申請照会)する。例えば、照会部166は、被招待ユーザがユーザY(自ユーザ)となる招待申請情報(招待申請記録)の有無を照会する申請照会情報であって、申請先アプリID(ApIDto)と申請先アプリの被招待ユーザID(Apto_UIDto)とを含む申請照会情報を管理サーバ200に対して送信する(REQ21、ステップSB220)。
ここで、申請先アプリID(ApIDto)には申請先アプリ20(ゲームB)のアプリIDが設定され、申請先アプリの被招待ユーザID(Apto_UIDto)には申請先アプリ20(ゲームB)におけるユーザYのユーザIDが設定されている。
管理サーバ200の申請照会部235は、ユーザ端末100−2(SDK11B)から申請照会情報を取得すると、招待申請情報記憶部222に記憶されている招待申請記録を参照して、招待申請の状態(StatusInvite)がフラグ「0」(招待申請未通知)となっている、申請先アプリ20(ゲームB)におけるユーザYが被招待ユーザとなる招待申請記録(即ち、ユーザYに対する招待申請記録)の有無を照会する。具体的には、申請照会部235は、取得した申請照会情報に基づいて、招待申請情報記憶部222に記憶されている招待申請記録の中に、申請先アプリID(ApIDto)に申請先アプリ20(ゲームB)のアプリIDが設定され、且つ申請先アプリの被招待ユーザID(Apto_UIDto)に申請先アプリ20(ゲームB)におけるユーザYのユーザIDが設定されている招待申請記録があるか否かを照会する。
申請照会部235が紹介した結果、申請先アプリ20(ゲームB)におけるユーザYが被招待ユーザとなる招待申請記録がある場合には、招待通知部236は、ユーザYのユーザ端末100−2(SDK11B)に対して、当該招待申請記録(招待申請情報)に基づく招待通知情報を送信する(RES21、ステップSE210)。
また、管理サーバ200の招待申請管理部234は、招待通知部236が招待通知情報をユーザYのユーザ端末100−2(SDK11B)に対して送信すると、招待申請情報記憶部222に記憶される招待申請記録に含まれる招待申請の状態(StatusInvite)を、フラグ「0」(招待申請未通知)からフラグ「1」(招待申請通知済)に更新する。
ここで、招待通知情報には、当該招待申請記録(招待申請情報)に含まれる情報の少なくとも一部が含まれる。例えば、招待通知情報には、当該招待申請記録(招待申請情報)に含まれる招待ID(InviteID)と、申請元アプリID(ApIDfrom)と、申請先アプリの招待ユーザID(Apto_UIDfrom)と、申請先アプリの招待ユーザ名(Apto_NAMEfrom)と、申請先アプリの招待ユーザ画像URL(Apto_URLfrom)とが含まれる。
次に、ユーザ端末100−2のSDK11Bの招待通知取得部167は、管理サーバ200から送信された招待通知情報を取得する。即ち、招待通知取得部167は、照会部166が照会した結果、ユーザY(自ユーザ)のユーザIDが申請先アプリ20(ゲームB)における被招待ユーザのユーザIDとなる招待申請情報記録が有る場合に、当該招待申請記録(招待申請情報)に基づく招待通知情報を管理サーバ200から取得する。(ステップSB230)。
また、ユーザYが被招待ユーザとなる招待申請記録がある場合、ユーザ端末100−2の申請先アプリ20(ゲームB)は、ユーザYが被招待ユーザとなる招待申請があることを示す招待通知メッセージが表示された起動画面(図4の(e)に示す招待通知画面の例参照)を表示部120に表示させる(ステップSB240)。なお、この起動画面は、ステップSB210において表示部120に表示された申請先アプリ20(ゲームB)の起動画面であって、SDK11Bの処理ではなく申請先アプリ20(ゲームB)の処理によって表示部120に表示される。
次に、ユーザ端末100−2のSDK11Bの提示部168は、招待通知取得部167が取得した招待通知情報に基づく招待情報を提示する。例えば、提示部168は、ユーザY(自ユーザ)が被招待ユーザとなる招待情報の一覧を表示する招待情報一覧画面(図4の(f)に示す招待情報一覧画面の例参照)を表示部120に表示させる(ステップSB250)。
ここで、招待情報一覧画面に表示される招待情報には、招待ユーザのユーザ名またはユーザ画像が表示される。本実施形態では、招待通知情報に招待ユーザ名(Apto_NAMEfrom)と招待ユーザ画像URL(Apto_URLfrom)を含ませているため、ユーザ端末100−2のSDK11Bの処理だけで、招待情報一覧画面に招待ユーザのユーザ名またはユーザ画像を表示させることを可能としている。例えば、図4の(f)に示す招待情報一覧画面の例では、招待ユーザのユーザ名が表示される例を示しているが、この招待ユーザのユーザ名に対応付けてその招待ユーザのユーザ画像を表示させてもよい。
なお、招待情報に招待ユーザのユーザ名やユーザ画像が含まれない構成とした場合には、招待ユーザID(Apto_UIDfrom)に対応したユーザ名やユーザ画像を、例えば、アプリサーバ320から直接的または申請先アプリ20(ゲームB)を介して取得する必要があるため処理が複雑になる。
なお、ユーザ端末100−2のSDK11Bの提示部168は、招待通知取得部167が取得した招待通知情報に基づく招待情報を提示する際に、URLスキームを用いて、ユーザ端末100−2にインストールされている対応アプリケーションを検出してもよい。そして、このSDK11Bの提示部168は、招待しようとする申請元アプリ10(ゲームA)がインストールされていると検出された場合には、該当する招待情報を除外して招待情報一覧画面を表示部120に表示させるようにしたり、該当する招待情報にインストール済みである旨の情報を付加して招待情報一覧画面を表示部120に表示させるようにしたりしてもよい。
(5)申請元アプリのインストール(被招待ユーザのユーザ端末)
表示部120に表示された招待情報一覧画面において、被招待ユーザであるユーザYが申請元アプリ10(ゲームA)への招待を承諾する操作(第3操作)がされると(ステップSB260)、ユーザ端末100−2のSDK11Bの招待情報管理部170は、承諾された招待情報に対応する招待通知情報に含まれる少なくとも一部の情報をユーザ端末100の端末記憶部140に記憶させる(ステップSB270)。
また、ユーザ端末100−2のSDK11Bの画面遷移部169は、アプリストア400にアクセスして申請元アプリ10(ゲームA)をダウンロード可能なストアページを表示するアプリストアを起動させる(ステップSB280)。
(6)申請先アプリから管理サーバへ招待成立通知(被招待ユーザ端末)
上記招待申請に基づいてユーザ端末100−2に申請元アプリ10(ゲームA)がインストールされた後に、当該申請元アプリ10(ゲームA)が通常モードで起動したとする。例えば、ユーザYは、ステップSB280において起動したアプリストアから申請元アプリ10(ゲームA)をユーザ端末100−2にダウンロードし、インストールされた申請元アプリ10(ゲームA)を起動したとする。
ユーザ端末100−2にインストールされた申請元アプリ10(ゲームA)のSDK11Aの招待情報管理部170は、端末記憶部140に記憶されている招待通知情報を取得する(ステップSA210)。
ユーザ端末100−2においては、申請元アプリ10(ゲームA)をユーザYがプレイしてゲームを進行させる(ステップSA220)。そして、申請元アプリ10(ゲームA)は、所定の成果地点に到達したか否かを判定する(ステップSA230)。なお、このステップSA220及びステップSA230の処理は、SDK11Aが実行する処理ではなく申請元アプリ10(ゲームA)が実行する処理である。
ユーザ端末100−2にインストールされて起動した申請元アプリ10(ゲームA)のゲーム進行に応じて、所定の成果地点に到達した場合(ステップSA230:YES)、申請元アプリ10(ゲームA)は、当該到達したことを示す情報を当該申請元アプリ10(ゲームA)のSDK11Aに受け渡す。一方、所定の成果地点に到達していない場合(ステップSA230:NO)、所定の成果地点に到達するまで、申請元アプリ10(ゲームA)におけるゲームの進行が継続される。
ユーザ端末100−2のSDK11Aが、所定の成果地点に到達したことを示す情報を申請元アプリ10(ゲームA)から受け取った場合、SDK11Aの招待成立通知部171は、当該申請元アプリ10(ゲームA)に対応した招待通知情報が端末記憶部140に記憶されていることを条件として、当該招待通知情報に対応する招待が成立したことを示す招待成立情報を管理サーバ200に対して送信する(RE22、ステップSA240)。ここで、招待成立情報には、例えば、招待ID(InviteID)と、申請元アプリの被招待ユーザID(Apfrom_UIDto)とが含まれる。招待ID(InviteID)には、この招待成立情報に対応する招待通知情報に含まれていた招待ID(InviteID)が設定される。申請元アプリの被招待ユーザID(Apfrom_UIDto)には、申請元アプリ10(ゲームA)におけるユーザYのユーザIDが設定される。なお所定の成果地点には、ユーザ端末100−2に申請元アプリ10(ゲームA)がインストールされて初めて実行(起動)したときが含まれてもよい。
(7)管理サーバから申請元アプリのアプリサーバへ招待完了通知
管理サーバ200の招待成立受取部237は、ユーザ端末100−2(SDK11A)から送信された申請元アプリ10(ゲームA)における招待成立情報を受け取る(ステップSE220)。また、招待成立受取部237は、招待成立受取部237が受け取った招待成立情報を招待申請管理部234に供給する。
招待申請管理部234は、当該招待成立情報に基づいて、招待申請情報記憶部222に記憶されている招待申請記録に含まれる申請元アプリの被招待ユーザID(Apfrom_UIDto)に、申請元アプリ10(ゲームA)におけるユーザYのユーザIDを設定する。また、招待申請管理部234は、招待申請の状態(StatusInvite)を、フラグ「1」(招待申請通知済)からフラグ「2」(招待申請成立未通知)に更新する。
次に、管理サーバ200の招待成立処理部238は、招待成立受取部237が受け取った招待成立情報に基づく所定の処理を行う。例えば、招待成立処理部238は、上記所定の処理として、管理サーバ200が受け取った招待成立情報に基づいて、ユーザX(招待ユーザ)からの申請元アプリ10(ゲームA)への招待が成立したことを通知する招待成立通知情報を、申請元アプリ10(ゲームA)に対応するアプリサーバ310(ゲームA)に送信する(REQ23、ステップSE230)。ここで、招待成立通知情報には、申請元アプリ10(ゲームA)におけるユーザX(招待ユーザ)のユーザIDが含まれる。また、招待申請管理部234は、招待申請の状態(StatusInvite)を、フラグ「2」(招待申請成立未通知)からフラグ「3」(招待成立通知済)に更新する。なお、このフラグの更新は、招待成立通知情報の通知に対するアプリサーバ310(ゲームA)からの応答通知を受け取ったときでもよい。
なお、招待申請管理部234は、招待成立情報に代えて、上述の申請元アプリ10(ゲームA)のインストール済みを示す情報に基づいて、招待申請の状態(StatusInvite)を、フラグ「1」(招待申請通知済)からフラグ「2」(招待申請成立未通知)に更新してもよい。また、招待成立処理部238は、招待成立受取部237が受け取った上述の申請元アプリ10(ゲームA)のインストール済みを示す情報に基づいて、ユーザX(招待ユーザ)からの申請元アプリ10(ゲームA)への招待が成立したことを通知する招待成立通知情報を、申請元アプリ10(ゲームA)に対応するアプリサーバ310(ゲームA)に送信してもよい。
アプリサーバ310(ゲームA)は、管理サーバ200から送信された招待完了通知情報を受け取る(ステップSC210)と、招待が完了したことによる所定の報酬(例えば、インセンティブ)を、招待成立通知情報に含まれるユーザIDが示す申請元アプリ10(ゲームA)におけるユーザXに対して付与する(ステップSC220)。この所定の報酬は、例えば、申請元アプリ10(ゲームA)内でユーザXが使用できる仮想通貨やアイテムである。
〔まとめ〕
(1)以上説明してきたように、本実施形態の管理サーバ200(管理装置の一例)は、申請元アプリ10(第1アプリケーションの一例)および申請先アプリ20(第2アプリケーションの一例)がインストールされた招待ユーザ(第1ユーザの一例)のユーザ端末100(端末装置の一例)から、当該申請先アプリ20(第2アプリケーション)で当該招待ユーザと所定の関係(例えば、友だち関係)にある被招待ユーザ(第2ユーザの一例)の、当該申請先アプリ20がインストールされたユーザ端末100に対して、当該申請元アプリ10をインストールさせる招待処理を制御する制御部230を備えている。
この制御部230は、招待申請受取部233と、申請照会部235と、招待通知部236と、を備えている。招待申請受取部233は、所定の関係にあるユーザのうちの選択されたユーザである被招待ユーザを申請元アプリ10へ招待申請する招待申請情報を招待ユーザのユーザ端末100から受け取る。申請照会部235は、被招待ユーザのユーザ端末100からの申請照会に基づいて、被招待ユーザに対する招待申請情報の有無を照会する。招待通知部236は、申請照会部235が照会した結果、被招待ユーザに対する招待申請情報が有る場合に、当該被招待ユーザのユーザ端末100に対して、当該招待申請情報に基づく招待通知情報を送信する。ここで、招待通知情報には、例えば、招待ID(InviteID)や当該招待ID(InviteID)と関連付けられたトークン情報(例えば、招待申請トークン)のような情報が含まれる。ここで、関連付けられた情報とは、恒久的に関連付けられている必要はなく、一時的なものであってもよい。また、招待ID(InviteID)やトークン情報に代えて、例えば、招待ID(InviteID)に対応した招待申請記録で示される各種情報であってもよい。
この招待ID(InviteID)と関連付けられたトークン情報(例えば、招待申請トークン)は、例えば、管理サーバ200で生成される。このトークン情報を生成するタイミングは、例えば、管理サーバ200が招待申請情報を取得したときである。
これにより、管理サーバ200は、申請元アプリ10と申請先アプリ20とがインストールされているユーザ端末100を利用する招待ユーザから受け取った、申請先アプリ20において当該招待ユーザと所定の関係(例えば、友だち関係)にある被招待ユーザを申請元アプリ10へ招待申請する招待申請を、当該被招待ユーザのユーザ端末100に通知することができる。よって、相互招待システム500では、ユーザ情報に互換性がないアプリケーション間であっても、あるアプリケーションで所定の関係(例えば、友だち関係)にあるユーザを、他のアプリケーションに招待することができる。即ち、相互招待システム500は、ユーザ情報に互換性がないアプリケーション間であっても、容易にアプリケーション間でユーザを招待することができる。
ここで、申請元アプリ10および申請先アプリ20がインストールされた招待ユーザのユーザ端末100とは、例えば、申請元アプリ10および申請先アプリ20がインストールされて実行されたことがあるユーザ端末100のことをいう。つまり、招待ユーザのユーザ端末100では、申請先アプリ20が実行されたことがあり、且つ実行された申請先アプリ20において、少なくとも一人以上のユーザと所定の関係(例えば、友だち関係)になっている。なお、申請元アプリ10は、申請先アプリ20で所定の関係(例えば、友だち関係)にあるユーザ(被招待ユーザ)を申請元アプリ10へ招待申請する際に、少なくとも実行されている。また、申請先アプリ20で招待ユーザと所定の関係(例えば、友だち関係)にある被招待ユーザの、当該申請先アプリ20がインストールされたユーザ端末100とは、例えば、当該申請先アプリ20がインストールされて実行されたことがあるユーザ端末100のことをいう。つまり、被招待ユーザのユーザ端末100では、申請先アプリ20が実行されたことがあり、且つ実行された申請先アプリ20において、少なくとも招待ユーザと所定の関係(例えば、友だち関係)になっている。
例えば、本実施形態の管理サーバ200(管理装置の一例)は、申請元アプリ10(第1アプリケーションの一例)および申請先アプリ20(第2アプリケーションの一例)が実行されたことがある招待ユーザ(第1ユーザの一例)のユーザ端末100(端末装置の一例)から、当該申請先アプリ20(第2アプリケーション)で当該招待ユーザと所定の関係(例えば、友だち関係)にあるユーザのうちの被招待ユーザ(第2ユーザの一例)のユーザ端末100に対して、当該申請元アプリ10を導入させるための招待処理を制御する制御部230を備えている。なお、申請先アプリ20において招待ユーザと被招待ユーザとは所定の関係になっているので、被招待ユーザのユーザ端末100では申請先アプリ20が実行されていることになる。
なお、上述したように、申請元アプリ10または申請先アプリ20が実行されたとは、例えば、申請元アプリ10または申請先アプリ20がインストールされて実行されたことをいう。この場合、申請元アプリ10または申請先アプリ20が実行するプログラムの全部がユーザ端末100にインストールされる構成としてもよいし、一部がユーザ端末100にインストールされ、当該プログラムの残りの部分がユーザ端末100以外の装置により実行される構成としてもよい。例えば、ユーザ端末100にインストールされる申請元アプリ10または申請先アプリ20を実行するプログラムは、当該申請元アプリ10または申請先アプリ20の実行を開始するために最低限必要なプログラムのみであってもよい。そして、残りのプログラムはユーザ端末100と通信可能なサーバ装置(例えば、アプリサーバ300)や他の端末装置(例えば、他のユーザ端末100)により実行される構成としてもよい。
また、ユーザ端末100により実行される申請元アプリ10または申請先アプリ20のプログラムの全部がユーザ端末100以外の装置により実行される構成であってもよい。つまり、申請元アプリ10または申請先アプリ20を実行するプログラムは、ユーザ端末100にはインストールされず、ユーザ端末100と通信可能なサーバ装置(例えば、アプリサーバ300)や他の端末装置(例えば、他のユーザ端末100)により実行される構成としてもよい。例えば、申請元アプリ10または申請先アプリ20がユーザ端末100で実行されたとは、ユーザ端末100からの指示により、ユーザ端末100と通信網を介して接続されるサーバ装置において当該申請元アプリ10または申請先アプリ20が実行された場合も含む。この場合、サーバ装置において実行された結果を示す情報(例えば、表示情報)がユーザ端末100で表示される。つまり、ユーザ端末100により実行される申請元アプリ10または申請先アプリ20は、所謂クラウド型やWEB型のアプリケーションであってもよい。
また、被招待ユーザのユーザ端末100に対して申請元アプリ10を導入させるとは、当該ユーザ端末100に申請元アプリ10のプログラムの一部または全部をインストールさせることであってもよいし、申請元アプリ10が所謂クラウド型やWEB型のアプリケーションの場合には、申請元アプリ10のプログラムを実行する主体となるサーバ装置に対して、ユーザ端末100からの指示により通信網を介して当該申請元アプリ10が実行可能な状態となるように利用登録(例えば、ユーザ登録)させることであってもよい。例えば、上記実施形態では、被招待ユーザのユーザ端末100に対して申請元アプリ10を導入させるために、申請元アプリ10をインストール可能な画面を被招待ユーザのユーザ端末100に表示させる例を説明したが、これに代えて、申請元アプリ10の利用登録画面を被招待ユーザのユーザ端末100に表示させるようにしてもよい。
また、管理サーバ200は、被招待ユーザのユーザ端末100からの申請照会が無くとも、被招待ユーザに対する招待申請情報に基づく招待通知情報を当該被招待ユーザのユーザ端末100に対して送信してもよい。例えば、管理サーバ200は、被招待ユーザのユーザ端末100において申請先アプリ20が起動したことを契機として、当該被招待ユーザに対する招待申請情報に基づく招待通知情報を当該被招待ユーザのユーザ端末100に対して送信してもよい。また、管理サーバ200は、被招待ユーザのユーザ端末100に対して招待通知情報を所定の時間周期で送信してもよいし、所定の時刻に定期的に送信してもよい。
つまり、制御部230は、招待申請受取部233と、招待通知部236とを、少なくとも備えた構成としてもよい。招待申請受取部233は、招待ユーザ(第1ユーザの一例)と所定の関係にあるユーザのうちの被招待ユーザ(第2ユーザの一例)を申請元アプリ10(第1アプリケーションの一例)へ招待申請する招待申請情報を招待ユーザのユーザ端末100から受け取る。そして、招待通知部236は、招待申請受取部233が受け取った招待申請情報のうち被招待ユーザに対する招待申請情報に基づく招待通知情報を、当該被招待ユーザのユーザ端末100に対して送信する。
これにより、管理サーバ200は、申請元アプリ10と申請先アプリ20とが実行されたことがあるユーザ端末100を利用する招待ユーザから受け取った、申請先アプリ20において当該招待ユーザと所定の関係(例えば、友だち関係)にある被招待ユーザを申請元アプリ10へ招待申請する招待申請を、当該被招待ユーザのユーザ端末100に通知することができる。よって、相互招待システム500では、ユーザ情報に互換性がないアプリケーション間であっても、あるアプリケーションで所定の関係(例えば、友だち関係)にあるユーザを、他のアプリケーションに招待することができる。即ち、相互招待システム500は、ユーザ情報に互換性がないアプリケーション間であっても、容易にアプリケーション間でユーザを招待することができる。
例えば、招待申請受取部233は、招待ユーザのユーザ端末100の申請元アプリ10において、アプリケーションリスト通知部232(アプリケーション情報通知部の一例)が送信した情報の少なくとも一部により示される対応アプリケーションのうちの、申請元アプリ10から起動された申請先アプリ20(第2アプリケーションの一例)から、招待ユーザと所定の関係(例えば、友だち関係)にあるユーザのうちの被招待ユーザを申請元アプリ10へ招待申請する招待申請情報を受け取る。そして、招待通知部236は、被招待ユーザのユーザ端末100の申請先アプリ20対して招待通知情報を送信する。このように、招待ユーザの申請元アプリ10から申請先アプリ20を介在させて、被招待ユーザの申請先アプリ20へ招待通知情報を通知するようにしたので、申請元アプリ10と申請先アプリ20のようにユーザ情報に互換性がないアプリケーション間であっても容易にユーザを招待することができるようになる。この場合、現実社会で利用しているソーシャルメディアを用いずに被招待ユーザだけに招待通知情報を通知することができるので、無関係なユーザを招待することを防止することができる。また、現実社会で利用しているメセンジャーアプリ(メールソフトやチャット)を利用すれば被招待ユーザだけに招待通知情報を通知することができるが、この場合であればユーザのメセンジャーアプリにおける宛先(メールアドレスやアカウント)を知る必要がないため、アプリケーション(仮想社会)でクローズした所定の関係を維持することができる。
なお、上記実施形態で説明したように、管理サーバ200は、被招待ユーザ(第2ユーザの一例)のユーザ端末100からの申請照会に基づいて、被招待ユーザに対する招待申請情報の有無を照会する申請照会部235を備えてもよい。この場合、招待通知部236は、申請照会部235が照会した結果、被招待ユーザに対する招待申請情報が有る場合に、当該被招待ユーザのユーザ端末100に対して、当該招待申請情報に基づく招待通知情報を送信する。
これにより、管理サーバ200は、被招待ユーザのユーザ端末100から申請照会を受け取ったことを契機として、招待ユーザからの招待申請を、当該被招待ユーザのユーザ端末100に通知することができる。
(2)ユーザ端末100(端末装置の一例)は、ユーザ端末100にインストールされている申請元アプリ10(第1アプリケーションの一例)と申請先アプリ20(第2アプリケーションの一例)のうち、当該申請先アプリ20で自ユーザと所定の関係にある他ユーザの当該申請先アプリ20がインストールされている他のユーザ端末100(端末装置の一例)に対して、当該申請元アプリ10(第1アプリケーション)をインストールさせる招待処理を制御する管理サーバ200と通信可能な端末装置である。
これにより、ユーザ端末100は、申請元アプリ10での操作に基づいて、特定モードで起動させた申請先アプリ20において自ユーザ(招待ユーザの一例)と所定の関係(例えば、友だち関係)にある他のユーザ(被招待ユーザの一例)を申請元アプリ10へ招待申請する招待申請を、管理サーバ200に送信することができる。そして、招待申請は、管理サーバ200を介して当該他のユーザのユーザ端末100に通知される。よって、相互招待システム500では、ユーザ情報に互換性がないアプリケーション間であっても、あるアプリケーションで所定の関係(例えば、友だち関係)にあるユーザを、他のアプリケーションに招待することができる。即ち、相互招待システム500は、ユーザ情報に互換性がないアプリケーション間であっても、容易にアプリケーション間でユーザを招待することができる。
(3)ユーザ端末100(自端末装置の一例)は、特定モード起動部162(起動部の一例)と、ユーザリスト取得部163と、招待申請通知部164とを備えている。
特定モード起動部162は、ユーザ端末100にインストールされている対応アプリケーションにおいて、当該ユーザ端末100にインストールされている他の対応アプリケーションを特定モードで起動させる(特定の機能を実行させる)。
ユーザリスト取得部163は、特定モードで動作中(特定の機能を実行中)の申請先アプリ20(アプリケーションの一例)において自ユーザと所定の関係(例えば、友だち関係)にあるユーザのユーザリストを取得する。このユーザリストは、例えば、申請先アプリ20に対応するアプリサーバ300(サーバ装置の一例)で管理されており、ユーザリスト取得部163は、申請先アプリ20に対応するアプリサーバ300からこのユーザリストを取得する。
招待申請通知部164は、ユーザリスト取得部163が取得したユーザリストの中から選択されたユーザ(被招待ユーザの一例)を、申請先アプリ20を特定モードで起動させた(申請先アプリ20の特定の機能を実行させた)対応アプリケーション(例えば、申請元アプリ10)へ招待申請する招待申請情報を管理サーバ200(管理装置の一例)に対して送信する。
なお、上述のユーザリストは、ユーザを示す情報の一例であって、その情報の形態はいずれの形態であってもよい。例えば、ユーザ端末100が備えるユーザリスト取得部163と、招待申請通知部164とのそれぞれの構成は、以下のように記載することができる。
ユーザリスト取得部163(ユーザ情報取得部の一例)は、特定モードで動作中(特定の機能を実行中)の申請先アプリ20(アプリケーションの一例)において自ユーザと所定の関係(例えば、友だち関係)にあるユーザを示す情報(例えば、ユーザリスト)を取得する。招待申請通知部164は、ユーザリスト取得部163が取得した所定の関係にあるユーザを示す情報(例えば、ユーザリスト)により示されるユーザのうち、申請先アプリ20を特定モードで起動させた(申請先アプリ20の特定の機能を実行させた)申請元アプリ10(アプリケーションの一例)へ招待される被招待ユーザを、当該申請元アプリ10へ招待申請する招待申請情報を管理サーバ200に対して送信する。このように、招待申請情報を招待ユーザの申請元アプリ10から管理サーバ200に対して送信するのではなく、申請元アプリ10から申請先アプリ20を介在(起動)させて管理サーバ200に対して送信するようにしたので、申請元アプリ10と申請先アプリ20のようにユーザ情報に互換性がないアプリケーション間であっても容易にユーザを招待することができるようになる。
これにより、ユーザ端末100は、申請元アプリ10での操作に基づいて、特定モードで起動させた申請先アプリ20において自ユーザ(招待ユーザの一例)と所定の関係(例えば、友だち関係)にある他のユーザ(被招待ユーザの一例)を申請元アプリ10へ招待申請する招待申請を、管理サーバ200に送信することができる。そして、招待申請は、管理サーバ200を介して当該他のユーザのユーザ端末100に通知される。よって、相互招待システム500では、ユーザ情報に互換性がないアプリケーション間であっても、あるアプリケーションで所定の関係(例えば、友だち関係)にあるユーザを、他のアプリケーションに招待することができる。即ち、相互招待システム500は、ユーザ情報に互換性がないアプリケーション間であっても、容易にアプリケーション間でユーザを招待することができる。
(4)管理サーバ200は、相互招待システム500に対応する対応アプリケーションに関する情報を管理するアプリケーション管理部231を備えている。即ち、アプリケーション管理部231は、申請元アプリ10(第1アプリケーションの一例)および申請先アプリ20(第2アプリケーションの一例)を含む複数の対応アプリケーションのそれぞれに関する情報を管理する。また、管理サーバ200は、アプリケーション管理部231を参照して、申請元アプリ10への招待申請が可能な対応アプリケーションのアプリケーションリストを招待ユーザ(第1ユーザの一例)のユーザ端末100に対して送信するアプリケーションリスト通知部232を備えている。例えば、アプリケーションリスト通知部232は、招待ユーザのユーザ端末100の申請元アプリ10に対して、アプリケーションリストを送信する。
ここで、上述のアプリケーションリストは、相互招待システム500に対応する対応アプリケーションのうちの少なくとも一の対応アプリケーションを示す情報であればよく、その情報の形態はいずれの形態であってもよい。例えば、上述のアプリケーションリストは、少なくとも一の対応アプリケーションを示す情報(例えば、アプリ名称、アプリアイコン画像、アプリID等)が含まれるデータであってもよいし、少なくとも一の対応アプリケーションを示す情報が表示情報として表示されるアプリ一覧画面のデータであってもよいし、アプリ一覧画面のリンク先を示す情報であってもよい。なお、アプリ一覧画面においては、複数の対応アプリケーションを示す情報が、上下方向(縦方向)の並びで表示(所謂リスト表示)されてもよいし(図4(b)参照)、左右方向(横方向)の並びで表示されてもよいし、または、縦及び横方向に升目状(格子状)の並びで表示(所謂グリッド表示)されてもよい。
また、招待申請が可能なアプリケーションとは、相互招待システム500に対応する対応アプリケーション(即ち、アプリケーション管理部231が情報を管理しているアプリケーション)のことであってもよい。例えば、アプリケーション管理部231は、申請元アプリ10(第1アプリケーションの一例)および前記第2アプリケーションを含む複数のアプリケーションのそれぞれを示す情報を管理する。そして、アプリケーションリスト通知部232(アプリケーション情報通知部の一例)は、アプリケーション管理部231が管理する情報の少なくとも一部(例えば、アプリケーションリスト)を上記アプリケーションリスト(アプリケーションを示す情報の一例)として、招待ユーザ(第1ユーザの一例)のユーザ端末100に対して送信する。
なお、招待申請が可能なアプリケーションとは、相互招待システム500に対応する対応アプリケーションのうち、管理サーバ200において、招待申請が禁止されていない対応アプリケーションであってもよい。例えば、アプリケーション管理部231は、複数の対応アプリケーションのそれぞれを示す情報と、対応アプリケーションのそれぞれに設定された招待申請の禁止に関する情報とを管理してもよい。そして、アプリケーションリスト通知部232(アプリケーション情報通知部の一例)は、アプリケーション管理部231を参照して、申請元アプリ10への招待申請が可能であるか否か(例えば、招待申請の禁止が設定されてないか)を判定し、招待申請が可能なアプリケーションを示すアプリケーションリスト(アプリケーションを示す情報の一例)を招待ユーザ(第1ユーザの一例)のユーザ端末100に対して送信してもよい。このように、招待申請が禁止されていない対応アプリケーションを招待申請が可能なアプリケーションとする場合の処理については、第2の実施形態で後述する。
また、ユーザ端末100(自端末装置の一例)は、アプリケーションリスト取得部161を備えている。
アプリケーションリスト取得部161は、管理サーバ200から、招待処理に対応する複数の対応アプリケーションの一部または全部からなるアプリケーションリストを取得する。例えば、アプリケーションリスト取得部161は、通常モードで動作中の申請元アプリ10(アプリケーションの一例)における第1操作に基づいて、相互招待システム500(招待処理の一例)に対応する複数の対応アプリケーションの一部または全部からなるアプリケーションリストを管理サーバ200から取得する。
そして、提示部168(第1提示部の一例、アプリケーションリスト提示部の一例)は、アプリケーションリスト取得部161が取得したアプリケーションリストの中からユーザ端末100にインストールされている対応アプリケーションを提示する。
これにより、管理サーバ200は、相互招待システム500に対応する対応アプリケーションに関する情報を管理することができる。また、管理サーバ200が対応アプリケーションのアプリケーションリストを招待ユーザのユーザ端末100に送信し、ユーザ端末100がこのアプリケーションリストを取得して提示するので、招待ユーザは、被招待ユーザを選択する対応アプリケーションを当該アプリケーションリストの中から容易に選択することができる。
なお、上述したように、アプリケーションリストは、相互招待システム500に対応する対応アプリケーションのうちの一または複数の対応アプリケーションを示す情報であればよく、その情報の形態はいずれの形態であってもよい。
つまり、アプリケーションリスト取得部161(アプリケーション情報取得部の一例)は、招待処理に対応する複数の対応アプリケーションのうちの少なくとも一のアプリケーション(一または複数のアプリケーションの一例)を示す情報を管理サーバ200から取得する。例えば、アプリケーションリスト取得部161は、通常モードで動作中の申請元アプリ10(アプリケーションの一例)における第1操作に基づいて、一または複数の対応アプリケーションを示す情報を管理サーバ200から取得する。
そして、提示部168(第1表示制御部の一例)は、アプリケーションリスト取得部161が取得した、一または複数の対応アプリケーションを示す情報のうちのユーザ端末100にインストールされている対応アプリケーションを示す情報を表示部120に表示させる。
(5)ユーザ端末100(自端末装置の一例)のアプリケーションリスト取得部161は、アプリケーションリストとともに、アプリケーションリストに含まれる対応アプリケーションのそれぞれに対応するURLスキームを取得する。そして、提示部168(第1提示部の一例、アプリケーションリスト提示部の一例)は、取得したURLスキームを用いて、ユーザ端末100にインストールされている対応アプリケーションを検出して自ユーザに提示する。
なお、URLスキームを利用してユーザ端末100にインストールされている対応アプリケーションを検出する例を説明したが、これに限られるものではない。例えば、OSがユーザ端末100にインストール済みの対応アプリケーションを示す情報を取得可能な場合には、このOSが取得したインストール済みの対応アプリケーションを示す情報を利用して、ユーザ端末100にインストールされている他アプリケーションを検出してもよい。
例えば、提示部168(第1表示制御部の一例)は、ユーザ端末100(自端末装置の一例)が具備する機能を用いて、アプリケーションリスト取得部161(アプリケーション情報取得部の一例)が取得した、一又は複数の対応アプリケーションを示す情報により示される対応アプリケーションのうちからユーザ端末100にインストールされている対応アプリケーションを検出し、検出した対応アプリケーションを示す情報を表示部120に表示させてもよい。
これにより、ユーザ端末100は、管理サーバ200から取得した対応アプリケーションリストの中から、ユーザ端末100にインストールされている対応アプリケーションのみを提示する(表示部120に表示させる)ことができる。
なお、提示部168(第1表示制御部の一例)は、招待ユーザのユーザ端末100にインストールされている対応アプリケーションを示す情報を表示部120に表示させる場合、招待ユーザのユーザ端末100で起動したことがある対応アプリケーションであるか否かを判定することにより、招待ユーザのユーザ端末100で起動したことがあると判定した対応アプリケーションを示す情報を、招待ユーザのユーザ端末100にインストールされている対応アプリケーションを示す情報として表示部120に表示させてもよい。
また、管理サーバ200は、相互招待システム500に対応する対応アプリケーションのうち、招待ユーザのユーザ端末100にインストールされている対応アプリケーションを招待申請が可能なアプリケーションとしてもよい。例えば、ユーザ端末100から管理サーバ200に、ユーザ端末100にインストールされている対応アプリケーションを示す情報が送信されることにより、管理サーバ200は、ユーザ端末100にインストールされているアプリケーションを認識してもよい。
例えば、アプリケーション管理部231は、申請元アプリ10(第1アプリケーションの一例)および申請先アプリ20(第2アプリケーションの一例)を含む複数の対応アプリケーションのそれぞれに関する情報(複数の対応アプリケーションのそれぞれを示す情報やユーザ端末100にインストールされているか否かを示す情報など)を管理してもよい。そして、アプリケーションリスト通知部232(アプリケーション情報通知部の一例)は、アプリケーション管理部231を参照して、申請元アプリ10への招待申請が可能であるか否か(例えば、インストールされている否か)を判定し、招待申請が可能なアプリケーションを示すアプリケーションリスト(アプリケーションを示す情報の一例)を招待ユーザ(第1ユーザの一例)のユーザ端末100に対して送信してもよい。
これにより、管理サーバ200は、相互招待システム500に対応する対応アプリケーションのうち、招待ユーザのユーザ端末100にインストールされている対応アプリケーションのみを、招待ユーザのユーザ端末100に通知することができる。
なお、管理サーバ200は、招待ユーザのユーザ端末100で起動したことがある対応アプリケーションを示す情報を取得できる場合には、相互招待システム500に対応する対応アプリケーションのうち、招待ユーザのユーザ端末100で起動したことがある対応アプリケーションを招待ユーザのユーザ端末100にインストールされている対応アプリケーションとして、招待申請が可能なアプリケーションとしてもよい。
(6)ユーザ端末100の特定モード起動部162(起動部の一例)は、提示部168(第1提示部の一例、アプリケーションリスト提示部の一例)が提示した対応アプリケーションの中から第2操作に基づいて選択された対応アプリケーションである申請先アプリ20に対して、通常モードで動作中の申請元アプリ10(アプリケーションの一例)における招待ユーザ(自ユーザの一例)に対応した第1ユーザ情報(例えば、ユーザID(識別情報の一例))を管理サーバ200に通知可能なように当該選択された申請先アプリ20(アプリケーションの一例)を特定モードで起動させる。このように、申請先アプリ20を特定モードで起動させることで、ユーザが対応アプリケーションを利用する目的で起動する場合と異ならせることができ、対応アプリケーションが有する機能のうちの特定の機能を呼び出すことが可能となる。
つまり、特定モード起動部162(起動部の一例)は、提示部168(第1表示制御部の一例)が表示部120に表示させた一または複数の対応アプリケーションを示す情報により示される対応アプリケーションのうちから第2操作に基づいて選択された申請先アプリ20(第2アプリケーションの一例)を特定モードで起動させる。
なお、上述の特定モード(特定の機能の一例)は、特定モードを実行した申請先アプリ20(第2アプリケーションの一例)における招待ユーザ(自ユーザの一例)のユーザID(識別情報の一例)を、当該申請先アプリ20に対応するアプリサーバ320(サーバ装置の一例)に送信することにより、申請先アプリ20において招待ユーザと所定の関係(例えば、友達関係)にあるユーザのユーザリスト(所定の関係にあるユーザを示す情報の一例、所定関係ユーザ情報の一例)を取得する機能を有してもよい。
これにより、ユーザ端末100は、申請元アプリ10から、申請先アプリ20において招待ユーザと所定の関係(例えば、友達関係)にあるユーザの情報を取得することができ、当該ユーザを被招待ユーザとして申請元アプリ10へ招待することが可能となる。
(7)招待申請通知部164は、申請元アプリ10(他のアプリケーションに対して特定の機能を実行させたアプリケーション)における招待ユーザ(自ユーザの一例)に対応した情報(例えば、ユーザID(識別情報))をさらに含めた招待申請情報を管理サーバ200に対して送信する。
なお、招待ユーザに対応した情報は、招待申請情報に関連付けられていればよく、当該招待申請情報に含まれなくともよい。例えば、招待申請通知部164は、申請元アプリ10(他のアプリケーションに対して特定の機能を実行させたアプリケーションの一例)における招待ユーザ(自ユーザの一例)に対応したユーザID(識別情報の一例、招待ユーザに対応した情報の一例)がさらに関連付けられた招待申請情報を管理サーバ200に対して送信してもよい。
例えば、招待申請通知部164は、申請元アプリ10(第1アプリケーションの一例)における招待ユーザ(自ユーザの一例)に対応したユーザID(識別情報の一例、第1ユーザ情報の一例)、及び被招待ユーザに対応したユーザID(識別情報の一例、第2ユーザ情報の一例)が関連付けられた招待申請情報を管理サーバ200に対して送信してもよい。
これにより、ユーザ端末100は、申請元アプリ10における招待ユーザに対応した情報(例えば、ユーザID(識別情報))を、特定モードで起動した申請先アプリ20を介して管理サーバ200へ通知することができる。
(8)特定モード起動部162(起動部の一例)は、申請先アプリ20(選択されたアプリケーションの一例)に対して通常モードで動作中の申請元アプリ10(アプリケーションの一例)のアプリID(識別情報の一例)を示すアプリケーション情報をさらに通知可能なように当該申請先アプリ20を特定モードで起動させてもよい。そして、招待申請通知部164は、通常モードで動作中の申請元アプリ10(他のアプリケーションに対して特定の機能を実行させたアプリケーションの一例)のアプリIDを示すアプリケーション情報をさらに含む招待申請情報を管理サーバ200に対して送信してもよい。
つまり、特定モード(特定の機能)は、特定モードを実行させた申請元アプリ10(アプリケーションの一例)のアプリID(識別情報の一例)、及び特定モードを実行させた申請元アプリ10における招待ユーザ(自ユーザの一例)のユーザID(識別情報の一例)を管理サーバ200に通知する機能をさらに有してもよい。
なお、アプリIDを示すアプリケーション情報は、招待申請情報に関連付けられていればよく、当該招待申請情報に含まれなくともよい。例えば、招待申請通知部164は、通常モードで動作中の申請元アプリ10(第1アプリケーションの一例、他のアプリケーションに対して特定の機能を実行させたアプリケーションの一例)のアプリID(識別情報の一例、第1アプリケーションを示す情報の一例)がさらに関連付けられた招待申請情報を管理サーバ200に対して送信してもよい。
これにより、ユーザ端末100は、申請元アプリ10のアプリID(即ち、被招待ユーザを招待したい対応アプリケーション)を、特定モードで起動した申請先アプリ20を介して管理サーバ200へ通知することができる。よって、管理サーバ200は、申請元アプリ10のアプリIDにより、被招待ユーザが招待された対応アプリケーションを特定することができる。
(9)招待申請通知部164は、申請先アプリ20における被招待ユーザ(選択されたユーザの一例)に対応した情報(例えば、ユーザID(識別情報の一例))を含む招待申請情報を管理サーバ200に対して送信してもよい。
なお、被招待ユーザ(招待されるユーザの一例)に対応した情報は、招待申請情報に関連付けられていればよく、当該招待申請情報に含まれなくともよい。例えば、招待申請通知部164は、申請先アプリ20における被招待ユーザに対応した情報(例えば、ユーザID(識別情報の一例))が関連付けられた招待申請情報を管理サーバ200に対して送信してもよい。
これにより、ユーザ端末100は、申請先アプリ20における被招待ユーザのユーザIDを管理サーバ200へ通知することができる、よって、管理サーバ200は、被招待ユーザのユーザIDにより、被招待ユーザを特定することができるとともに、被招待ユーザのユーザ端末100を特定することができる。
(10)招待申請通知部164は、申請先アプリ20(特定の機能を実行中のアプリケーションの一例)における自ユーザに対応した情報(例えば、ユーザID(識別情報の一例))、及び申請先アプリ20における被招待ユーザ(選択されたユーザの一例)に対応した情報(例えば、ユーザID)を含む招待申請情報を管理サーバ200に対して送信してもよい。
なお、自ユーザに対応した情報、及び申請先アプリ20における被招待ユーザに対応した情報は、招待申請情報に関連付けられていればよく、当該招待申請情報に含まれなくともよい。例えば、招待申請通知部164は、申請先アプリ20(特定の機能を実行中のアプリケーションの一例)における自ユーザに対応した情報(例えば、ユーザID(識別情報の一例))、及び申請先アプリ20における被招待ユーザに対応した情報(例えば、ユーザID)が関連付けられた招待申請情報を管理サーバ200に対して送信してもよい。
これにより、ユーザ端末100は、さらに申請先アプリ20における自ユーザ(招待ユーザの一例)のユーザIDを管理サーバ200へ通知することができる、よって、管理サーバ200は、招待ユーザのユーザIDにより、被招待ユーザのユーザ端末100に対して、誰からの招待申請であるかを通知することができる。
(11)招待申請情報に含まれる申請元アプリ10(第1アプリケーションの一例)における招待ユーザ(第1ユーザの一例)に対応した情報は、招待ユーザのユーザ端末100にて申請先アプリ20(第2アプリケーションの一例)が、申請元アプリ10から直接的又は当該ユーザ端末100の端末記憶部140(記憶部の一例)を介して間接的に取得したものである。ここで、招待ユーザに対応した情報は、ユーザID(識別情報の一例)や当該ユーザIDと関連付けられたトークン情報(例えば、招待者トークン)など、管理サーバ200で招待ユーザを特定できる情報であればよい。これにより、管理サーバ200は、申請先アプリ20(第2アプリケーション)から受け取った招待申請が誰からの招待申請であるかを特定することができる。
このユーザIDと関連付けられたトークン情報(例えば招待者トークン)は、例えば、管理サーバ200で生成される。このトークン情報を生成するタイミングは、例えば、管理サーバ200がアプリケーションリスト要求情報を取得したときや、招待申請情報を取得するまでの間において申請元アプリ10から所定の情報(例えば、選択された申請先アプリ20の情報)を取得したときである。
なお、申請元アプリ10における招待ユーザに対応した情報は、招待申請情報に関連付けられていればよく、当該招待申請情報に含まれなくともよい。例えば、招待申請情報に関連付けられている申請元アプリ10(第1アプリケーションの一例)における招待ユーザ(第1ユーザの一例)に対応した情報は、招待ユーザのユーザ端末100にて申請先アプリ20(第2アプリケーションの一例)が、申請元アプリ10から直接的又は当該ユーザ端末100の端末記憶部140(記憶部の一例)を介して間接的に取得したものであってもよい。
(12)ユーザ端末100は、招待申請通知部164が招待申請情報を送信した後に、特定モードで起動された申請先アプリ20(選択されたアプリケーションの一例)を終了させる特定モード終了部165を備える。
これにより、ユーザ端末100は、特定モードで起動した申請先アプリ20から招待申請をした後に、特定モードで起動された申請先アプリ20を終了することができる。このように、ユーザ端末100は、通常モードで動作している申請元アプリ10に対する招待ユーザの一連の操作の中で、招待ユーザに意識させることなく一時的に起動した申請先アプリ20の特定の機能を利用して、被招待ユーザの選択が可能である。
(13)例えば、ユーザ端末100の提示部168(ユーザリスト提示部の一例)は、ユーザリスト取得部163が取得したユーザリストの少なくとも一部を、申請元アプリ10(特定の機能を実行させたアプリケーションの一例)への招待候補となるユーザのユーザリストとして提示する。
なお、提示部168は、例えば、招待候補となるユーザのユーザリストを表示部120に表示させることにより、当該ユーザリストを被招待ユーザに対して提示する。例えば、提示部168(第3表示制御部の一例)は、ユーザリスト取得部163(ユーザ情報取得部の一例)が取得したユーザリスト(所定の関係にあるユーザを示す情報の一例)の少なくとも一部を、申請元アプリ10への招待候補となるユーザのユーザリスト(特定の機能を実行させたアプリケーションへ招待される候補となるユーザを示す情報の一例)として表示部120に表示させる。
これにより、申請元アプリ10での操作に基づいて、申請先アプリ20の特定の機能を実行させることにより、申請元アプリ10への招待候補となる申請先アプリ20におけるユーザリストを、ユーザ端末100に表示させることができるようになる。
(14)このとき、提示部168(ユーザリスト提示部の一例)は、取得したユーザリストの少なくとも一部を含むユーザリストの表示画面を、申請元アプリ10(特定の機能を実行させたアプリケーションの一例)により表示部120に表示されていた表示画面から切り替わるように表示させる。
例えば、提示部168(第3表示制御部の一例)は、取得したユーザリストの少なくとも一部を含むユーザリスト(所定の関係にあるユーザを示す情報の少なくとも一部を含む情報の一例)の表示画面を、申請元アプリ10(特定の機能を実行させたアプリケーションの一例)により表示部120に表示されていた表示画面から切り替わるように表示させる。
このように、ユーザ端末100は、通常モードで動作している申請元アプリ10における表示画面と、被招待ユーザを選択するための申請先アプリ20における表示画面との表示の切り替えを、招待ユーザにアプリケーションが切り替わることを意識させることなく行うことができる。
(15)提示部168(第2提示部の一例、招待情報提示部の一例)は、招待申請通知部164が招待申請情報を管理サーバ200に対して送信した後、申請元アプリ10(特定の機能を実行させたアプリケーションの一例)により表示される表示画面へ切り替わるように、表示部120に表示させたユーザリストの表示画面の表示を終了させる。
例えば、提示部168(第3表示制御部の一例)は、招待申請通知部164が招待申請情報を管理サーバ200に対して送信した後、申請元アプリ10(特定の機能を実行させたアプリケーションの一例)により表示される表示画面へ切り替わるように、表示部120に表示させたユーザリスト(所定の関係にあるユーザを示す情報の少なくとも一部を含む情報の一例)の表示画面の表示を終了させる。
このように、ユーザ端末100は、通常モードで動作している申請元アプリ10における表示画面と、被招待ユーザを選択するための申請先アプリ20における表示画面との表示の切り替えを、招待ユーザにアプリケーションが切り替わることを意識させることなく行うことができる。これにより、ユーザ端末100は、招待申請を終えたユーザに対して、引き続き申請元アプリ10を利用させることができ、例えば、ユーザに対して、申請先アプリ20の利用の止めどきを生じさせないようにすることができる。
(16)管理サーバ200の招待申請受取部233は、招待ユーザ(第1ユーザの一例)のユーザ端末100においてアプリケーションリストから選択されることにより起動された申請先アプリ20(第2アプリケーションの一例)から、招待申請情報を受け取る。
ここで、招待申請情報には、申請元アプリ10(第1アプリケーションの一例)における招待ユーザに対応した情報および申請先アプリ20における被招待ユーザ(第2ユーザの一例)に対応した情報が含まれている。
なお、招待ユーザに対応した情報は、ユーザID(識別情報の一例)や当該ユーザIDと関連付けられたトークン情報(例えば、招待者トークン)など、管理サーバ200で招待ユーザを特定できる情報であればよい。また、被招待ユーザに対応した情報がトークン情報である場合に、そのトークン情報から招待ユーザだけでなく、申請元アプリ10も特定できるようにしてもよい。
また、被招待ユーザに対応した情報は、ユーザIDや当該ユーザIDと関連付けられたトークン情報など、管理サーバ200で招待ユーザを特定できる情報であればよい。
また、管理サーバ200は、招待申請情報に含まれるそれぞれのアプリID及びユーザIDを関連付けて招待申請記録として管理する招待申請管理部234を備えている。すなわち、管理サーバ200の招待申請管理部234は、招待申請情報に対応する招待申請記録を管理する。
さらに、招待申請情報には、申請先アプリ20(第2アプリケーションの一例)における招待ユーザ(第1ユーザの一例)のユーザID(識別情報の一例)を含めてもよい。なお、ユーザ端末100(SDK11)と管理サーバ200との間の通信セッションが確立されている場合には、招待申請情報を送信するユーザ(申請先アプリ20における招待ユーザ)を、通信セッションに係る情報(例えば、セッション情報)から特定することができるので、招待申請情報における申請先アプリ20における招待ユーザ情報のようにセッション情報で特定できる情報は招待申請情報に含めなくてもよい。なお、セッション情報で特定できる情報を含めなくてよいのは、招待申請情報に限ったことでなく他の情報でも同様である。
これにより、管理サーバ200は、招待ユーザのユーザ端末100から送信された招待申請情報を取得して招待申請記録として管理することができる。また、管理サーバ200は、取得した招待申請情報に含まれるユーザIDに基づいて、申請元アプリ10における招待ユーザ、申請先アプリ20における招待ユーザ、および申請先アプリ20における被招待ユーザを特定することができる。
なお、上記実施形態では、招待申請情報には、申請元アプリ10における招待ユーザに対応した情報および申請先アプリ20における被招待ユーザに対応した情報が含まれている例を説明したが、これに限られるものではない。例えば、申請元アプリ10における招待ユーザに対応した情報および申請先アプリ20における被招待ユーザに対応した情報は、招待申請情報に関連付けられていればよく、何れか一方が招待申請情報に含まれなくてもよいし、両方が招待申請情報に含まれなくてもよい。
例えば、招待申請受取部233は、招待申請情報を、申請元アプリ10(第1アプリケーションの一例)における招待ユーザ(第1ユーザの一例)に対応した情報および申請先アプリ20(第2アプリケーションの一例)における被招待ユーザ(第2ユーザの一例)に対応した情報と関連付けて取得してもよい。そして、招待申請管理部234は、招待申請受取部233が関連付けて取得した招待申請情報と、申請元アプリ10における招待ユーザに対応した情報と、申請先アプリ20における被招待ユーザに対応した情報と、を関連付けて招待申請記録として管理してもよい。
また、招待申請受取部233は、招待申請情報を、申請元アプリ10における招待ユーザに対応した情報を取得しなくでもよい。例えば、被招待ユーザに対して招待ユーザが誰であるかを知らせない場合、または招待が成立したときに招待ユーザに対して報酬を付与しない場合等は、管理サーバ200は、申請元アプリ10における招待ユーザに対応した情報を取得する必要が無く、取得した招待通知情報を被招待ユーザにユーザ端末100に対して送信しさえすればよい。
例えば、招待申請受取部233は、招待申請情報を、申請先アプリ20(第2アプリケーションの一例)における被招待ユーザ(第2ユーザの一例)に対応した情報と関連付けて取得してもよい。そして、招待申請管理部234は、招待申請受取部233が関連付けて取得した招待申請情報と申請先アプリ20における被招待ユーザに対応した情報とを関連付けて招待申請記録として管理してもよい。
(17)管理サーバ200の申請照会部235は、被招待ユーザ(第2ユーザの一例)のユーザ端末100の申請先アプリ20(第2アプリケーションの一例)からの申請照会に基づいて、申請先アプリ20における当該被招待ユーザに対する招待申請記録の有無を照会する。例えば、申請照会部235は、被招待ユーザのユーザ端末100からの申請照会に含まれる申請先アプリ20における被招待ユーザに対応した情報に対応する招待申請記録の有無を照会する。一例として、申請照会部235は、上記申請照会に含まれる申請先アプリ20における被招待ユーザのユーザID(識別情報の一例)に対応する招待申請記録の有無を照会する。
なお、申請先アプリ20の被招待ユーザに対応した情報(例えば、ユーザID)は、申請照会に関連付けられていればよく、当該申請照会に含まれなくともよい。例えば、申請照会部235は、被招待ユーザ(第2ユーザの一例)のユーザ端末100からの申請照会に関連付けられた申請先アプリ20(第2アプリケーションの一例)における被招待ユーザに対応した情報(例えば、ユーザID)、に対応する招待申請記録の有無を照会してもよい。
これにより、管理サーバ200は、被招待ユーザのユーザ端末100のからの申請照会に基づいて、当該被招待ユーザに対する招待申請記録を管理しているか否かを照会することができる。
(18)ユーザ端末100は、通常モードで動作中の申請先アプリ20(第2アプリケーションの一例)において、自ユーザに対応した情報(例えば、ユーザID(識別情報の一例))が被招待ユーザに対応する情報(第2ユーザ情報の一例、例えば、ユーザID)となる招待申請情報の有無を管理サーバ200に対して照会する照会部166を備えている。
そして、ユーザ端末100の招待通知取得部167は、照会部166が照会した結果、自ユーザに対応した情報(例えば、ユーザID)が被招待ユーザに対応する情報(例えば、ユーザID)となる招待申請情報が有る場合に、当該招待申請情報に基づく招待通知情報を管理サーバ200から取得する。
つまり、ユーザ端末100の招待通知取得部167は、例えば、他のユーザ端末100(他端末装置の一例)から管理サーバ200に対して送信された招待申請情報に含まれる被招待ユーザ(選択されたユーザの一例)のユーザID(識別情報の一例)に基づいて、申請元アプリ10(特定の機能を実行させたアプリケーションの一例)へ招待申請されたユーザ(被招待ユーザの一例)が自ユーザとなる招待申請情報に基づく招待通知情報を管理サーバ200から取得する。また、ユーザ端末100の提示部168(第2提示部の一例、招待情報提示部の一例)は、招待通知取得部167が取得した招待通知情報に基づく招待情報を提示する。
なお、被招待ユーザ(招待されるユーザの一例)に対応した情報は、招待申請情報に関連付けられていればよく、当該招待申請情報に含まれなくともよい。例えば、ユーザ端末100の招待通知取得部167は、他のユーザ端末100(他端末装置の一例)から管理サーバ200に対して送信された招待申請情報に関連付けられた被招待ユーザ(招待されるユーザの一例)のユーザID(識別情報の一例)に基づいて、申請元アプリ10(特定の機能を実行させたアプリケーションの一例)へ招待申請されたユーザ(被招待ユーザの一例)が自ユーザとなる招待申請情報に基づく招待通知情報を管理サーバ200から取得してもよい。
すなわち、招待通知取得部167は、他のユーザ端末100(他端末装置の一例)から管理サーバ200に対して送信された招待申請情報のうち、被招待ユーザ(招待されるユーザの一例)が自ユーザとなる招待申請情報に基づく招待通知情報を管理サーバ200から取得してもよい。そして、提示部168(第2表示制御部の一例)は、例えば、招待通知取得部167が取得した招待通知情報に基づく招待情報を表示部120に表示させる。
これにより、ユーザ端末100は、自ユーザが被招待ユーザとなる招待申請記録が管理サーバ200に管理されている場合、当該招待申請記録に基づく招待通知情報を取得して提示する(表示部120に表示させる)ことができる。即ち、相互招待システム500において、招待ユーザからの招待申請が被招待ユーザに通知される。
(19)ユーザ端末100は、提示部168(第2提示部の一例)が提示した招待情報に対する第3操作に基づいて、当該招待情報が示す申請元アプリ10(アプリケーションの一例)をインストール可能な画面に遷移させる画面遷移部169を備えている。
例えば、画面遷移部169は、提示部168(第2表示制御部の一例)が表示部120に表示させた招待情報に対する第3操作に基づいて、当該招待情報が示す申請元アプリ10(アプリケーションの一例)をインストール可能な画面に遷移させる。
これにより、ユーザ端末100は、管理サーバ200から取得した招待通知情報に基づく招待情報が承諾された場合、承諾された招待情報に対応する申請元アプリ10をインストール可能なストアページをユーザに特別な操作をさせることなく自動で表示することができる。
(20)ユーザ端末100は、提示部168(第2提示部の一例、招待情報提示部の一例)が提示した招待情報のうちの第3操作がされた招待情報に対応する招待通知情報に含まれる少なくとも一部の情報をユーザ端末100(自端末装置の一例)の端末記憶部140(記憶部の一例)に記憶させる招待情報管理部170を備えている。
なお、招待情報管理部170は、招待通知情報に含まれる少なくとも一部の情報に代えて、招待通知情報に関連付けられた少なくとも一部の情報を端末記憶部140に記憶させてもよい。
例えば、招待情報管理部170は、提示部168(第2表示制御部の一例)が表示部120に表示させた招待情報のうちの第3操作がされた招待情報に対応する招待通知情報に関連付けられた少なくとも一部の情報をユーザ端末100(自端末装置の一例)の端末記憶部140(記憶部の一例)に記憶させてもよい。
これにより、ユーザ端末100は、承諾された招待情報に対応する招待通知情報を記憶させておくことにより、この招待情報に対応する申請元アプリ10がインストールされた場合に、当該インストールされた申請元アプリ10が招待申請されたものであることを特定できる。
(21)ユーザ端末100は、提示部168(招待情報提示部の一例)が提示した招待情報のうちのいずれかに対応する申請元アプリ10(特定の機能を実行させたアプリケーションの一例)がユーザ端末100(自端末装置の一例)にインストールされ、且つ所定の条件が充足された場合に、招待情報に対応した招待成立情報を管理サーバ200に対して送信する招待成立通知部171を備えている。この所定の条件には、申請元アプリ10がインストールされて初めて実行(起動)したことが含まれてもよい。
例えば、招待成立通知部171は、提示部168(第2表示制御部の一例)が表示部120に表示させた招待情報のうちのいずれかに対応する申請元アプリ10(特定の機能を実行させたアプリケーションの一例)がユーザ端末100(自端末装置の一例)にインストールされ、且つ所定の条件が充足された場合に、招待情報に対応した招待成立情報を管理サーバ200に対して送信する。
例えば、招待成立通知部171は、通常モードで動作中の申請元アプリ10(アプリケーションの一例)において所定の条件が充足された場合に、ユーザ端末100の端末記憶部140に、申請元アプリ10(動作中のアプリケーションの一例)に対応した招待通知情報に含まれる少なくとも一部の情報が記憶されていることを条件として、招待通知情報に対応した招待成立情報を管理サーバ200に対して送信する。
なお、上述したように、招待情報管理部170は、提示部168(第2表示制御部の一例、招待情報提示部の一例)が表示部120に表示させた招待情報のうちの第3操作がされた招待情報に対応する招待通知情報に関連付けられた少なくとも一部の情報をユーザ端末100(自端末装置の一例)の端末記憶部140(記憶部の一例)に記憶させてもよい。この場合、招待成立通知部171は、通常モードで動作中の申請元アプリ10(第1アプリケーションの一例)において所定の条件が充足された場合に、ユーザ端末100の端末記憶部140に、申請元アプリ10に対応した招待通知情報に関連付けられた少なくとも一部の情報が記憶されていることを条件として、招待通知情報に対応した招待成立情報を管理サーバ200に対して送信してもよい。
これにより、ユーザ端末100は、招待ユーザからの招待申請に基づいて被招待ユーザが申請元アプリ10をインストールして利用したことによって、当該招待申請により招待が成立したことを管理サーバ200に通知することができる。ここで、招待成立情報を管理サーバ200に対して送信するタイミングを、申請元アプリ10において、申請元アプリ10を利用後の所定の条件が充足された場合とすれば、単に申請元アプリ10がインストールされただけで利用されていない場合を招待成立の条件が除くことができる。
(22)管理サーバ200は、招待成立受取部237と、招待成立処理部238とを備えている。招待成立受取部237は、被招待ユーザ(第2ユーザの一例)のユーザ端末100で申請元アプリ10(第1アプリケーションの一例)が起動したことに基づいて、招待通知情報に対応する招待が成立したことを示す招待成立情報を、被招待ユーザのユーザ端末100から受け取る。例えば、招待成立受取部237は、被招待ユーザのユーザ端末100の申請元アプリ10(第1アプリケーションの一例)から招待成立情報を受け取る。
招待成立処理部238は、招待成立受取部237が受け取った招待成立情報に基づく所定の処理を行う。
これにより、管理サーバ200は、招待ユーザからの招待申請による招待が成立した場合、例えば、招待が成立したことによる所定の報酬(例えば、インセンティブ)を申請元アプリ10における招待ユーザに対して付与することができる。
なお、招待成立受取部237は、上記招待成立情報を、申請元アプリ10に対応するアプリサーバ310(ゲームA)から取得してもよい。例えば、被招待ユーザのユーザ端末100で申請元アプリ10が起動した場合、申請元アプリ10に対応するアプリサーバ310(ゲームA)は、被招待ユーザのユーザ端末100との間で通信が行われ、被招待ユーザのユーザ端末100で申請元アプリ10が起動したことを認識することができる。そこで、上記招待成立情報を、申請元アプリ10に対応するアプリサーバ310(ゲームA)から管理サーバ200に送信するようにしてもよい。
例えば、招待成立受取部237は、被招待ユーザ(第2ユーザの一例)のユーザ端末100で申請元アプリ10(第1アプリケーションの一例)が起動したことに基づいて被招待ユーザのユーザ端末100又は申請元アプリ10に対応するアプリサーバ310(サーバ装置の一例)から送信された、招待通知情報に対応する招待が成立したことを示す招待成立情報を受け取る。そして、招待成立処理部238は、招待成立受取部237が受け取った招待成立情報に基づく所定の処理を行う。
これにより、管理サーバ200は、招待ユーザからの招待申請による招待が成立した場合、成立したことを認識することができる。また、管理サーバ200は、招待ユーザからの招待申請による招待が成立したことを認識した場合、例えば、所定の報酬が申請元アプリ10における招待ユーザに対して付与されるようにすることができる。
例えば、招待成立処理部238は、所定の処理として、招待成立受取部237が受け取った招待成立情報に基づいて、招待通知情報に対応する招待が成立したことを通知する招待完了通知情報を、招待ユーザ(第1ユーザの一例)のユーザ端末100又は申請元アプリ10(第1アプリケーションの一例)に対応するアプリサーバ310(サーバ装置の一例)に送信する。
これにより、招待ユーザのユーザ端末100で実行されている申請元アプリ10又は申請元アプリ10に対応するアプリサーバ310は、招待通知情報に対応する招待が成立したことを条件として、報酬を付与することができる。
具体的には、招待成立処理部238は、招待成立受取部237が受け取った招待成立情報に基づいて、申請元アプリ10(第1アプリケーションの一例)における招待ユーザ(第1ユーザの一例)に報酬が付与されるように、少なくとも申請元アプリ10における招待ユーザに対応する情報を招待完了通知情報として、招待ユーザのユーザ端末100又は申請元アプリ10に対応するアプリサーバ310(サーバ装置の一例)に送信する。
これにより、招待ユーザのユーザ端末100で実行されている申請元アプリ10又は申請元アプリ10に対応するアプリサーバ310は、招待通知情報に対応する招待が成立したことを条件として、招待ユーザに対して報酬を付与することができる。
なお、管理サーバ200は、招待ユーザからの招待申請による招待が成立した場合、所定の報酬が申請元アプリ10における被招待ユーザに対して付与されるようにしてもよい。また、管理サーバ200は、申請先アプリ20における招待ユーザ又は被招待ユーザに対して所定の報酬が付与されるようにしてもよいし、複数のアプリケーションにおいて共通で利用できる報酬が招待ユーザ又は被招待ユーザに対して付与されるようにしてもよい。
また、上述の報酬は、申請元アプリ10及び申請先アプリ20とは異なる他のアプリケーションで利用できる報酬、またはウェブサイトで利用できる報酬(例えば、通信網を介した通信により商品やサービスを売買するときに利用するできる通貨やポイント等)としてもよい。この場合、管理サーバ200は、例えば、ユーザに付与された報酬に関する情報を一旦管理し、その後所定の手続きが行われることで、他のアプリケーションで利用できる報酬、またはウェブサイトで利用できる報酬となるように、当該管理している報酬に関する情報を他のアプリケーションに対応するサーバ装置、またはウェブサイトに対応するサーバ装置に送信してもよい。
(23)招待成立情報には招待通知情報の一部または全部が含まれ、当該招待通知情報の一部または全部は、被招待ユーザ(第2ユーザの一例)のユーザ端末100にて申請元アプリ10(第1アプリケーションの一例)が、申請先アプリ20(第2アプリケーションの一例)から直接的又は当該ユーザ端末100の端末記憶部140(記憶部の一例)を介して間接的に取得したものである。
これにより、ユーザ端末100は、申請先アプリ20において取得された招待通知情報の一部または全部が含まれる招待成立情報を、申請元アプリ10から送信することができる。
なお、招待通知情報の一部または全部は、招待成立情報に関連付けられていればよく、当該招待成立情報に含まれなくともよい。例えば、招待成立情報には招待通知情報の一部または全部が関連付けられており、当該招待通知情報の一部または全部は、被招待ユーザ(第2ユーザの一例)のユーザ端末100にて申請元アプリ10(第1アプリケーションの一例)が、申請先アプリ20(第2アプリケーションの一例)から直接的又は当該ユーザ端末100の端末記憶部140(記憶部の一例)を介して間接的に取得したものであってもよい。
これにより、管理サーバ200は、招待通知情報の一部または全部が関連付けられた招待成立情報を取得することができる。
(24)上述のアプリケーションリスト取得部161の機能と、特定モード起動部162の機能と、ユーザリスト取得部163の機能と、招待申請通知部164の機能と、特定モード終了部165の機能と、照会部166の機能と、招待通知取得部167の機能と、提示部168の機能と、画面遷移部169の機能と、招待情報管理部170の機能と、招待成立通知部171の機能とが、ユーザ端末100にインストールされる対応アプリケーションのプログラム(例えば、申請元アプリ10及び申請先アプリ20のそれぞれのプログラム)に組み込まれたSDK11(プログラム(ソフトウェア)の一例)に基づいて実行される。
すなわち、ユーザ端末100にインストールされる対応アプリケーションのプログラム(例えば、申請元アプリ10及び申請先アプリ20のそれぞれのプログラム)に組み込まれたSDK11(プログラム(ソフトウェア)の一例)が実行されることにより、上述のアプリケーションリスト取得部161の機能と、特定モード起動部162(起動部の一例)の機能と、ユーザリスト取得部163(招待候補ユーザ情報取得部の一例)の機能と、招待申請通知部164の機能と、特定モード終了部165の機能と、照会部166の機能と、招待通知取得部167の機能と、提示部168(第1表示制御部の一例、第2表示辞制御部の一例)の機能と、画面遷移部169の機能と、招待情報管理部170の機能と、招待成立通知部171の機能と、が実現される。
例えば、申請元アプリ10に組み込まれたSDK11Aが、アプリケーションリスト取得部161の機能と、特定モード起動部162の機能と、提示部168の一部の機能と、招待成立通知部171の機能とを実行し、申請先アプリ20に組み込まれたSDK11Bが、ユーザリスト取得部163の機能と、招待申請通知部164の機能と、特定モード終了部165の機能と、照会部166の機能と、招待通知取得部167の機能と、提示部168の一部の機能と、画面遷移部169の機能と、招待情報管理部170の機能とを実行する。なお、SDK11AとSDK11Bとはそれぞれ同様の機能を有しており、申請元アプリ10に組み込まれているか、または申請先アプリ20に組み込まれているかに応じて対応する機能を実行する。
例えば、ユーザ端末100にインストールされる申請元アプリ10(アプリケーションの一例)のプログラムに組み込まれたSDK11A(プログラム(ソフトウェア)の一例)が実行されることにより、特定モード起動部162(起動部の一例)の機能が実現され、ユーザ端末100にインストールされる申請先アプリ20(他のアプリケーションの一例)のプログラムに組み込まれたSDK11B(プログラム(ソフトウェア)の一例)が実行されることにより、ユーザリスト取得部163(ユーザ情報取得部の一例)の機能と、招待申請通知部164の機能とが実現される。
このように、アプリケーションにSDK11を組み込むことにより、本実施形態の相互招待システム500に対応した対応アプリケーションとすることができる。よって、例えば、既存のアプリケーションやこれから開発するアプリケーションにおいても、SDK11を組み込み可能なようにアプリケーションのプログラムを更新または小変更すれば、当該アプリケーションを相互招待システム500に対応した対応アプリケーションとすることができる。
なお、上記実施形態では、例えば、アプリケーションリスト取得部161と、特定モード起動部162(起動部)と、提示部168と、招待情報管理部170と、招待成立通知部171とが、申請元アプリ10のSDK11Aが実行する機能構成であり、ユーザリスト取得部163と、招待申請通知部164と、特定モード終了部165と、照会部166と、招待通知取得部167と、提示部168と、画面遷移部169とが、申請先アプリ20のSDK11Bが実行する機能構成である例を説明したが、これに限られるものではない。
上述した、申請元アプリ10に組み込まれたSDK11Aと、申請先アプリ20に組み込まれたSDK11Bとのそれぞれが実行する招待処理の機能構成は、一例であって、SDK11AとSDK11B」とのそれぞれが実行する機能構成を適宜変更してもよい。例えば、招待申請通知部164をSDK11Aが実行する機能構成としてもよい。
<第2の実施形態>
次に、本発明の第2の実施形態を説明する。本実施形態の相互招待システム500の構成は、予め設定した任意の対応アプリケーションを、被招待ユーザを選択可能な対応アプリケーションのアプリケーションリストから除外できるようにした点が第1の実施形態に対して相違する。
図11は、第2の実施形態による管理サーバ200の構成の一例を示す構成図である。この図に示す管理サーバ200は、記憶部220がさらに抽出条件記憶部225を備えていることと、制御部230が抽出部239をさらに備えていることが、図6に示す第1の実施形態による管理サーバ200の構成と相違する。なお、図11において、図6に示す各部に対応する構成には同じ符号を付けている。以下、図11を参照して、本実施形態に係る特徴的な構成と処理について説明する。
抽出条件記憶部225は、申請元アプリ10(第1アプリケーションの一例)への招待申請が可能な対応アプリケーションを抽出する抽出条件を記憶する。例えば、抽出条件記憶部225は、上記抽出条件として、相互招待システム500において互いに招待させたくない対応アプリケーションの組み合わせに関する設定を示す相互招待禁止設定情報を記憶する相互招待拒否設定記憶部226を備えている。
具体的には、相互招待拒否設定記憶部226は、招待申請の禁止を設定する設定側アプリケーションと、当該設定側アプリケーションに対する招待申請を禁止される被設定側アプリケーションとを組みにした相互招待禁止設定情報(第3禁止情報)を記憶する。図12は、相互招待拒否設定記憶部226に記憶される相互招待禁止設定情報の一例を示す図である。相互招待禁止設定情報には、フィルタID(FilterID)と、ブロックするアプリID(ApIDfrom)と、ブロックされるアプリID(ApIDto)とが関連付けられている。
フィルタID(FilterID)は、相互招待禁止設定情報毎に識別可能なように各相互招待禁止設定情報が登録された順に発行される管理IDである。ブロックするアプリID(ApIDfrom)には、招待申請の禁止を設定する設定側アプリケーションのアプリIDが設定される。ブロックされるアプリID(ApIDto)には、招待申請を禁止される被設定側アプリケーションのアプリIDが設定される。
例えば、申請元アプリ10のアプリIDがブロックされるアプリID(ApIDto)に設定されている場合には、ブロックするアプリID(ApIDfrom)に設定されている対応アプリケーションがアプリケーションリストから除かれる。つまり、申請元アプリ10(ゲームA)から申請先アプリ20(ゲームB)に対する招待を禁止したい場合には、ブロックされるアプリID(ApIDto)に申請元アプリ10(ゲームA)のアプリIDを設定し、ブロックするアプリID(ApIDfrom)に申請先アプリ20のアプリIDを設定すればよい。
なお、申請元アプリ10のアプリIDがブロックするアプリID(ApIDfrom)に設定されている場合には、ブロックされるアプリID(ApIDto)に設定されている対応アプリケーションがアプリケーションリストから除かれてもよい。即ち、ブロックするアプリID(ApIDfrom)とブロックされるアプリID(ApIDto)とにそれぞれ設定される招待申請の禁止を設定する設定側アプリケーションと、招待申請を禁止される被設定側アプリケーションとに対して、一方向に対して招待申請が禁止されるようにしてもよいし、双方向に対して招待申請が禁止されるようにしてもよい。
ここで、上述の相互招待拒否設定記憶部226に記憶される相互招待禁止設定情報は、アプリケーション管理部231によって管理される。即ち、アプリケーション管理部231は、招待申請の禁止を設定する設定側アプリケーションと、当該設定側アプリケーションに対する招待申請を禁止される被設定側アプリケーションとを組みにした相互招待禁止設定情報を管理する。
抽出部239は、相互招待拒否設定記憶部226に記憶されている相互招待禁止設定情報に基づいた抽出条件により、対応アプリケーションの中から申請元アプリ10(第1アプリケーション)への招待申請が可能な対応アプリケーションを抽出する。
そして、アプリケーションリスト通知部232は、抽出部239が抽出した対応アプリケーションの少なくとも一部を含むアプリケーションリストを、申請元アプリ10(第1アプリケーションの一例)への招待申請が可能な対応アプリケーションのアプリケーションリストとして、招待ユーザ(第1ユーザの一例)のユーザ端末100に対して送信する。
これにより、招待禁止情報を予め設定しておくことで、任意の対応アプリケーションを、被招待ユーザを選択可能な対応アプリケーションのアプリケーションリストから除外することができる。
〔まとめ〕
以上説明したように、アプリケーション管理部231は、申請元アプリ10(第1アプリケーションの一例)および申請先アプリ20(第2アプリケーションの一例)を含む複数の対応アプリケーションのそれぞれに関する情報を管理する。ここで、アプリケーション管理部231が管理する複数の対応アプリケーションのそれぞれに関する情報とは、例えば、複数の対応アプリケーションのそれぞれを示す情報や複数の対応アプリケーションのそれぞれに設定された招待申請の禁止に関する情報である。
そして、アプリケーションリスト通知部232(アプリケーション情報通知部の一例)は、アプリケーション管理部231を参照して、申請元アプリ10への招待申請が可能であるか否か(例えば、招待申請の禁止が設定されてないか)を判定し、招待申請が可能なアプリケーションを示すアプリケーションリスト(アプリケーションを示す情報の一例)を招待ユーザ(第1ユーザの一例)のユーザ端末100に対して送信する。
これにより、管理サーバ200は、招待申請可能な対応アプリケーションのみのアプリケーションリストを招待ユーザのユーザ端末100に対して送信することができる。
例えば、アプリケーション管理部231は、招待申請の禁止を設定する設定側アプリケーションと、当該設定側アプリケーションに対する招待申請が禁止される被設定側アプリケーションと、を組みにした招待禁止情報を管理する。
アプリケーションリスト通知部232(アプリケーション情報通知部の一例)は、アプリケーション管理部231が管理している招待禁止情報を参照して、申請元アプリ10(第1アプリケーションの一例)を被設定側アプリケーションに設定している招待禁止情報がある場合には、当該招待禁止情報(第3禁止情報の一例)が示す設定側アプリケーションを除いた対応アプリケーションのアプリケーションリストを、招待ユーザ(第1ユーザの一例)のユーザ端末100に対して送信する。
具体的には、アプリケーションリスト通知部232は、抽出部239が抽出条件に基づいて抽出した対応アプリケーションのアプリケーションリストを、申請元アプリ10への招待申請が可能な対応アプリケーションのアプリケーションリストとして招待ユーザのユーザ端末100に対して送信してもよい。
例えば、抽出条件として、アプリケーション管理部231で管理している招待禁止情報のうち、申請元アプリ10を被設定側アプリケーションに設定している招待禁止情報があるとする。この場合には、抽出部239は、当該招待禁止情報が示す設定側アプリケーションに対応する対応アプリケーションを、申請元アプリ10への招待申請を拒否する設定がされた対応アプリケーションとして除いた対応アプリケーションを抽出する。そして、アプリケーションリスト通知部232は、抽出部239の抽出結果に基づいて、申請元アプリ10への招待申請を拒否する設定がされた対応アプリケーションを除いたアプリケーションリストを、招待ユーザのユーザ端末100に対して送信する。
これにより、相互招待システム500では、相互招待させたくない対応アプリケーションの関係を管理サーバ200に設定することができる。例えば、対応アプリケーションの中でレイティング(年齢制限)が設定されているものがあれば、レイティングが設定されていない申請元アプリ10から、レイティングが設定されている申請先アプリ20への招待を行わせないように、レイティングが設定されている申請先アプリ20をアプリケーションリストから除外することができる。
これにより、相互招待禁止設定情報の設定側アプリケーションと被設定側アプリケーションとのそれぞれに設定された対応アプリケーションは、互いに(双方向に)アプリケーションリストへの掲載を禁止(ブロック)することができる。
なお、図12に示すアプリ間フィルタ情報におけるブロックするアプリID(設定側アプリケーションのアプリID)とブロックされるアプリID(被設定側アプリケーションのアプリID)とは双方向に掲載が禁止される関係としてもよい。即ち、アプリケーションリスト通知部232(アプリケーション情報通知部の一例)は、アプリケーション管理部231が管理している相互招待禁止設定情報を参照して、申請元アプリ10を設定側アプリケーションに設定している招待禁止情報がある場合には、当該招待禁止情報が示す被設定側アプリケーションを除いたアプリケーションのアプリケーションリスト(アプリケーションを示す情報の一例)を、招待ユーザのユーザ端末100に対して送信してもよい。
このように、双方向に対して招待申請が禁止されるようにすることで、互いに一方向の相互招待禁止設定情報を記憶する必要がなくなるので相互招待拒否設定記憶部226の記憶容量を削減することができる。なお、相互招待拒否設定記憶部226に記憶する相互招待禁止設定情報に、一方向に有効か双方向に有効かを示す情報を付加してもよい。
<第3の実施形態>
次に、本発明の第3の実施形態を説明する。本実施形態の相互招待システム500の構成は、被招待ユーザとして選択可能なユーザのユーザリストから、予め設定されたユーザを除外できるようにした点が第1の実施形態に対して相違する。
第1の実施形態では、特定モードで動作中の申請先アプリ20に対応するアプリサーバ300(例えば、申請先アプリ20(ゲームB)に対応するアプリサーバ320(ゲームB))から取得したユーザリストに対応するフレンド一覧が表示部120に表示される構成を説明した。本実施形態では、このユーザリストに含まれユーザを所定の抽出条件に従ってフィルタリングしてから新たなユーザリスト(以下、招待候補ユーザリストとも称する)として表示部120に表示されるように構成する。このユーザリストのフィルタリング処理は、アプリサーバ300から取得したユーザリストが、ユーザ端末100−1(SDK11B)から管理サーバ200に通知されることによって、管理サーバ200において行われる。
〔ユーザリストのフィルタリング処理の動作の説明〕
図13を参照して、ユーザリストをフィルタリングする場合の招待処理の動作について説明する。図13は、本実施形態による招待処理の動作の一例を示すフローチャートである。この図に示す招待処理は、図9に示す第1の実施形態の招待処理に対して、ユーザリストのフィルタリング処理(ステップSB130、SE120、SB140)が追加されている点が相違する。なお、この図13において、図9に示す処理と同様の処理には同じ符号を付けており、その説明を省略する。
ステップSB120において、ユーザ端末100−1の申請先アプリ20(ゲームB)は、アプリサーバ320(ゲームB)からユーザリストを取得すると、申請先アプリ20(ゲームB)のSDK11Bのユーザリスト取得部163は、当該ユーザリストを申請先アプリ20(ゲームB)から取得し、取得したユーザリストを管理サーバ200に通知する。例えば、ユーザリスト取得部163は、当該ユーザリストに含まれるユーザのユーザIDを含むフィルタリング要求情報を管理サーバ200に対して送信する(REQ12、ステップSB130)。
ここで、フィルタリング要求情報には、例えば、申請元アプリID(ApIDfrom)と、申請先アプリID(ApIDto)と、申請先アプリの招待ユーザID(Apto_UIDfrom)と、申請先アプリの被招待ユーザID(Apto_UIDto)とが含まれる。
次に、管理サーバ200は、ユーザ端末100−1(SDK11B)からフィルタリング要求情報を受け取ることによりユーザリストを取得すると、所定の抽出条件に従ってフィルタリング処理を行い、フィルタリング結果としてフィルタリング後の招待候補ユーザリストをユーザ端末100−1(SDK11B)に対して送信する(RES12、ステップSE120)。このフィルタリング後の招待候補ユーザリスト(フィルタリング結果)には、ユーザ端末100−1(SDK11B)から管理サーバ200に通知されたユーザリストの中から所定の抽出条件によって抽出されたユーザのユーザIDが含まれている。
そして、ユーザ端末100−1のSDK11Bのユーザリスト取得部163は、送信したフィルタリング要求情報に対応するフィルタリング結果として、フィルタリング後の招待候補ユーザリストを取得する(ステップSB140)。
ステップSB140において、ユーザリスト取得部163がフィルタリング後の招待候補ユーザリストを取得すると、ユーザ端末100−1のSDK11Bの提示部168は、当該招待候補ユーザリストに含まれるユーザの少なくとも一部を、申請元アプリ10(ゲームA)への招待候補となるユーザリストに対応するフレンド一覧を表示部120に表示させる(ステップSB150)。
〔第3の実施形態の管理サーバ200の構成〕
次に、上述のフィルタリング処理を実行する管理サーバ200の構成について説明する。
図14は、本実施形態による管理サーバ200の構成の一例を示す構成図である。この図に示す管理サーバ200は、制御部230がユーザリスト通知部240をさらに備えていることと、抽出条件記憶部225が招待申請拒否ユーザ設定記憶部227と、招待申請拒否アプリ設定記憶部228とを備えていることが、図11に示す第2の実施形態による管理サーバ200の構成と相違する。なお、図14において、図11に示す各部に対応する構成には同じ符号を付けている。以下、図14を参照して、本実施形態に係る特徴的な構成と処理について説明する。
管理サーバ200のユーザリスト通知部240は、ユーザ端末100において特定モードで動作中の申請先アプリ20(SDK11B)からユーザリストのフィルタリングを要求するフィルタリング要求情報を取得する。取得した場合、ユーザリスト通知部240は、抽出部239によるフィルタリング結果(抽出結果)に基づいて、当該ユーザリストに含まれるユーザのうち申請元アプリ10への招待候補となるユーザのユーザリスト(招待候補ユーザリスト)をユーザ端末100(SDK11B)に対して送信する。
また、本実施形態では、抽出部239は、ユーザ端末100の申請先アプリ20(SDK11B)からユーザリストを取得した場合に当該ユーザリストに含まれるユーザのうち、申請元アプリ10への招待候補となるユーザを所定の抽出条件に基づいてフィルタリング(抽出)する。
抽出部239が抽出する所定の抽出条件は、アプリケーション管理部231によって管理されており、具体的には、抽出条件記憶部225に記憶されている。抽出条件記憶部225は、招待申請拒否ユーザ設定記憶部227と、招待申請拒否アプリ設定記憶部228と、を備えている。
〔招待申請拒否ユーザ設定〕
招待申請拒否ユーザ設定記憶部227は、抽出部239の抽出条件として、相互招待システム500において、招待を受け入れたくないユーザに関する設定を示す招待申請拒否ユーザ設定情報を記憶する。例えば、招待申請拒否ユーザ設定記憶部227は、招待申請の禁止を設定する設定側ユーザと、当該設定側ユーザに対する招待申請を禁止される被設定側ユーザと、この設定を有効にする対応アプリケーションとを組みにした招待申請拒否ユーザ設定情報(第1禁止情報)を記憶する。
図15は、招待申請拒否ユーザ設定記憶部227に記憶される招待申請拒否ユーザ設定情報の一例を示す図である。招待申請拒否ユーザ設定情報には、フィルタID(FilterID)と、アプリID(FilterApID)と、ブロックするユーザ(UIDfrom)と、ブロックされるユーザ(UIDto)とが関連付けられている。フィルタID(FilterID)は、招待申請拒否ユーザ設定情報毎に識別可能なように各招待申請拒否ユーザ設定情報が登録された順に発行される管理IDである。アプリID(FilterApID)には、この禁止設定を有効にする対応アプリケーション(申請先アプリ20)のアプリIDが設定される。ブロックするユーザ(UIDfrom)には、招待申請の禁止を設定する設定側ユーザのユーザIDが設定される。ブロックされるユーザ(UIDto)には、招待申請を禁止される被設定側ユーザのユーザIDが設定される。
例えば、申請先アプリ20がアプリID(FilterApID)に設定され、且つ招待ユーザのユーザIDがブロックされるユーザ(UIDto)に設定されている場合には、招待ユーザの申請先アプリ20における招待候補ユーザリストから、ブロックするユーザ(UIDfrom)に設定されているユーザが除かれる。従って、申請先アプリ20(ゲームB)において、ユーザXからの招待をユーザYが受けたくない場合には、例えば、アプリID(FilterApID)に申請先アプリ20(ゲームB)のアプリIDを設定し、ブロックされるユーザ(UIDto)にユーザXのユーザIDを設定し、ブロックするユーザ(UIDfrom)にユーザYのユーザIDを設定すればよい。これにより、ユーザXの申請先アプリ20(ゲームB)では、招待候補ユーザリストからユーザYが除外される。
なお、申請先アプリ20がアプリID(FilterApID)に設定され、且つ招待ユーザのユーザIDがブロックするユーザ(UIDfrom)に設定されている場合には、招待ユーザの申請先アプリ20における招待候補ユーザリストから、ブロックされるユーザ(UIDto)に設定されているユーザが除かれてもよい。即ち、ブロックするユーザ(UIDfrom)とブロックされるユーザ(UIDto)とにそれぞれ設定される招待申請の禁止を設定する設定側ユーザと、招待申請を禁止される被設定側ユーザとに対して、一方向に対して招待申請が禁止されるようにしてもよいし、双方向に対して招待申請が禁止されるようにしてもよい。
なお、SDK11の機能として、ユーザ端末100から、招待を受け入れたくないユーザを設定可能とする。ユーザ(ブロックするユーザ)が、対応アプリケーションのいずれかで当該ブロック設定を行うと、アプリID(FilterApID)として当該対応アプリケーションのアプリID、ブロックするユーザ(UIDfrom)としてブロック設定を行うユーザのユーザID、ブロックされるユーザ(UIDto)として招待を受け入れたくないユーザのユーザIDのそれぞれが設定された招待申請拒否ユーザ設定情報が招待申請拒否ユーザ設定記憶部227に登録されて記憶される。
〔招待申請拒否アプリ設定〕
招待申請拒否アプリ設定記憶部228は、抽出部239の抽出条件として、相互招待システム500において、ユーザが招待を受け入れたくない対応アプリケーションに関する設定を示す招待申請拒否アプリ設定情報を記憶する。
図16は、招待申請拒否アプリ設定記憶部228に記憶される招待申請拒否アプリ設定情報の一例を示す図である。招待申請拒否アプリ設定情報には、フィルタID(FilterID)と、ブロックするユーザ(UIDfrom)と、ブロックされる対応アプリケーションのアプリID(FilterApID)とが関連付けられている。フィルタID(FilterID)は、招待申請拒否アプリ設定情報毎に識別可能なように各招待申請拒否アプリ設定情報が登録された順に発行される管理IDである。アプリID(FilterApID)には、ユーザが招待を受け入れたくない対応アプリケーションのアプリIDが設定される。ブロックするユーザ(UIDfrom)には、このアプリID(FilterApID)に設定されたアプリIDが示す対応アプリケーションにおいて招待を受け入れたくないユーザのユーザIDが設定される。
なお、SDK11の機能として、ユーザ端末100から、ユーザが招待を受け入れたくない対応アプリケーションを設定可能とする。ユーザ(ブロックするユーザ)が、対応アプリケーションのいずれかで当該ブロック設定を行うと、アプリID(FilterApID)として当該対応アプリケーションのアプリID、ブロックするユーザ(UIDfrom)としてブロック設定を行うユーザのユーザIDのそれぞれが設定された招待申請拒否アプリ設定情報が招待申請拒否アプリ設定記憶部228に登録されて記憶される。
例えば、申請先アプリ20(ゲームB)がアプリID(FilterApID)に設定され、且つユーザYのユーザIDがブロックするユーザ(UIDfrom)に設定されていたとする。この場合には、招待ユーザ(例えば、ユーザX)の申請先アプリ20(ゲームB)において提示される招待候補ユーザリストからユーザYが除かれる。
また、申請元アプリ10(ゲームA)がアプリID(FilterApID)に設定され、且つユーザYのユーザIDがブロックするユーザ(UIDfrom)に設定されていたとする。この場合には、招待ユーザ(例えば、ユーザX)に対して提示される招待候補のフレンド一覧のうちの申請元アプリ10(ゲームA)へ招待する招待候補ユーザのフレンド一覧からユーザYが除かれる。これにより、例えば、既にインストールされている対応アプリケーション、または一度プレイされた後にアンインストールされた対応アプリケーションへの招待申請がされないようにブロックすることができる。
〔まとめ〕
(1)以上説明したように、本実施形態のユーザ端末100(端末装置の一例)は、アプリケーションリスト取得部161と、特定モード起動部162(起動部の一例)と、提示部168(第1提示部の一例、第2提示部の一例)と、ユーザリスト取得部163と、招待申請通知部164と、照会部166と、招待通知取得部167と、画面遷移部169と、招待情報管理部170とを備えている。
アプリケーションリスト取得部161は、通常モードで動作中の申請元アプリ10(アプリケーションの一例)における第1操作に基づいて、申請先アプリ20(第2アプリケーションの一例)がインストールされたユーザ端末100に対して、当該申請元アプリ10(第1アプリケーションの一例)をインストールさせる処理(招待処理の一例)に対応する複数の対応アプリケーションの一部または全部からなるアプリケーションリストを管理サーバ200から取得する。提示部168(第1提示部の一例、アプリケーションリスト提示部の一例)は、アプリケーションリスト取得部161が取得したアプリケーションリストの中からユーザ端末100(自端末装置の一例)にインストールされている対応アプリケーションを提示する。
そして、特定モード起動部162(起動部の一例)は、提示部168(第1提示部の一例、アプリケーションリスト提示部の一例)が提示した対応アプリケーションの中から第2操作に基づいて選択された対応アプリケーションである申請先アプリ20に対して、通常モードで動作中の申請元アプリ10(アプリケーションの一例)における招待ユーザ(自ユーザの一例)に対応した第1ユーザ情報(ユーザIDや当該ユーザIDに関連付けられたトークン情報)を管理サーバ200に通知可能なように当該選択された申請先アプリ20(アプリケーションの一例)を特定モードで起動させる。
ユーザリスト取得部163は、申請先アプリ20(アプリケーションの一例)が特定モードで動作中に管理サーバ200から招待候補となるユーザのユーザリストを取得する。そして、招待申請通知部164は、第1ユーザ情報、及びユーザリスト取得部163が取得したユーザリストの中から選択されたユーザ(被招待ユーザの一例)に対応した第2ユーザ情報(例えばユーザID)を含む招待申請情報を管理サーバ200に対して送信する。
照会部166は、通常モードで動作中の申請先アプリ20において、被招待ユーザが自ユーザ(例えば、ユーザY)となる招待申請情報(即ち、自ユーザに対する招待申請情報)の記録(招待申請記録の一例)の有無を管理サーバ200に対して照会(申請照会の一例)する。そして、招待通知取得部167は、照会部166が照会した結果、自ユーザに対応した情報が、被招待ユーザに対応した第2ユーザ情報(例えばユーザID)となる招待申請情報が有る場合に、当該招待申請情報に基づく招待通知情報を管理サーバ200から取得する。
また、提示部168(第2提示部の一例、招待情報提示部の一例)は、招待通知取得部167が取得した招待通知情報に基づく招待情報を提示する。画面遷移部169は、提示部168が提示した招待情報に対する第3操作に基づいて、当該招待情報が示す申請元アプリ10をインストール可能な画面に遷移させる。
そして、招待情報管理部170は、提示部168が提示した招待情報のうちの第3操作がされた(被招待ユーザ(例えば、ユーザY)によって招待が承諾された)招待情報に対応する招待通知情報に含まれる少なくとも一部の情報をユーザ端末100の端末記憶部140に記憶させる。
なお、SDK11が対応アプリケーションのアプリケーションリストを備えていてもよく、その場合には、当該アプリケーションリストを管理サーバ200から取得する必要が無いため、ユーザ端末100は、アプリケーションリスト取得部161の構成がなくともよい。
また、被招待ユーザのユーザ端末100は、管理サーバ200に対して申請照会を行わなくとも、管理サーバ200から送信された、当該被招待ユーザに対する招待申請情報に基づく招待通知情報を取得してもよい。例えば、管理サーバ200は、被招待ユーザのユーザ端末100において申請先アプリ20が起動したことを契機として、当該被招待ユーザに対する招待申請情報に基づく招待通知情報を当該被招待ユーザのユーザ端末100に対して送信してもよい。また、管理サーバ200は、被招待ユーザのユーザ端末100に対して招待通知情報を所定の時間周期で送信してもよいし、所定の時刻に定期的に送信してもよい。
従って、本実施形態のユーザ端末100(端末装置の一例)は、特定モード起動部162(起動部の一例)と、提示部168(第1表示制御部の一例、第2表示制御部の一例)と、ユーザリスト取得部163(招待候補ユーザ情報取得部の一例)と、招待申請通知部164と、招待通知取得部167と、画面遷移部169と、を少なくとも備えた構成としてもよく、各構成について以下のように記載することができる。
提示部168(第1表示制御部の一例)は、ユーザ端末100(自端末装置の一例)にインストールされている申請元アプリ10(第1アプリケーションの一例)における第1操作に基づいて、一または複数の対応アプリケーションを示す情報を表示部120に表示させる。特定モード起動部162(起動部の一例)は、提示部168が表示させた一または複数の対応アプリケーションを示す情報により示される対応アプリケーションのうちから第2操作に基づいて選択された申請先アプリ20(第2アプリケーションの一例)を特定モードとして起動させる。ユーザリスト取得部163(招待候補ユーザ情報取得部の一例)は、特定モードで動作中の申請先アプリ20において、管理サーバ200から申請元アプリ10へ招待される招待候補となるユーザを示すユーザリスト(招待候補ユーザ情報の一例)を取得する。招待申請通知部164は、ユーザリスト取得部163が取得した招待候補ユーザリストのうち申請元アプリ10へ招待される被招待ユーザに対応した第2ユーザ情報(例えばユーザID)が関連付けられた招待申請情報を管理サーバ200に対して送信する。
招待通知取得部167は、通常モードで動作中の申請元アプリ10において、自ユーザに対応した情報が被招待ユーザに対応する第2ユーザ情報となる招待申請情報が管理サーバ200に有る場合に、当該招待申請情報に基づく招待通知情報を管理サーバ200から取得する。提示部168(第2表示制御部の一例)は、招待通知取得部167が取得した招待通知情報に基づく招待情報を表示部120に表示させる。画面遷移部169は、提示部168が表示部120に表示させた招待情報に対する第3操作に基づいて、当該招待情報が示すアプリケーションをインストール可能な画面に遷移させる。
これにより、ユーザ端末100は、申請元アプリ10における招待ユーザの操作に基づいて申請先アプリ20を特定モードで起動させることにより、申請元アプリ10への招待候補となるユーザを示す招待候補ユーザリストを取得して表示部120に表示することができる。ここで、この招待候補ユーザリストにより示されるユーザは、例えば、申請先アプリ20において招待ユーザと所定の関係(例えば、友だち関係)にある他のユーザの中から招待候補となるユーザとして抽出されたユーザであって、申請先アプリ20へ招待可能なユーザの候補である。よって、ユーザ端末100は、被招待ユーザとして選択可能なユーザのみを表示することができるため、招待ユーザが被招待ユーザを選択する際の利便性を向上させることができる。
また、ユーザ端末100は、招待ユーザが申請先アプリ20において所定の関係(例えば、友だち関係)にある被招待ユーザを申請元アプリ10へ招待申請することができるため、あるアプリケーションで所定の関係(例えば、友だち関係)にあるユーザを、他のアプリケーションに招待することができる。また、被招待ユーザのユーザ端末100では、招待ユーザから招待申請があった場合には、申請先アプリ20において申請先アプリ20への招待情報が表示部120に表示されるため、被招待ユーザは、申請先アプリ20へ招待されたことを容易に認識することができる。また、その表示部120に表示された招待情報への操作によって、申請先アプリ20をインストール可能な画面に遷移されるため、被招待ユーザが、招待された申請先アプリ20を容易にインストールすることができる。
(2)ユーザ端末100は、招待成立通知部171を備えている。招待成立通知部171は、通常モードで動作中の申請元アプリ10(アプリケーションの一例)において所定の条件が充足された場合に、ユーザ端末100(自端末装置の一例)の端末記憶部140(記憶部の一例)に、申請元アプリ10(動作中のアプリケーションの一例)に対応した招待通知情報に含まれる少なくとも一部の情報が記憶されていることを条件として、招待通知情報に対応した招待成立情報を管理サーバ200に対して送信する。
なお、第1実施形態で説明したように、招待情報管理部170は、提示部168(第2表示制御部の一例、招待情報提示部の一例)が表示部120に表示させた招待情報のうちの第3操作がされた招待情報に対応する招待通知情報に関連付けられた少なくとも一部の情報をユーザ端末100(自端末装置の一例)の端末記憶部140(記憶部の一例)に記憶させてもよい。この場合、招待成立通知部171は、通常モードで動作中の申請元アプリ10(第1アプリケーションの一例)において所定の条件が充足された場合に、ユーザ端末100の端末記憶部140に、申請元アプリ10に対応した招待通知情報に関連付けられた少なくとも一部の情報が記憶されていることを条件として、招待通知情報に対応した招待成立情報を管理サーバ200に対して送信してもよい。
これにより、ユーザ端末100は、招待ユーザからの招待申請に基づいて被招待ユーザが申請元アプリ10をインストールして利用したことによって、当該招待申請により招待が成立したことを管理サーバ200に通知することができる。さらに、招待通知情報に含まれる少なくとも一部の情報が記憶されていることを条件とすることで、例えば相互招待システム500を利用せずにユーザ自身でインストール(招待ユーザからの招待申請に基づかないインストール)したものを除外することができる。つまり、招待ユーザからの招待申請により招待が成立したものだけを管理サーバ200に通知することができる。
ここで、招待成立情報を管理サーバ200に対して送信するタイミングを、申請元アプリ10において利用後の所定の条件が充足された場合とすれば、単に申請元アプリ10がインストールされただけで利用されていない場合を招待成立の条件から除くことができる。
(3)ユーザ端末100のアプリケーションリスト取得部161は、アプリケーションリストとともに、アプリケーションリストに含まれる対応アプリケーションのそれぞれに対応するURLスキームを取得する。そして、提示部168(第1提示部の一例、アプリケーションリスト提示部の一例)は、取得したURLスキームを用いて、ユーザ端末100(自端末装置の一例)にインストールされている対応アプリケーションを検出して自ユーザに提示する。
なお、URLスキームを利用してユーザ端末100にインストールされている対応アプリケーションを検出する例を説明したが、これに限られるものではない。例えば、OSがユーザ端末100にインストール済みの対応アプリケーションを示す情報を取得可能な場合には、このOSが取得したインストール済みの対応アプリケーションを示す情報を利用して、ユーザ端末100にインストールされている他アプリケーションを検出してもよい。
例えば、提示部168(第1表示制御部の一例)は、ユーザ端末100(自端末装置の一例)が具備する機能を用いて、アプリケーションリスト取得部161(アプリケーション情報取得部の一例)が取得した、一又は複数の対応アプリケーションを示す情報により示される対応アプリケーションのうちからユーザ端末100にインストールされている対応アプリケーションを検出し、検出したアプリケーションを示す情報を表示部120に表示させてもよい。
これにより、ユーザ端末100は、管理サーバ200から取得した対応アプリケーションリストの中から、ユーザ端末100(自端末装置の一例)にインストールされている対応アプリケーションのみを提示する(表示部120に表示させる)ことができる。
(4)本実施形態のユーザ端末100(端末装置の一例)にインストールされた対応アプリケーションのSDK11のユーザリスト取得部163は、特定モードで動作中の申請先アプリ20(アプリケーションの一例)に対応したアプリサーバ300(サーバ装置の一例)から取得したユーザリストを管理サーバ200(管理装置の一例)へ通知してもよい。そして、ユーザリスト取得部163は、通知したユーザリストから所定の抽出条件に基づいてフィルタリング(抽出の一例)されたユーザのリストを管理サーバ200から取得して新たなユーザリスト(例えば、招待候補ユーザリスト)とする。
なお、第1実施形態で説明したように、ユーザリストは、ユーザを示す情報の一例であって、その情報の形態はいずれの形態であってもよい。例えば、ユーザリスト取得部163(招待候補ユーザ情報取得部)は、特定モードで動作中の申請先アプリ20(第2アプリケーションの一例)において招待ユーザ(自ユーザの一例)と所定の関係(例えば、友だち関係)にあるユーザを示すユーザリスト(所定関係ユーザ情報の一例)を管理サーバ200へ通知してもよい。そして、ユーザリスト取得部163は、通知したユーザリストから所定の抽出条件に基づいて抽出されたユーザを示す情報を管理サーバ200から取得して招待候補ユーザリスト(招待候補ユーザ情報の一例)としてもよい。
これにより、ユーザ端末100は、申請先アプリ20において招待ユーザと所定の関係(例えば、友だち関係)にあるユーザのうち予め設定されたユーザを除外した招待候補ユーザリストを、被招待ユーザを選択可能なユーザのフレンド一覧として、招待ユーザに提示することができる。よって、招待ユーザは、招待を受け入れたくないユーザが除かれたフレンド一覧の中から被招待ユーザを選択することができる。
(5)管理サーバ200(管理装置の一例)の制御部230は、抽出部239と、ユーザリスト通知部240と、招待申請受取部233と、招待通知部236と、招待成立受取部237を備えている。抽出部239は、申請先アプリ20(第2アプリケーションの一例)から所定の関係(例えば、友だち関係)にあるユーザのユーザリストを取得した場合に当該ユーザリストに含まれるユーザのうち、申請元アプリ10(第1アプリケーションの一例)への招待候補となるユーザを所定の抽出条件に基づいてフィルタリング(抽出)する。ユーザリスト通知部240は、抽出部239が抽出した申請元アプリ10(第1アプリケーションの一例)への招待候補となるユーザのユーザリストである招待候補ユーザリストを、招待ユーザ(第1ユーザの一例)のユーザ端末100に対して送信する。招待申請受取部233は、フィルタリング後の招待候補ユーザリストのうちの選択されたユーザである被招待ユーザ(第2ユーザの一例)を申請元アプリ10へ招待申請する招待申請情報を招待ユーザのユーザ端末100から受け取る。招待通知部236は、被招待ユーザのユーザ端末100に対して、当該招待申請情報に基づく招待通知情報を送信する。招待成立受取部237は、申請先アプリ20から申請元アプリ10への招待が成立したことを示す招待成立情報を、被招待ユーザのユーザ端末100から受け取る。
これにより、管理サーバ200は、申請先アプリ20において招待ユーザと所定の関係(例えば、友だち関係)にあるユーザのユーザリストから、予め設定された抽出条件に基づいて抽出したユーザの招待候補ユーザリストを、ユーザ端末100に通知することができる。よって、あるアプリケーションで友だち関係にあるユーザを他のアプリケーションに招待する際の招待するユーザの利便性を向上させることができる。
なお、管理サーバ200(管理装置の一例)の制御部230は、招待成立受取部237を備えていない構成としてもよく、抽出部239と、ユーザリスト通知部240と、招待申請受取部233と、招待通知部236と、を少なくとも備えた構成としてもよい。例えば、抽出部239は、申請先アプリ20(第2アプリケーションの一例)から所定の関係(例えば、友だち関係)にあるユーザのユーザリスト(所定の関係にあるユーザを示す所定関係ユーザ情報の一例)を取得した場合に、当該ユーザリストに含まれるユーザのうち、申請元アプリ10(第1アプリケーションの一例)への招待候補となるユーザを抽出条件に基づいてフィルタリング(抽出)する。ユーザリスト通知部240(招待候補ユーザ通知部の一例)は、抽出部239が抽出した申請元アプリ10への招待候補となるユーザを示す招待候補ユーザリスト(招待候補ユーザ情報の一例)を、招待ユーザ(第1ユーザの一例)のユーザ端末100に対して送信する。招待申請受取部233は、送信した招待候補ユーザリストに示されるユーザのうちの被招待ユーザ(第2ユーザの一例)を申請元アプリ10へ招待申請する招待申請情報を招待ユーザのユーザ端末100から受け取る。招待通知部236は、被招待ユーザのユーザ端末100に対して、当該招待申請情報に基づく招待通知情報を送信する。
これにより、管理サーバ200は、申請先アプリ20において招待ユーザと所定の関係(例えば、友だち関係)にあるユーザのユーザリストのうちの招待候補となるユーザのみを抽出して招待ユーザのユーザ端末100に通知することができる。よって、あるアプリケーションで友だち関係にあるユーザを他のアプリケーションに招待する際の招待するユーザの利便性を向上させることができる。
例えば、抽出部239は、申請元アプリ10から起動された申請先アプリ20から所定の関係にあるユーザのユーザリストを取得した場合に、申請元アプリ10への招待候補となるユーザを抽出条件に基づいて抽出する。そして、ユーザリスト通知部240は招待候補ユーザリストを、招待ユーザのユーザ端末100の申請先アプリ20に対して送信する。招待申請受取部233は、被招待ユーザを申請元アプリ10へ招待申請する招待申請情報を招待ユーザのユーザ端末100の申請先アプリ20から受け取る。このように、招待申請情報を招待ユーザの申請元アプリ10から受け取るのではなく、申請元アプリ10から申請先アプリ20を介在(起動)させて受け取るようにしたので、申請元アプリ10と申請先アプリ20のようにユーザ情報に互換性がないアプリケーション間であっても容易にユーザを招待することができるようになる。
また、管理サーバ200は、申請先アプリ20(第2アプリケーションの一例)から申請元アプリ10(第1アプリケーションの一例)への招待が成立したことを示す招待成立情報を、被招待ユーザ(第2ユーザの一例)のユーザ端末100から受け取る招待成立受取部237を備えた構成としてもよい。
この構成によれば、管理サーバ200は、招待ユーザからの招待申請による招待が成立した場合、成立したことを認識することができる。例えば、管理サーバ200は、招待ユーザからの招待申請による招待が成立したことを認識した場合、所定の報酬が申請元アプリ10における招待ユーザに対して付与されるような処理を行ってもよい。
(6)例えば、抽出部239は、上記抽出条件として、招待ユーザ(第1ユーザの一例)からの招待申請を拒否する設定がされたユーザを抽出対象から除く。
これにより、管理サーバ200は、招待ユーザからの招待申請を拒否する設定がされたユーザを除いた招待候補ユーザリストを招待ユーザのユーザ端末100に対して送信することができる。
具体的には、例えば、アプリケーション管理部231は、ブロックするユーザ(招待申請の禁止を設定する設定側ユーザ)と、ブロックされるユーザ(設定側ユーザに対する招待申請を禁止される被設定側ユーザ)とを組みにした招待申請拒否ユーザ設定情報(第1禁止情報の一例)を、招待申請拒否ユーザ設定記憶部227に記憶させて管理する。
そして、抽出部239は、抽出条件として、アプリケーション管理部231が管理している招待申請拒否ユーザ設定情報のうち、招待ユーザ(第1ユーザの一例)をブロックされるユーザ(被設定側ユーザの一例)に設定している招待申請拒否ユーザ設定情報がある場合には、当該招待申請拒否ユーザ設定情報が示すブロックするユーザ(設定側ユーザの一例)を、招待ユーザからの招待申請を拒否する設定がされたユーザとして抽出対象から除く。
なお、招待ユーザ(第1ユーザの一例)をブロックするユーザ(設定側ユーザの一例)に設定している招待申請拒否ユーザ設定情報がある場合には、当該招待申請拒否ユーザ設定情報が示すブロックされるユーザを、招待ユーザからの招待申請を拒否する設定がされたユーザとして除いてもよい。つまり、ブロックするユーザと、ブロックされるユーザとに対して、一方向に対して招待申請が禁止されるようにしてもよいし、双方向に対して招待申請が禁止されるようにしてもよい。
これにより、相互招待システム500では、相互招待させたくない対応アプリケーションにおけるユーザの関係を管理サーバ200に設定することができる。よって、相互招待システム500は、任意の対応アプリケーションにおいて招待を受け入れたくない招待ユーザから被招待ユーザへの招待申請がされないようにすることができる。
(7)抽出部239は、上記抽出条件として、申請元アプリ10(第1アプリケーションの一例)への招待申請を拒否する設定がされたユーザを抽出対象から除いてもよい。
具体的には、例えば、アプリケーション管理部231は、ブロックするユーザ(招待申請の禁止を設定する設定側ユーザ)と、ブロックされる対応アプリケーション(設定側ユーザに対する招待申請を禁止される被設定側アプリケーション)とを組みにした招待申請拒否アプリ設定情報(第2禁止情報の一例)を招待申請拒否アプリ設定記憶部228に記憶させて管理する。
そして、抽出部239は、抽出条件として、アプリケーション管理部231が管理している招待申請拒否アプリ設定情報のうち、申請元アプリ10(第1アプリケーションの一例)をブロックされるアプリケーション(被設定側アプリケーションの一例)に設定している招待申請拒否アプリ設定情報がある場合には、当該招待申請拒否アプリ設定情報が示すブロックするユーザ(設定側ユーザの一例)を、申請元アプリ10への招待申請を拒否する設定がされたユーザとして抽出対象から除く。
これにより、管理サーバ200は、申請元アプリ10への招待申請を拒否する設定がされたユーザを除いた招待候補ユーザリストを招待ユーザのユーザ端末100に対して送信することができる。よって、相互招待システム500は、ユーザが招待を受け入れたくない対応アプリケーションへの招待申請がされないようにすることができる。したがって、相互招待システム500では、例えば、ユーザが自身のユーザ端末100に既にインストールされている対応アプリケーション、または一度プレイされた後にアンインストールされた対応アプリケーションへの招待申請を拒否する設定を行えば、当該ユーザに対して当該対応アプリケーションへの招待申請がされないようにブロックすることができる。
<第4の実施形態>
次に、本発明の第4の実施形態を説明する。本実施形態の相互招待システム500の構成は、第3の実施形態の構成と同様であるため、本実施形態において特徴的な処理について説明する。第3の実施形態では、抽出条件記憶部225に記憶されている招待申請拒否ユーザ設定情報または招待申請拒否アプリ設定情報に基づいて、ユーザリストをフィルタリングする処理を説明した。本実施形態では、招待申請情報記憶部222に記憶されている招待申請記録に基づいて、ユーザリストをフィルタリングする処理を説明する。
例えば、管理サーバ200の抽出部239は、ユーザ端末100の申請先アプリ20(SDK11B)からユーザリストを取得した場合に、当該ユーザリストに含まれるユーザの中から申請元アプリ10への招待候補となる招待候補ユーザを、招待申請記録に基づいてフィルタリング(抽出)する。
本実施形態によるフィルタリング処理において優先されるべき第1の目的は、申請元アプリ10をインストールしていて、既に利用している招待候補ユーザを招待候補ユーザリストから除外することである。また、第2の目的は、招待申請中の招待候補ユーザを招待候補ユーザリストから除外することである。さらに、第3の目的は、招待が失敗または拒否された招待候補ユーザを招待候補ユーザリストから除外することである。
以下に、図17から図21を参照して、招待申請記録に基づいてフィルタリングする処理の例を説明する。ここでは、フィルタリング処理の例として第1例から第5例を説明する。なお、第1例及び第2例が上記第1の目的に関するフィルタリング処理の例であり、第3例が上記第2の目的に関するフィルタリング処理の例であり、第4例及び第5例が上記第3の目的に関するフィルタリング処理の例である。
ここで、図17から図21は、招待申請情報記憶部222に記憶されている招待申請記録に含まれる情報の一部を示している。また、各図において、招待申請記録に含まれる情報のうちの「=」が記載されている情報は、抽出部239がフィルタリングする際の抽出条件として、過去に招待申請された招待申請記録に設定されているIDと同一となることを示している。
(1)図17は、招待申請記録に基づいてフィルタリングする処理の第1例を説明する図である。この第1例に示す処理は、申請元アプリ10(ゲームA)を既に利用(プレイ)している招待候補ユーザに対して招待申請(再招待)がされないように、申請元アプリ10(ゲームA)への招待申請を行ったことがある招待候補ユーザを、招待候補ユーザリストから除くフィルタリング処理である。この招待申請は、同一の申請元アプリ10、及び同一の申請先アプリ20であって、招待候補ユーザが招待ユーザとなっている招待申請であることをいう。
管理サーバ200の抽出部239は、招待申請情報記憶部222に記憶されている招待申請記録に対して、申請元アプリID(ApIDfrom)と、申請先アプリID(ApIDto)とがそれぞれ一致し、且つ申請先アプリの招待ユーザID(Apto_UIDfrom)に招待候補ユーザのユーザIDが一致する条件の招待申請(再招待)がされないように、この条件を満たす招待候補ユーザを、招待候補ユーザリストから除外する。即ち、申請先アプリの招待ユーザID(Apto_UIDfrom)に設定されているユーザIDが申請先アプリの被招待ユーザID(Apto_UIDto)となる招待申請がされないように、当該、申請先アプリの招待ユーザID(Apto_UIDfrom)に設定されているユーザIDが示す招待候補ユーザを招待候補ユーザリストから除外する。
(2)図18は、招待申請フィルタリング処理の第2例を説明する図である。この第2例に示す処理は、申請元アプリ10(ゲームA)を既に利用(プレイ)している招待候補ユーザに対して招待申請(再招待)がされないように、申請元アプリ10(ゲームA)への招待が成立済みである招待候補ユーザを、招待候補ユーザリストから除くフィルタリング処理である。
図18に示す招待申請情報は、招待申請の状態(StatusInvite)に、フラグ「2」、及び「3」のうちのいずれかが設定されており、この招待申請は招待成立済みであることを示している。管理サーバ200の抽出部239は、招待申請情報記憶部222に記憶されている招待申請記録に対して、申請元アプリID(ApIDfrom)と、申請先アプリID(ApIDto)と、申請先アプリの被招待ユーザID(Apto_UIDto)とがそれぞれ一致する条件の招待申請がされないように、この条件を満たす招待候補ユーザを、招待候補ユーザリストから除外する。
なお、この第2例に示す処理は、第1例に示す処理に加えて適用してもよく、その場合、申請元アプリ10(ゲームA)を既に利用(プレイ)している招待候補ユーザを招待候補ユーザリストから除くフィルタリング処理となる。
(3)図19は、招待申請フィルタリング処理の第3例を説明する図である。この第3例に示す処理は、例えば、申請先アプリ20(ゲームB)から申請元アプリ10(ゲームA)への招待申請が招待申請中(招待中)の招待候補ユーザを招待候補ユーザリストから除くフィルタリング処理である。
図19に示す招待申請情報は、招待申請の状態(StatusInvite)に、フラグ「0」、及び「1」のうちのいずれかが設定されており、この招待申請は招待申請中(招待申請未通知または招待申請通知済)であることを示している。管理サーバ200の抽出部239は、招待申請情報記憶部222に記憶されている招待申請記録に対して、申請元アプリID(ApIDfrom)と、申請先アプリID(ApIDto)と、申請先アプリの被招待ユーザID(Apto_UIDto)とがそれぞれ一致する条件の招待申請がされないように、この条件を満たす招待候補ユーザを、招待候補ユーザリストから除外する。
なお、この第3例に示す処理は、第1例または第2例に示す処理に加えて適用してもよく、その場合、申請元アプリ10(ゲームA)を既に利用(プレイ)している招待候補ユーザまたは招待申請中の招待候補ユーザを招待候補ユーザリストから除くフィルタリング処理となる。
(4)図20は、招待申請フィルタリング処理の第4例を説明する図である。この第4例に示す処理は、例えば、申請先アプリ20(ゲームB)から申請元アプリ10(ゲームA)への招待申請が失敗または拒否されている招待候補ユーザを招待候補ユーザリストから除くフィルタリング処理である。
なお、この第4例に示す処理は、アプリケーション設定記憶部221に記憶されているアプリケーション情報の再招待許可フラグ(FlagResultInvite)がフラグ「0」(再招待不可)に設定されている対応アプリケーションが申請元アプリ10または申請先アプリ20となる場合に適用される。
図20に示す招待申請情報は、招待申請の状態(StatusInvite)に、フラグ「−1」が設定されており、この招待申請は失敗または拒否されていることを示している。管理サーバ200の抽出部239は、招待申請情報記憶部222に記憶されている招待申請記録に対して、申請元アプリID(ApIDfrom)と、申請先アプリID(ApIDto)と、申請先アプリの被招待ユーザID(Apto_UIDto)とがそれぞれ一致する条件の招待申請がされないように、この条件を満たす招待候補ユーザを、招待候補ユーザリストから除外する。
なお、再招待許可フラグ(FlagResultInvite)がフラグ「1」(再招待可)に設定されている対応アプリケーションが申請元アプリ10及び申請先アプリ20となる場合には、上記条件を満たす被招待ユーザを、招待候補ユーザリストから除外しない。
なお、この第4例に示す処理は、第1例から第3例に示す処理に加えて適用してもよく、その場合、申請元アプリ10(ゲームA)を既に利用(プレイ)している招待候補ユーザ、招待申請中の招待候補ユーザ、または失敗若しくは拒否されている招待候補ユーザを、招待候補ユーザリストから除くフィルタリング処理となる。
(5)図21は、招待申請フィルタリング処理の第5例を説明する図である。この第5例に示す処理は、第4例に示す処理において、さらに招待ユーザが同一の場合に申請先アプリ20(ゲームB)から申請元アプリ10(ゲームA)への招待申請が失敗している招待候補ユーザをから除くフィルタリング処理である。即ち、第4例に示す処理において、申請先アプリ20(ゲームB)から申請元アプリ10(ゲームA)への招待申請が失敗している被招待ユーザであっても、招待ユーザが異なれば、当該招待候補ユーザを招待候補ユーザリストから除外しなくてもよい。
図21に示す招待申請情報は、招待申請の状態(StatusInvite)に、フラグ「−1」が設定されており、この招待申請は失敗していることを示している。管理サーバ200の抽出部239は、招待申請情報記憶部222に記憶されている招待申請記録に対して、申請元アプリID(ApIDfrom)と、申請先アプリID(ApIDto)と、申請先アプリの招待ユーザID(Apto_UIDfrom)と、申請先アプリの被招待ユーザID(Apto_UIDto)とがそれぞれ一致する条件の招待申請がされないように、この条件を満たす招待候補ユーザを、招待候補ユーザリストから除外する。
〔まとめ〕
以上説明したように、本実施形態では、第3の実施形態と同様に、所定の抽出条件に基づいてフィルタリング(抽出)されたユーザのリストを新たなユーザリスト(招待候補ユーザリストの一例)とする。ここで、本実施形態では、招待申請記録に基づく抽出条件でフィルタリングが行われる。
(1)本実施形態の管理サーバ200(管理装置の一例)の制御部230は、抽出部239と、ユーザリスト通知部240と、招待申請受取部233と、招待通知部236と、招待成立受取部237を備えている。抽出部239は、申請先アプリ20(第2アプリケーションの一例)から所定の関係(例えば、友だち関係)にあるユーザのユーザリストを取得した場合に当該ユーザリストに含まれるユーザのうち、申請元アプリ10(第1アプリケーションの一例)への招待候補となるユーザを所定の抽出条件に基づいてフィルタリング(抽出)する。ユーザリスト通知部240は、抽出部239が抽出した申請元アプリ10への招待候補となるユーザのユーザリストである招待候補ユーザリストを、招待ユーザ(第1ユーザの一例)のユーザ端末100に対して送信する。招待申請受取部233は、フィルタリング後の招待候補ユーザリストのうちの選択されたユーザである被招待ユーザ(第2ユーザの一例)を申請元アプリ10へ招待申請する招待申請情報を招待ユーザのユーザ端末100から受け取る。招待通知部236は、被招待ユーザのユーザ端末100に対して、当該招待申請情報に基づく招待通知情報を送信する。招待成立受取部237は、申請先アプリ20から申請元アプリ10への招待が成立したことを示す招待成立情報を、被招待ユーザのユーザ端末100から受け取る。
これにより、管理サーバ200は、申請先アプリ20において招待ユーザと所定の関係(例えば、友だち関係)にあるユーザのユーザリストから、予め設定された抽出条件に基づいて抽出したユーザの招待候補ユーザリストを、ユーザ端末100に通知することができる。よって、あるアプリケーションで友だち関係にあるユーザを他のアプリケーションに招待する際の招待するユーザの利便性を向上させることができる。
なお、管理サーバ200(管理装置の一例)の制御部230は、招待成立受取部237を備えていない構成としてもよく、抽出部239と、ユーザリスト通知部240と、招待申請受取部233と、招待通知部236と、を少なくとも備えた構成としてもよい。例えば、抽出部239は、申請先アプリ20(第2アプリケーションの一例)から所定の関係(例えば、友だち関係)にあるユーザのユーザリスト(所定の関係にあるユーザを示す所定関係ユーザ情報の一例)を取得した場合に、当該ユーザリストに含まれるユーザのうち、申請元アプリ10(第1アプリケーションの一例)への招待候補となるユーザを抽出条件に基づいてフィルタリング(抽出)する。ユーザリスト通知部240(招待候補ユーザ通知部の一例)は、抽出部239が抽出した申請元アプリ10への招待候補となるユーザを示す招待候補ユーザリスト(招待候補ユーザ情報の一例)を、招待ユーザ(第1ユーザの一例)のユーザ端末100に対して送信する。招待申請受取部233は、送信した招待候補ユーザリストに示されるユーザのうちの被招待ユーザ(第2ユーザの一例)を申請元アプリ10へ招待申請する招待申請情報を招待ユーザのユーザ端末100から受け取る。招待通知部236は、被招待ユーザのユーザ端末100に対して、当該招待申請情報に基づく招待通知情報を送信する。
これにより、管理サーバ200は、申請先アプリ20において招待ユーザと所定の関係(例えば、友だち関係)にあるユーザのユーザリストのうちの招待候補となるユーザのみを抽出して招待ユーザのユーザ端末100に通知することができる。よって、あるアプリケーションで友だち関係にあるユーザを他のアプリケーションに招待する際の招待するユーザの利便性を向上させることができる。
(2)例えば、管理サーバ200の抽出部239は、上記抽出条件として、申請先アプリ20(第2アプリケーションの一例)から申請元アプリ10(第1アプリケーションの一例)への招待申請をしたことがあるユーザを抽出対象から除く(第1抽出条件)。ここで、申請先アプリ20から申請元アプリ10への招待申請をしたことがあるユーザとは、既に申請元アプリ10を利用しているユーザを示す。
これにより、管理サーバ200は、既に申請元アプリ10を利用しているユーザが招待候補ユーザリストに掲載されることを抑制することができる。つまり、管理サーバ200は、当該招待候補ユーザリストを招待ユーザのユーザ端末100に対して送信することができ、招待するユーザの利便性を向上させることができる。
(3)抽出部239は、上記抽出条件として、申請先アプリ20(第2アプリケーションの一例)から申請元アプリ10(第1アプリケーションの一例)への招待申請が成立している当該招待申請がされたことがあるユーザを抽出対象から除いてもよい(第2抽出条件)。ここで、申請先アプリ20から申請元アプリ10への招待申請が成の一例立している当該招待申請がされたことがあるユーザとは、既に申請元アプリ10を利用しているユーザを示す。
これにより、管理サーバ200は、既に申請元アプリ10を利用しているユーザが招待候補ユーザリストに掲載されることを抑制することができる。つまり、管理サーバ200は、当該招待候補ユーザリストを招待ユーザのユーザ端末100に対して送信することができ、招待するユーザの利便性を向上させることができる。
さらに上記の第1抽出条件と、この第2抽出条件を組み合わせることで、既に申請元アプリ10を利用しているユーザを招待候補ユーザリストに掲載されることをさらに抑制することができる。
(4)抽出部239は、上記抽出条件として、申請先アプリ20(第2アプリケーションの一例)から申請元アプリ10(第1アプリケーションの一例)への招待申請がされたことがあるユーザであって、当該招待申請が成立されていない招待申請中のユーザを抽出対象から除いてもよい(第3抽出条件)。
これにより、管理サーバ200は、他のユーザから招待申請がされているユーザが招待候補ユーザリストに掲載されないようになるので、招待申請が失敗する可能性があるユーザが招待候補ユーザリストに掲載されることを抑制することができる。つまり、管理サーバ200は、当該招待候補ユーザリストを招待ユーザのユーザ端末100に対して送信することができ、招待するユーザの利便性を向上させることができる。
さらに、上記の第1抽出条件または第2抽出条件と、この第3抽出条件を組み合わせることで、当該招待申請が成立しやすいユーザが招待候補ユーザリストに掲載されるようになる。
(5)抽出部239は、上記抽出条件として、申請先アプリ20(第2アプリケーションの一例)から申請元アプリ10(第1アプリケーションの一例)への招待申請を却下したことがあるユーザを抽出対象から除いてもよい(第4抽出条件の一例)。ここで、申請先アプリ20から申請元アプリ10への招待申請を却下したことがあるユーザとは、被招待ユーザによって招待申請を拒否したユーザや、招待申請中の状態が予め定められた時間以上経過するまで招待申請を放置したユーザを示す。
このような申請先アプリ20から申請元アプリ10への招待申請を却下したユーザは、再度、申請元アプリ10への招待申請をしても招待申請が失敗する可能性がある。これにより、管理サーバ200は、招待申請が失敗する可能性のあるユーザが招待候補ユーザリストに掲載されることを抑制することができる。つまり、管理サーバ200は、当該招待候補ユーザリストを招待ユーザのユーザ端末100に対して送信することができ、招待するユーザの利便性を向上させることができる。
さらに、上記の第1抽出条件もしくは第2抽出条件、または上記の第3抽出条件に、この第4抽出条件を組み合わせることで、当該招待申請が成立しやすいユーザが招待候補ユーザリストに掲載されるようになる。
(6)管理サーバ200のアプリケーション管理部231は、複数の対応アプリケーションに関する情報に申請元アプリ10(第1アプリケーションの一例)へのユーザの再招待を許可するか否かを示す情報を含んで管理する。管理サーバ200の抽出部239は、上記抽出条件として、アプリケーション管理部231を参照して申請元アプリ10(第1アプリケーションの一例)へのユーザの再招待が許可されている場合、申請元アプリ10への招待申請を却下したことがあるユーザを抽出対象に含める。
これにより、管理サーバ200は、再招待が許可されている申請元アプリ10(第1アプリケーション)への招待申請の場合には、再招待を許可することができる。
(7)抽出部239は、上記抽出条件において、申請先アプリ20(第2アプリケーションの一例)からの申請元アプリ10(第1アプリケーションの一例)への該招待申請を却下したユーザであっても、当該招待申請と異なる招待ユーザ(第1ユーザの一例)からの招待申請である場合には当該ユーザを抽出対象に含めてもよい。
これにより、管理サーバ200は、過去に同じ対応アプリケーションからの招待申請を却下した被招待ユーザであっても、招待ユーザが異なる場合には再招待を許可することができる。
<変形例>
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成は上述の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。例えば、上述の第1、2、3の実施形態において説明した各機能は、任意に組み合わせることができる。
(1)上記実施形態では、管理サーバ200の通信部210(送受信部の一例)は、アプリケーションリスト(アプリケーション管理部231が管理する情報の少なくとも一部の一例)、招待申請情報、招待通知情報、および招待成立情報を、直接的に招待ユーザのユーザ端末100又は被招待ユーザのユーザ端末100と通信する例を説明した。同様にユーザ端末100の端末通信部130(送受信部の一例)は、アプリケーションリスト、ユーザリスト(招待候補ユーザ情報の一例)、招待申請情報、招待通知情報、および招待成立情報を直接的に管理サーバ200と通信する例を説明した。
ここで、管理サーバ200の通信部210は、申請元アプリ10(第1アプリケーションの一例)又は申請先アプリ20(第2アプリケーションの一例)に対応するアプリサーバ300(サーバ装置の一例)を介して通信セッションを確立させた後で、直接的に招待ユーザのユーザ端末100又は被招待ユーザのユーザ端末100と通信してもよい。同様にユーザ端末100の端末通信部130は、申請元アプリ10又は申請先アプリ20(動作中のアプリケーションの一例)に対応するアプリサーバ300を介して通信セッションを確立させた後で、直接的に管理サーバ200と通信してもよい。
なお、ユーザ端末100から直接的に管理サーバ200と通信する場合に、必要に応じて通信セッションを確立させるようにしてもよい。つまり、通信セッションを確立させる前に直接的に管理サーバ200と通信する場合と、通信セッションを確立させた後に直接的に管理サーバ200と通信する場合との両方を含んでもよい。
図22は、通信セッションの確立処理の動作を説明するフローチャートである。この通信セッションの確立処理(通信セッション確立処理)は、申請元アプリ10または申請先アプリ20がユーザ端末100で起動された後に、管理サーバ200と通信を行う前に必要に応じて行われる処理である。図22では、ユーザ端末100にインストールされている申請元アプリ10のSDK11Aから直接的に管理サーバ200と通信する場合に行われる通信セッションの確立処理を示している。なお、この通信セッションの確立処理は、申請先アプリ20のSDK11Bから直接的に管理サーバ200と通信する場合も同様に行うことができる。なお、ユーザ端末100とアプリサーバ310とは既に通信セッションが確立されている前提となる。
まず、ユーザ端末100のSDK11Aは、ワンタイムトークンの取得を要求するワンタイムトークン取得要求情報をアプリサーバ310に対して送信する(ステップSA10)。アプリサーバ310は、ユーザ端末100(SDK11A)からワンタイムトークン取得要求情報を取得すると、取得したワンタイムトークン取得要求情報に基づくワンタイムトークン生成要求情報を管理サーバ200に対して送信する(ステップSC10)。管理サーバ200は、アプリサーバ310からワンタイムトークン生成要求情報を取得すると、ワンタイムトークンを生成し、生成したワンタイムトークンをアプリサーバ310に対して送信する(ステップSE10)。アプリサーバ310は、管理サーバ200からワンタイムトークンを取得すると、取得したワンタイムトークンをユーザ端末100(SDK11A)に対して送信する(ステップSC20)。ユーザ端末100のSDK11Aは、アプリサーバ310からワンタイムトークンを取得すると、取得したワンタイムトークンを含んだセッション確立要求情報を管理サーバ200に対して送信する(ステップSA20)。管理サーバ200は、ユーザ端末100(SDK11A)からセッション確立要求情報を取得すると、取得したセッション確立要求情報に含まれるワンタイムトークンが正しい情報である場合(ユーザ端末100(SDK11A)に対して送信したワンタイムトークンと一致する場合)には、通信セッションを確立して、相互招待システム500による通信が許可される(ステップSE20)。以後、例えば、図9、図10、及び図13を参照して説明した相互招待システム500による招待処理が行われる。なお、管理サーバ200は、ユーザ端末100(SDK11A)から取得したセッション確立要求情報に含まれるワンタイムトークンが正しい情報でない場合には通信エラーとし、相互招待システム500による通信が許可されない。また、管理サーバ200がユーザ端末100(SDK11A)からセッション確立要求情報を取得できない場合には、当然、相互招待システム500による通信が許可されない。
このように、通信セッションを確立させた後で、相互招待システム500による通信を開始することで、相互招待システム500を含むネットワークシステム1内のセキュリティを向上させることができる。
なお、アプリケーションリスト、招待申請情報、招待通知情報、および招待成立情報の一部は、ユーザ端末100から直接的に管理サーバ200と通信せずに、申請元アプリ10(第1アプリケーションの一例)又は申請先アプリ20(第2アプリケーションの一例)に対応するアプリサーバ300(サーバ装置の一例)を介してユーザ端末100と通信してもよい。すなわち、管理サーバ200の通信部210(送受信部の一例)は、アプリケーションリスト、招待申請情報、招待通知情報、又は招待成立情報を申請元アプリ10又は申請先アプリ20に対応するアプリサーバ300を介して招待ユーザのユーザ端末100又は被招待ユーザのユーザ端末100と通信、若しくは直接的に招待ユーザのユーザ端末100又は被招待ユーザのユーザ端末100と通信するようにしてもよい。同様に、ユーザ端末100の端末通信部130(送受信部の一例)は、アプリケーションリスト、ユーザリスト、招待申請情報、招待通知情報、又は招待成立情報を申請元アプリ10又は申請先アプリ20(動作中のアプリケーションの一例)に対応するアプリサーバ300を介して管理サーバ200と通信、若しくは直接的に管理サーバ200と通信してもよい。
さらに、管理サーバ200の通信部210(送受信部の一例)は、アプリケーションリスト、招待申請情報、招待通知情報、および招待成立情報を申請元アプリ10(第1アプリケーションの一例)又は申請先アプリ20(第2アプリケーションの一例)に対応するアプリサーバ300(サーバ装置の一例)を介して招待ユーザのユーザ端末100又は被招待ユーザのユーザ端末100と通信してもよい。同様に、ユーザ端末100の端末通信部130(送受信部の一例)は、アプリケーションリスト、ユーザリスト、招待申請情報、招待通知情報、および招待成立情報を申請元アプリ10又は申請先アプリ20(動作中のアプリケーションの一例)に対応するアプリサーバ300を介して管理サーバ200と通信してもよい。
このように、相互招待システム500は、アプリサーバ300を介してユーザ端末100と管理サーバ200とが通信しても、上記実施形態と同様の招待処理を行うことができ、同様の効果を得ることができる。
(2)上記第3の実施形態および第4の実施形態では、ユーザ端末100−1の申請先アプリ20(ゲームB)が、アプリサーバ320(ゲームB)からユーザリストを取得し、取得したユーザリストに含まれるユーザのユーザIDを含むフィルタリング要求情報を管理サーバ200に通知する例を説明したが、これに限られるものではない。
例えば、ユーザ端末100−1の申請先アプリ20(ゲームB)は、アプリサーバ320(ゲームB)からユーザリストを取得せずにフィルタリング要求情報を管理サーバ200に通知する。そして、管理サーバ200は、ユーザ端末100−1(SDK11B)からフィルタリング要求情報を受け取ると、アプリサーバ320(ゲームB)に対して、ユーザXと所定の関係(例えば、友だち関係)にあるユーザのユーザリストを要求するフレンド一覧要求情報をアプリサーバ320(ゲームB)に送信する。
次に、アプリサーバ320(ゲームB)は、管理サーバ200からフレンド一覧要求情報を取得すると、ユーザXと所定の関係(例えば、友だち関係)にあるユーザのユーザリストを、管理サーバ200に対して送信する。そして、管理サーバ200は、アプリサーバ320(ゲームB)からユーザリストを取得すると、所定の抽出条件に従ってフィルタリング処理を行い、フィルタリング結果としてフィルタリング後の招待候補ユーザリストをユーザ端末100−1(SDK11B)に対して送信する。
このように、管理サーバ200が、アプリサーバ320(ゲームB)からユーザリストを取得する場合に、アプリサーバ320(ゲームB)から直接的又はユーザ端末100−1(SDK11B)を介して間接的に取得してよい。
(3)上記実施形態では、相互招待システム500に対応する対応アプリケーションとしてゲームを例に説明したが、この対応アプリケーションはゲームに限られるものではなく、ゲーム以外のいずれのアプリケーションであってもよい。
また、上記実施形態では、申請先アプリ20において招待ユーザと所定の関係にあるユーザを、招待ユーザと友だち関係にあるユーザとして説明したが、この所定の関係は友だち関係に限られるものではない。例えば、この所定の関係は、申請先アプリ20において同じグループに属する関係、会社関係、親族関係等としてもよいし、単に申請先アプリ20に登録されているユーザの関係としてもよい。
また、管理サーバ200の記憶部220は、管理サーバ200とは異なるサーバ装置に備えられてもよい。そして、管理サーバ200の制御部230が管理サーバ200とは異なるサーバ装置に備えられた記憶部220に対してネットワークNWを介して通信することにより、記憶部220が備える各部が記憶する各情報を管理してもよい。
また、管理サーバ200とアプリサーバ300とが一体となったサーバ装置として構成されてもよい。
また、上記実施形態では、相互招待システム500に対応する対応アプリケーションがネイティブ型のアプリケーションである例を説明したが、これに限られるものではない。例えば、相互招待システム500に対応する対応アプリケーションは、当該対応アプリケーションに関する処理の実行主体がユーザ端末100ではなくアプリサーバ300となるような、所謂、ブラウザ型(Web型)のアプリケーションであってもよい。
なお、上述の制御部230またはSDK11の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述の各部の処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやWAN、LAN、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、CD−ROM等の非一過性の記録媒体であってもよい。また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部または外部に設けられた記録媒体も含まれる。配信サーバの記録媒体に記憶されるプログラムのコードは、端末装置で実行可能な形式のプログラムのコードと異なるものでもよい。すなわち、配信サーバからダウンロードされて端末装置で実行可能な形でインストールができるものであれば、配信サーバで記憶される形式は問わない。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後に端末装置で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
また、上述した機能の一部または全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。上述した各機能は個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。