mixiアプリ » 技術仕様(RESTful API方式) » PC » 異なるビューに遷移してみよう
異なるビューに遷移してみよう
mixiアプリは、「Home画面」「プロフィール画面」そして「アプリ画面」というように、いくつかの画面で異なるコンテンツを表示した上で配置されます。それぞれ表示内容やユーザ体験は異なりますが、もちろんこれらの間を行ったり来たりすることができます。
OpenSocialでは、アプリケーションが配置されるページをViewと呼んでいます。異なるViewに自動的に遷移することや、同一のViewを再表示するためのAPIを提供しています。
Views機能の有効化
Viewに関するAPIは、gadgets.viewsという名前空間にて提供されています。ここで規定されている機能を利用するために、Gadget XMLファイルにて利用宣言を行うことが必要となります。
<?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs ...> ... <Require feature="views" /> </ModulePrefs> ... </Module>
上記のように、Requireタグを使って、Views機能を利用することを宣言します。
画面の遷移
画面の遷移を行うために、まず遷移先のView情報を取得します。これは、gadgets.views.getSupportedViews()関数を利用します。
var view = gadgets.views.getSupportedViews()["profile"];
上記では”profile”を指定することにより、ユーザのプロフィール画面を指定しています。これ以外にも、以下の名前をサポートしています。
- profile – プロフィール画面(show_friend.pl)
- home – Home画面(home.pl)
- canvas – アプリ画面(run_appli.pl)
次に、gadgets.views.requestNavigateTo()関数を利用します。この関数の呼び出しにより、画面が遷移されます。
gadgets.views.requestNavigateTo(view);
requestNavigateTo()関数の引数として、先ほど取得した遷移先のView情報を渡します。もし現在アプリ画面(run_appli.pl)にいて、この画面をリロードしたい場合には、”canvas”を指定してView情報を取得し、それを元にrequestNavigateTo()関数を呼び出すことで実現可能です。
パラメータの指定
requestNavigateTo()関数を使って画面の遷移を行う際に、任意のパラメータを指定することができます。渡したいパラメータは、requestNavigateTo()関数の第2引数に指定します。
var params = { image: "12345", mode: "edit" }; var view = gadgets.views.getSupportedViews()["canvas"]; gadgets.views.requestNavigateTo(view, params);
渡したいパラメータをJavaScriptのオブジェクトのプロパティとして定義します。このオブジェクトを、requestNavigateTo()関数の第2引数として指定します。これにより、遷移先の画面にて配置されたこのmixiアプリ内で、渡されたパラメータを取得することができます。パラメータの取得については、gadgets.views.getParams()関数を使うことで入手可能です。ただし、パラメータを取得できるのは、アプリ画面(”canvas” – run_appli.pl)のみとなります。
var params = gadgets.views.getParams(); var image = params["image"]; var mode = params["mode"]; // do something...
Ownerの指定
画面の遷移先にて配置されたmixiアプリについて、そのOwnerを変更したい場合があります。requestNavigateTo()関数の第3引数を使って、遷移先のOwnerを明示的に指定することが可能です。
var ownerId = ...; var view = gadgets.views.getSupportedViews()["canvas"]; gadgets.views.requestNavigateTo(view, null, ownerId);
このOwnerの指定は、遷移先の画面によって解釈が異なります。
- canvas – mixiアプリのOwnerが指定IDのユーザとなります。
- profile – プロフィール画面の対象ユーザが指定IDのユーザとなり、その画面に配置されたmixiアプリのOwnerがそのユーザとなります。
- home – Ownerの指定は無視されます。
また、既にOwnerが指定されていた場合(URLにowner_id=***が付与されていた場合)は、以下となります。
- 第3引数を使ってOwnerを指定しなかった場合は、requestNavigateTo()関数が呼び出される際のOwnerが引き継がれます。
- 第3引数を使ってOwnerを指定した場合は、requestNavigateTo()関数が呼び出される際のOwnerは引き継がれずに、指定したOwnerが適用されます。
あるユーザのプロフィール画面に遷移する際には、名前として”profile”を指定し、対象ユーザのIDをOwnerとして第3引数に指定すると良いでしょう。