トップ 差分 一覧 ping ソース 検索 ヘルプ PDF RSS ログイン

mixi アプリ データの永続化



目次



記事一覧

キーワード

mixi アプリ データの永続化

[mixi アプリ]

 データ永続化のサンプル

  • 登録ボタンで閲覧者に紐つけしたデータを永続化
  • 削除ボタンで永続データをクリア

 ソース

重要API

API 概要
newFetchPersonAppDataRequest 指定した個人のアプリケーション データを要求するアイテムを作成。Map< PersonId, Map<String,Object>> を返します。返されるデータの値はすべて、JSON
newUpdatePersonAppDataRequest 指定した個人のアプリケーション フィールドを更新するように要求するアイテムを作成。処理時にデータは返さない
newRemovePersonAppDataRequest 指定した個人のデータストアから指定したキーを削除。処理時にデータは返さない
gadgets.util.unescapeString escapeString を元に戻す
<?xml version="1.0" encoding="UTF-8" ?> 
<Module>
  <ModulePrefs title="parsistance date sample">
    <Require feature="opensocial-0.8"/>
  </ModulePrefs> 
  <Content type="html">
     <![CDATA[ 
        <script type="text/javascript">
            var key1 = "key_memo";
            // 永続データ読み込み要求
            function loadRequest() {
                var req = opensocial.newDataRequest();
                req.add(req.newFetchPersonRequest("VIEWER"), "viewer");
                var fields = [key1];
                req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), "viewer_data");
                req.send(loadResponse);
            }
            // 永続データ読み込み応答
            function loadResponse(data) {
                var viewer = data.get("viewer").getData();
                var viewer_data = data.get("viewer_data");
                if (viewer_data.hadError()) {
                    document.getElementById("message").innerHTML = data.getErrorMessage();
                    return;
                }
                var dataAry = viewer_data.getData()[viewer.getId()];
                var memo = (dataAry==null)?"":dataAry[key1];
                var txtMemo = document.getElementById("memo");
                txtMemo.value = gadgets.util.unescapeString(memo);
                txtMemo.disabled = false;               
            }
            // 永続データ保存要求
            function registRequest() {
                var req = opensocial.newDataRequest();
                var txtMemo = document.getElementById("memo");
                txtMemo.disabled = true;
                req.add(req.newUpdatePersonAppDataRequest("VIEWER", key1, txtMemo.value));
                req.send(registResponse);
            }
            // 永続データ保存応答
            function registResponse(data) {
                if (data.hadError()) {
                    document.getElementById("message").innerHTML = data.getErrorMessage();  
                    return;
                }
                loadRequest();
            }
            // 永続データ削除要求
            function removeRequest() {
                var req = opensocial.newDataRequest();
                req.add(req.newFetchPersonRequest("VIEWER"), "viewer");
                var fields = [key1];
                req.add(req.newRemovePersonAppDataRequest("VIEWER", fields), "viewer_data");
                req.send(loadResponse);
            }
            gadgets.util.registerOnLoadHandler(loadRequest);
        </script>
        <p style="text-weight:bold;">Memo</p>
        <textarea id="memo" rows="3" cols="20">
        </textarea>
        <div id="message"/>
        <input type="button" id="regist" value="登録" onclick="javascript:registRequest();"/>
        <input type="button" id="remove" value="削除" onclick="javascript:removeRequest();"/>
     ]]>
  </Content> 
</Module>



YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto

Copyright© 矢木 浩人 All Rights Reserved.