mixi Developer Center (ミクシィ デベロッパーセンター)

mixiアプリ

mixiアプリ » 技術仕様(RESTful API方式) » PC » 異なるビューに遷移してみよう

異なるビューに遷移してみよう

mixiアプリは、「Home画面」「プロフィール画面」そして「アプリ画面」というように、いくつかの画面で異なるコンテンツを表示した上で配置されます。それぞれ表示内容やユーザ体験は異なりますが、もちろんこれらの間を行ったり来たりすることができます。

navigateto

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引数に指定すると良いでしょう。

このページの上部へ