private void updateExistedInstallation(NCMBInstallation installation, string path) { //デバイストークンを更新 NCMBQuery <NCMBInstallation> query = NCMBInstallation.GetQuery(); //ObjectId検索 installation.GetDeviceToken((token, error) => { query.WhereEqualTo("deviceToken", token); query.FindAsync((List <NCMBInstallation> objList, NCMBException findError) => { if (findError != null) { OnRegistration(findError.ErrorMessage); } else if (objList.Count != 0) { installation.ObjectId = objList [0].ObjectId; installation.SaveAsync((NCMBException installationUpdateError) => { if (installationUpdateError != null) { OnRegistration(installationUpdateError.ErrorMessage); } else { OnRegistration(""); } }); } }); }); }
//ネイティブでデバイストークン取得後に呼び出されます internal void onTokenReceived(string token) { _token = token; //onAnalyticsReceivedで使用。 string path = SearchPath(); //currentInstallationのパスを設定 //currentInstallationがあれば読み込み、更新の必要性を判定します string jsonText = ""; NCMBInstallation installation = null; if ((jsonText = ReadFile(path)) != "") //currentInstallationあり { installation = new NCMBInstallation(jsonText); } else { installation = new NCMBInstallation(); } installation.DeviceToken = _token; //端末情報をデータストアに登録 installation.SaveAsync((NCMBException saveError) => { //更新実行 if (saveError != null) { //対処可能なエラー if (saveError.ErrorCode.Equals(NCMBException.DUPPLICATION_ERROR)) { //過去に登録したデバイストークンと衝突。アプリの再インストール後などに発生 updateExistedInstallation(installation, path); } else if (saveError.ErrorCode.Equals(NCMBException.DATA_NOT_FOUND)) { //保存失敗 : 端末情報の該当データがない installation.ObjectId = null; installation.SaveAsync((NCMBException updateError) => { if (updateError != null) { OnRegistration(updateError.ErrorMessage); } else { OnRegistration(""); } }); } else { //想定外のエラー OnRegistration(saveError.ErrorMessage); } } else { OnRegistration(""); } }); }
/// <summary> /// <para>FindAsync用レスポンス処理</para> /// <para>_mergeFromServerを呼びレスポンスデータ(JSONテキスト)からNCMBObject(リスト)を作成する</para> /// </summary> private ArrayList _convertFindResponse(Dictionary <string, object> response) { ArrayList answer = new ArrayList(); List <object> results = (List <object>)response ["results"]; if (results == null) { Debug.Log("null results in find response"); } else { object objectClassName = null; string resultClassName = null; if (response.TryGetValue("className", out objectClassName)) { resultClassName = (string)objectClassName; } if (resultClassName == null) { resultClassName = this._className; } for (int i = 0; i < results.Count; i++) { NCMBObject obj = null; if (resultClassName.Equals("user")) { obj = new NCMBUser(); } else if (resultClassName.Equals("role")) { obj = new NCMBRole(); } else if (resultClassName.Equals("installation")) { obj = new NCMBInstallation(); /* * } else if (resultClassName.Equals ("push")) { * obj = new NCMBPush (); */ } else if (resultClassName.Equals("file")) { obj = new NCMBFile(); } else { obj = new NCMBObject(resultClassName); } obj._mergeFromServer((Dictionary <string, object>)results [i], true); answer.Add(obj); } } return(answer); }
/// <summary> /// 各型毎のURL作成 /// </summary> private string _getSearchUrl(string className) { string url = ""; if (className == null || className.Equals("")) { throw new ArgumentException("Not class name error. Please be sure to specify the class name."); /* * } else if (className.Equals ("push")) { * // プッシュ検索API * url = new NCMBPush ()._getBaseUrl (); */ } else if (className.Equals("installation")) { // 配信端末検索API url = new NCMBInstallation()._getBaseUrl(); } else if (className.Equals("file")) { // ファイル検索API url = new NCMBFile()._getBaseUrl(); } else if (className.Equals("user")) { // 会員検索API //url = new NCMBUser().getBaseUrl(NCMBUser.URL_TYPE_USER); url = new NCMBUser()._getBaseUrl(); } else if (className.Equals("role")) { // ロール検索API url = new NCMBRole()._getBaseUrl(); } else { // オブジェクト検索API url = new NCMBObject(_className)._getBaseUrl(); } return(url); }
/// <summary> /// 現在の配信端末情報を取得します。 /// </summary> /// <returns>配信端末情報 </returns> public static NCMBInstallation getCurrentInstallation() { NCMBInstallation currentInstallation = null; try { //ローカルファイルに配信端末情報があれば取得、なければ新規作成 string currentInstallationData = NCMBManager.GetCurrentInstallation(); if (currentInstallationData != "") { //ローカルファイルから端末情報を取得 currentInstallation = new NCMBInstallation(currentInstallationData); } else { currentInstallation = new NCMBInstallation(); } } catch (SystemException error) { throw new NCMBException(error); } return(currentInstallation); }
private void updateExistedInstallation (NCMBInstallation installation, string path) { //デバイストークンを更新 NCMBQuery<NCMBInstallation> query = NCMBInstallation.GetQuery (); //ObjectId検索 query.WhereEqualTo ("deviceToken", installation.DeviceToken); query.FindAsync ((List<NCMBInstallation> objList, NCMBException findError) => { if (findError != null) { OnRegistration (findError.ErrorMessage); } else if (objList.Count != 0) { installation.ObjectId = objList [0].ObjectId; installation.SaveAsync ((NCMBException installationUpdateError) => { if (installationUpdateError != null) { OnRegistration (installationUpdateError.ErrorMessage); } else { OnRegistration (""); } }); } }); }
//ネイティブでデバイストークン取得後に呼び出されます internal void onTokenReceived (string token) { _token = token; //onAnalyticsReceivedで使用。 string path = SearchPath (); //currentInstallationのパスを設定 //currentInstallationがあれば読み込み、更新の必要性を判定します string jsonText = ""; NCMBInstallation installation = null; if ((jsonText = ReadFile (path)) != "") { //currentInstallationあり installation = new NCMBInstallation (jsonText); } else { installation = new NCMBInstallation (); } installation.DeviceToken = _token; //端末情報をデータストアに登録 installation.SaveAsync ((NCMBException saveError) => { //更新実行 if (saveError != null) { //対処可能なエラー if (saveError.ErrorMessage.Equals ("Duplication Error")) { //過去に登録したデバイストークンと衝突。アプリの再インストール後などに発生 updateExistedInstallation (installation, path); } else { //想定外のエラー OnRegistration (saveError.ErrorMessage); } } else { OnRegistration (""); } }); }
/// <summary> /// 現在の配信端末情報を取得します。 /// </summary> /// <returns>配信端末情報 </returns> public static NCMBInstallation getCurrentInstallation() { NCMBInstallation currentInstallation = null; try { //null check NCMBManager manager = new NCMBManager (); //ローカルファイルに配信端末情報があれば取得、なければ新規作成 string currentInstallationData = manager.GetCurrentInstallation (); if (currentInstallationData != "") { //ローカルファイルから端末情報を取得 currentInstallation = new NCMBInstallation (currentInstallationData); } else { currentInstallation = new NCMBInstallation (); } } catch (SystemException error) { throw new NCMBException (error); } return currentInstallation; }