mixiアプリ アクティビティーのリンク先を変える

マイミクへ、自分(ビュアー)のアプリの状況や情報を通知する
重要な機能であるアクティビティー。
アクティビティーのリンク先は、基本 home viewになってしまうが
opensocial.Activity.Field.URLを設定して
リンク先を変更してみる。

d01_01_3

■アクティビティーの制限

アクティビティーのリンクの飛び先は
基本home viewになるが
opensocial.Activity.Field.URL パラメータを設定することで
変更することができる。

ただしmixiアプリでは
opensocial.Activity.Field.URL に
設定できるURLには制限があるようで
mixiドメインから離れるようなURLは設定ができない。

■requestNavigateTo()の第2引数と gadgets.views.getParams()

gadgets.views.requestNavigateTo() の第2引数にObjectを設定すると
パラメータが渡された状態でViewを切り替えることができる。

※これに関しては、こちらのページなどが参考になります。
1つのviewで複数のページを表示する

このパラメータの値は、gadgets.views.getParams()で取得できるとのことで
1つのview(home)をパラメータの渡していくことで
複数のページを実現するようなことができるようです。

第2引数をしていするとこんなURLになる

http://mixi.jp/run_appli.pl?id=123456&appParams={‘p1′:’hoge’,’p2′:’hugo’,’p3′:’hege’}

※appParams内容は、escapeされる。

■アクティビティーに パラメータ付のアプリURLを設定する

話はもどって、アクティビティー。

requestNavigateTo() の第2引数を設定した場合に作られる
パラメータ付きURLの書式は、アクティビティーの
opensocial.Activity.Field.URL パラメータに設定することができた。

この方法で、アクティビティーの飛び先にパラメータをつけ
表示を切り替えたりすることができるようです。

次のviewへ渡したいパラメータは
パラメータ名 appParams で
JSON形式で escapeしたもので設定する必要があるようです。

こんなかんじ。

[js]
var aplid = “123456”;
var mixipath = “http://mixi.jp/”;

var jsonobj = “”
jsonobj += ‘{“p1″:”hoge”‘;
jsonobj += ‘”,”p2″:”hugo”‘;
jsonobj += ‘”, “p3″:”hege”‘
jsonobj += ‘”}’;
var escparam = escape(jsonobj);

var params = {};
params[opensocial.Activity.Field.TITLE] = “アクティビティー文字列”;
params[opensocial.Activity.Field.URL] = mixipath + ‘run_appli.pl?id=’ + aplid + ‘&appParams=’ + escparam;

var activity = opensocial.newActivity(params);
opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, function(response){
if (response.hadError()) {
alert(“has error”);
} else {
alert(“success”);
}
});
[/js]