Ejemplo n.º 1
0
 /// <summary>
 /// デバイストークンの取得を行います。 <br/>
 /// 通信結果が必要な場合はコールバックを指定するこちらを使用します。
 /// </summary>
 /// <param name="callback">コールバック</param>
 public void GetDeviceToken(NCMBGetCallback <String> callback)
 {
     if (this.ContainsKey("deviceToken") && this["deviceToken"] != null)
     {
         callback((string)this["deviceToken"], null);
     }
     else
     {
         new Thread(() => {
             for (int i = 0; i < 10; i++)
             {
                 if (NCMBManager._token != null)
                 {
                     this["deviceToken"] = NCMBManager._token;
                     break;
                 }
                 Thread.Sleep(500);
             }
             if (callback != null)
             {
                 if (this.ContainsKey("deviceToken") && this["deviceToken"] != null)
                 {
                     callback((string)this["deviceToken"], null);
                 }
                 else
                 {
                     callback(null, new NCMBException("Can not get device token"));
                 }
             }
         }).Start();
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 指定IDのオブジェクトを取得を行います。<br/>
        /// 通信結果を受け取るために必ずコールバックを設定を行います。
        /// </summary>
        /// <param name="objectId">  オブジェクトID</param>
        /// <param name="callback">  コールバック</param>
        public void GetAsync(string objectId, NCMBGetCallback <T> callback)
        {
            if (callback == null)
            {
                throw new ArgumentException("It is necessary to always set a callback.");
            }

            new AsyncDelegate(delegate {
                string url = _getSearchUrl(this._className);                 //クラス毎のURL作成
                //オブジェクト取得API
                url += "/" + objectId;
                ConnectType type = ConnectType.GET;                //メソッドタイプの設定
                //通信処理
                NCMBConnection con = new NCMBConnection(url, type, null, NCMBUser._getCurrentSessionToken());
                con.Connect(delegate(int statusCode, string responseData, NCMBException error) {
                    Dictionary <string, object> resultObj;
                    NCMBObject objectData = null;
                    try {
                        if (error == null)
                        {
                            resultObj  = MiniJSON.Json.Deserialize(responseData) as Dictionary <string, object>;
                            objectData = _convertGetResponse(resultObj);
                        }
                    } catch (Exception e) {
                        error = new NCMBException(e);
                    }
                    //引数はリスト(中身NCMBObject)とエラーをユーザーに返す
                    Platform.RunOnMainThread(delegate {
                        callback((T)objectData, error);
                    });
                    return;
                });
            }).BeginInvoke((IAsyncResult r) => {
            }, null);
        }