トップ 一覧 ping 検索 ヘルプ RSS ログイン

mixi アプリ データの永続化の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!mixi アプリ データの永続化
[mixi アプリ]
!!データ永続化のサンプル
{{ref_image mixi_app_parsist_dat.jpg}}
*登録ボタンで閲覧者に紐つけしたデータを永続化
*削除ボタンで永続データをクリア
!!ソース
!重要API
,API,概要
,[newFetchPersonAppDataRequest|http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/#opensocial.DataRequest.newFetchPersonAppDataRequest],指定した個人のアプリケーション データを要求するアイテムを作成。Map< PersonId, Map<String,Object>> を返します。返されるデータの値はすべて、JSON 
,[newUpdatePersonAppDataRequest|http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/#opensocial.DataRequest.newUpdatePersonAppDataRequest],指定した個人のアプリケーション フィールドを更新するように要求するアイテムを作成。処理時にデータは返さない
,[newRemovePersonAppDataRequest|http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/#opensocial.DataRequest.newRemovePersonAppDataRequest],指定した個人のデータストアから指定したキーを削除。処理時にデータは返さない
,[gadgets.util.unescapeString|http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/gadgets/#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="registRequest();"/>
         <input type="button" id="regist" value="登録" onclick="javascript:registRequest();"/>
         <input type="button" id="remove" value="削除" onclick="javascript:removeRequest();"/>
      ]]>
   </Content> 
 </Module>