mixiアプリ » 技術仕様(RESTful API方式) » スマートフォン » UserFlow APIの利用 » Communication Feed(コミュニケーションフィード)
Communication Feed(コミュニケーションフィード)
アプリ内でのユーザの行動を友人に対して通知するためのAPIをActivity APIと呼びます。ここでは、Activity APIを使用したコミュニケーションフィード送信について紹介します。
実際のコミュニケーションフィード送信は、以下の手順に従って行います。
- アクティビティの情報を持つopensocial.Activityオブジェクトを生成する。
- opensocial.requestCreateActivity()関数を使って、アクティビティの作成をサーバに依頼する。
次に、コミュニケーションフィードを送信するためのサンプルコードを以下に示します。
var params = {}; params[opensocial.Activity.Field.TITLE] = "Hello!"; var activity = opensocial.newActivity(params); opensocial.requestCreateActivity( activity, opensocial.CreateActivityPriority.HIGH, function(response) { if (response.hadError()) { var code = response.getErrorCode(); // do something... } else { // do something... } });
上記は、文字列のみを持つシンプルなActivityオブジェクトを作成する例です。アクティビティの文字列はopensocial.Activity.Field.TITLEにて指定します(アクティビティの文字列は、255文字までが有効になります。256文字目以降は切り捨てられますので、ご注意ください)。
そして、作成されたActivity オブジェクトの内容を元に、opensocial.requestCreateActivity()関数を使ってアクティビティの作成と公開をサーバに依頼します。
requestCreateActivity()関数の第1引数には、先ほど生成したActivityオブジェクトを指定します。第2引数には、opensocial.CreateActivityPriority.HIGHを指定します。第3引数は、アクティビティの公開処理が終了した後に呼び出されるコールバック関数を指定します。コールバック関数の引数として、 opensocial.ResponseItemオブジェクトが指定されます。このオブジェクトのhadError()関数を使って、アクティビティが正常に作成および公開されたかどうかを確認するようにしましょう。
コミュニケーションフィードの投稿を行うためのAPIを呼び出すと、そのまま投稿されるのではなく、ユーザに投稿してよいかどうかを問い合わせるダイアログが表示されます。ここでユーザが許可を行った場合にのみ、コミュニケーションフィードが投稿されます。
また、画像を伴うアクティビティも作成可能です。その場合は、opensocial.MediaItemオブジェクトを利用します。MediaItemオブジェクトは、opensocial.newMediaItem()関数を使って生成することができ、MIME Typeと画像のURL、そして画像を示すパラメータを引数として渡します。MediaItemオブジェクトは、opensocial.Activity.Field.MEDIA_ITEMSフィールドとして配列で指定します。mixiアプリでは、3個までMediaItemオブジェクトを配列に指定することが可能です。
以下は、MediaItem付きのコミュニケーションフィードを送信するサンプルです。
var mediaItem = opensocial.newMediaItem("image/gif", "http://your.server.host/image.gif"); var params = {}; params[opensocial.Activity.Field.TITLE] = "Hello with Media!"; params[opensocial.Activity.Field.MEDIA_ITEMS] = [mediaItem]; var activity = opensocial.newActivity(params);
また、アプリ起動時のパラメータを渡すこともできます。パラメータを指定できることで、特定のアクティビティからのアプリ起動時に動作を変えるなどの処理が可能になります。例えば、選択されたアイテムのIDとその個数をアクティビティに含めてmixiアプリ起動時にそれを受け取りたい場合には、以下のように記述します。
var data = {}; data[opensocial.Activity.Field.TITLE] = “Hello Activity”; var params = { item_id: 12345, count: 3 }; var escapedParams = encodeURIComponent(gadgets.json.stringify(params)); data[opensocial.Activity.Field.URL] = "http://mixi.jp/run_appli.pl?id=1234&appParams=" + escapedParams; var activity = opensocial.newActivity(data); opensocial.requestCreateActivity( activity, opensocial.CreateActivityPriority.HIGH, function(response) {…} );
appParamsにて指定されたパラメータは、ユーザがコミュニケーションフィードをクリックしてアプリを起動した際に、スタートURLに対してQuery String形式で渡されます。以下の例では、countとitem_idパラメータが追加されているのが分かります。
http://example.com/?count=3&item_id=12345&oauth_consumer_key=mixi.jp&oauth_nonce=0e8b549d fc89c076261f&oauth_signature=..&oauth_signature_method=RSA-SHA1&oauth_timestamp=128080741 1&oauth_version=1.0&opensocial_app_id=1234&opensocial_owner_id=xxxxx&opensocial_viewer_id =xxxxx
もし、アプリ画面ではなく、アプリ説明画面(view_appli.pl)に遷移させたい場合は、上記のURL内の”run_appli.pl”の部分を”view_appli.pl”に変更してください。
URLとして、http://mixi.jp/ 以外のサイトや、view_appli.plおよびrun_appli.pl以外の画面、異なるアプリIDの指定を行うとエラーになりますのでご注意ください。