public Task TestFollowUser() { var u = Utils.RandomUsername(); var p = Utils.RandomString(10); AVUser user = new AVUser() { Username = u, Password = p }; return(user.SignUpAsync().ContinueWith(t => { var query = new AVQuery <AVUser>(); return query.FirstAsync(); }).Unwrap().ContinueWith(s => { var friend = s.Result; return user.FollowAsync(friend.ObjectId); }).Unwrap().ContinueWith(x => { var rtn = x.Result; Assert.IsTrue(rtn); return Task.FromResult(0); })); }
static async void Test() { //string appId = "Eohx7L4EMfe4xmairXeT7q1w-gzGzoHsz"; //string appKey = "GSBSGpYH9FsRdCss8TGQed0F"; string appId = "FQr8l8LLvdxIwhMHN77sNluX-9Nh9j0Va"; string appKey = "MJSm46Uu6LjF5eNmqfbuUmt6"; AVRealtime.WebSocketLog(Console.WriteLine); AVClient.HttpLog(Console.WriteLine); AVClient.Initialize(appId, appKey); Websockets.Net.WebsocketConnection.Link(); var realtime = new AVRealtime(new AVRealtime.Configuration { ApplicationId = appId, ApplicationKey = appKey }); AVLiveQuery.Channel = realtime; var query = new AVQuery <AVObject>("GameObject").WhereEqualTo("objectId", "5cedee8e58cf480008de9caa"); //var query = new AVQuery<AVObject>("GameObject").WhereExists("objectId"); liveQuery = await query.SubscribeAsync(); liveQuery.OnLiveQueryReceived += OnLiveQueryReceived; Console.WriteLine("done"); }
public async Task Create() { Init(); var f = false; var query = new AVQuery <AVObject>("GameObject").WhereExists("objectId"); var liveQuery = await query.SubscribeAsync(); liveQuery.OnLiveQueryReceived += (sender, e) => { Console.WriteLine(e.Scope); f = true; }; var go = new AVObject("GameObject"); await go.SaveAsync(); Console.WriteLine(go.ObjectId); while (!f) { await Task.Delay(100); } Console.WriteLine("Test create done!"); }
IEnumerator QueryAll(System.Action <List <ToDoListItemData> > queryCallback) { AVQuery <AVObject> query = new AVQuery <AVObject> ("ToDoListItemData").WhereEqualTo("Deleted", false); var list = new List <ToDoListItemData>(); bool querySucceed = false; query.FindAsync().ContinueWith(t => { foreach (var obj in t.Result) { var itemData = new ToDoListItemData(); itemData.Title = obj["Title"] as string; itemData.Complete = bool.Parse(obj["Complete"].ToString()); itemData.Content = obj["Content"] as string; itemData.Deleted = bool.Parse(obj["Deleted"].ToString()); list.Add(itemData); } querySucceed = true; }); while (!querySucceed) { yield return(new WaitForEndOfFrame()); } queryCallback(list); }
public async Task Update() { Init(); var f = false; var query = new AVQuery <AVObject>("GameObject").WhereEqualTo("objectId", "5cdcd79bc8959c0068de3df2"); var liveQuery = await query.SubscribeAsync(); liveQuery.OnLiveQueryReceived += (sender, e) => { Console.WriteLine(e.Scope); Assert.AreEqual(e.Scope, "update"); f = true; }; var go = await query.FirstAsync(); go["name"] = "bbb"; await go.SaveAsync(); Console.WriteLine(go.ObjectId); while (!f) { await Task.Delay(100); f = true; } go["name"] = "ccc"; await go.SaveAsync(); Console.WriteLine("Test update done!"); }
/// <summary> /// 显示排行榜面板 /// </summary> void ShowRankPanel() { //获取GameScore数据对象,降序排列取前10个数据 AVQuery <AVObject> query = new AVQuery <AVObject>("GameScore").OrderByDescending("score").Limit(10); query.FindAsync().ContinueWith(t => { var results = t.Result; var scores = new List <string>(); //将数据转化为字符串 foreach (var result in results) { var score = result["playerName"] + ":" + result["score"]; scores.Add(score); } //由于当前是在子线程,对Unity中的物体操作需要在主线程操作,用以下方法转到主线程 MainThreadDispatcher.Send(_ => { foreach (var score in scores) { var item = Instantiate(RankItem); item.SetActive(true); item.GetComponent <Text>().text = score; item.transform.SetParent(RankItem.transform.parent); } RankPanel.SetActive(true); }, null); }); }
public static Task <AVLiveQuery <T> > CreateAsync <T>(this AVQuery <T> query, string sessionToken = "", CancellationToken cancellationToken = default(CancellationToken)) where T : AVObject { Dictionary <string, object> strs = new Dictionary <string, object>() { { "where", query.Condition }, { "className", query.GetClassName <T>() }, { "sessionToken", sessionToken } }; var command = new AVCommand("LiveQuery/subscribe", "POST", sessionToken: sessionToken, data: strs); return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command).OnSuccess(t => { var subscriptionId = t.Result.Item2["id"] as string; var queryId = t.Result.Item2["query_id"] as string; var rtn = new AVLiveQuery <T>(subscriptionId) { Query = query, QueryId = queryId }; return rtn; })); }
private void RefrushUser() { if (mUser == null) { return; } AVQuery <AVObject> query = new AVQuery <AVObject>("UserAvatars").WhereEqualTo("userObjectId", mUser.ObjectId); query.FindAsync().ContinueWith(t => { AVObject[] objs = t.Result.Cast <AVObject>().ToArray(); if (objs.Length != 0) { string avatarUrl = objs[0]["avatar"].ToString(); if (avatarUrl != "") { //var img = BitmapFrame.Create(new Uri(avatarUrl, UriKind.RelativeOrAbsolute)); //img.DownloadCompleted += (sender, e) => //{ // avatar.Source = (BitmapImage)sender; //}; avatar.Dispatcher.Invoke(() => avatar.Source = WebInteraction.GetImage(avatarUrl)); } } }); userName.Text = mUser.Username; }
public static void DB_QueryPlayerVillageData() { AVQuery<AVObject> query=new AVQuery<AVObject>("Village").WhereEqualTo("UserID", AVUser.CurrentUser.ObjectId); query.FirstAsync().ContinueWith(t =>{ AVObject villageObject = (t as Task<AVObject>).Result; VillageData villageData = new VillageData(); villageData.UserID = villageObject.Get<string>("UserID"); villageData.Defence = villageObject.Get<int>("Defence"); villageData.Power = villageObject.Get<int>("Power"); villageData.Trick = villageObject.Get<int>("Trick"); villageData.Belief = villageObject.Get<int>("Belief"); villageData.BeliefAll = villageObject.Get<int>("BeliefAll"); GameManager.Instance.LastGetVillageData = villageData; Debug.LogWarning(villageData.UserID); AVQuery<AVObject> buildingQuery = new AVQuery<AVObject>("Building").WhereEqualTo("UserID", AVUser.CurrentUser.ObjectId); buildingQuery.FindAsync().ContinueWith(t2=>{ List<BuildingData> buildingDataList = new List<BuildingData>(); foreach(AVObject buildingObject in (t2 as Task<IEnumerable<AVObject>>).Result) { BuildingData buildingData = new BuildingData(); buildingData.UserID = buildingObject.Get<string>("UserID"); buildingData.Type = (EBuildingType)buildingObject.Get<int>("Type"); buildingData.Level = buildingObject.Get<int>("Level"); buildingData.Value = buildingObject.Get<int>("Value"); buildingData.SlotID = buildingObject.Get<int>("SlotID"); buildingDataList.Add(buildingData); } GameManager.Instance.LastGetBuildingDataList = buildingDataList; GameManager.Instance.EventQueue.Queue.Enqueue(new EventItem(){Type = EEventItemType.PlayerVillageDataLoaded}); }); }); }
public static async void updateCloud(string foodname, string type) { if (type.Equals("11")) { AVQuery <AVObject> delete = new AVQuery <AVObject>("Fruit"); delete = delete.WhereEqualTo("name", foodname); await delete.FindAsync().ContinueWith(s => { IEnumerable <AVObject> boys = s.Result; AVObject ob = boys.ElementAt(0); ob.SaveAsync().ContinueWith(t => { // 保存成功之后,修改一个已经在服务端生效的数据,这里我们修改age // LeanCloud 只会针对指定的属性进行覆盖操作,本例中的name不会被修改 ob["state"] = false; ob.SaveAsync(); }); }); } if (type.Equals("22")) { AVQuery <AVObject> delete = new AVQuery <AVObject>("Vegetable"); delete = delete.WhereEqualTo("name", foodname); await delete.FindAsync().ContinueWith(s => { IEnumerable <AVObject> boys = s.Result; AVObject ob = boys.ElementAt(0); ob.SaveAsync().ContinueWith(t => { // 保存成功之后,修改一个已经在服务端生效的数据,这里我们修改age // LeanCloud 只会针对指定的属性进行覆盖操作,本例中的name不会被修改 ob["state"] = false; ob.SaveAsync(); }); }); } if (type.Equals("33")) { AVQuery <AVObject> delete = new AVQuery <AVObject>("Food"); delete = delete.WhereEqualTo("name", foodname); await delete.FindAsync().ContinueWith(s => { IEnumerable <AVObject> boys = s.Result; AVObject ob = boys.ElementAt(0); ob.SaveAsync().ContinueWith(t => { // 保存成功之后,修改一个已经在服务端生效的数据,这里我们修改age // LeanCloud 只会针对指定的属性进行覆盖操作,本例中的name不会被修改 ob["state"] = false; ob.SaveAsync(); }); }); } }
private void QueryList() { var data = new AVObject("List"); data["name"] = "hello"; data["Parameters"] = new List <int>(new int[] { 3, 2, 1 }); data.SaveAsync().ContinueWith(t => { if (t.IsFaulted || t.IsCanceled) { Debug.Log("Failed"); Debug.Log(t.Exception.Message); } else { Debug.Log("Success"); } }).ContinueWith(t => { var query = new AVQuery <AVObject>("List").FindAsync().ContinueWith(t2 => { foreach (var result in t2.Result) { // var hello = result.Get<string>("name"); // Debug.Log(hello); var list = result.Get <IList <int> >("Parameters"); Debug.Log(list.ToString()); } }); }); }
public async void LoadContactAsync() { #region 获取所有系统中的用户,注:理论上这里是获取该用户的好友列表,以下代码仅仅是为了演示聊天的基础功能,所以默认是获取所有用户的列表。 AVQuery <AVUser> query = new AVQuery <AVUser>(); var users = await query.FindAsync(); if (users != null) { foreach (var u in users) { if (u.ObjectId != AVUser.CurrentUser.ObjectId)//当前用户不显示在联系人列表里面。 { AllContacts.Add(new DemoContact(u)); } } ContactsListVM = AlphaKeyGroup <DemoContact> .CreateGroups(AllContacts, Thread.CurrentThread.CurrentUICulture, (DemoContact s) => { return(s.Nickname); }, true); NotifyPropertyChanged("ContactsListVM"); } #endregion }
public async Task Enter() { var f = false; var query = new AVQuery <AVObject>("Account").WhereContains("name", "x"); var liveQuery = await query.SubscribeAsync(); liveQuery.OnLiveQueryReceived += (sender, e) => { Console.WriteLine(e.Scope); Assert.AreEqual(e.Scope, "enter"); f = true; }; var q = AVObject.GetQuery("Account"); var go = await q.GetAsync("5df7268cd4b56c00748e91af"); go["name"] = "xxx"; await go.SaveAsync(); Console.WriteLine(go.ObjectId); while (!f) { await Task.Delay(100); } go["name"] = "yyy"; await go.SaveAsync(); Console.WriteLine("Test enter done!"); }
public async Task Leave() { var f = false; var query = new AVQuery <AVObject>("Account").WhereContains("name", "s"); var liveQuery = await query.SubscribeAsync(); liveQuery.OnLiveQueryReceived += (sender, e) => { Console.WriteLine(e.Scope); Assert.AreEqual(e.Scope, "leave"); f = true; }; var q = AVObject.GetQuery("Account"); var go = await q.GetAsync("5df0b08f5620710073a95ccd"); go["name"] = "aaa"; await go.SaveAsync(); Console.WriteLine(go.ObjectId); while (!f) { await Task.Delay(100); f = true; } go["name"] = "sss"; await go.SaveAsync(); Console.WriteLine("Test leave done!"); }
public async Task Delete() { var f = false; var go = new AVObject("Todo"); await go.SaveAsync(); var objectId = go.ObjectId; var query = new AVQuery <AVObject>("Todo").WhereEqualTo("objectId", objectId); var liveQuery = await query.SubscribeAsync(); liveQuery.OnLiveQueryReceived += (sender, e) => { Console.WriteLine(e.Scope); Assert.AreEqual(e.Scope, "delete"); f = true; }; await go.DeleteAsync(); Console.WriteLine("object delete done"); while (!f) { await Task.Delay(100); f = true; } Console.WriteLine("Test delete done!"); }
public async Task Update() { var f = false; var query = new AVQuery <AVObject>("Account"); query = query.WhereLessThan("createdAt", DateTime.Now); var liveQuery = await query.SubscribeAsync(); liveQuery.OnLiveQueryReceived += (sender, e) => { Console.WriteLine(e.Scope); Assert.AreEqual(e.Scope, "update"); f = true; }; var go = await query.FirstAsync(); go["name"] = "bbb"; await go.SaveAsync(); Console.WriteLine(go.ObjectId); while (!f) { await Task.Delay(100); f = true; } go["name"] = "ccc"; await go.SaveAsync(); Console.WriteLine("Test update done!"); }
public async Task InitSessionGroups() { var teamVM = ServiceLocator.Current.GetInstance <TeamViewModel>(); var conversationQuery = new AVQuery <AVObject>("_Conversation") .WhereEqualTo("team", teamVM.SelectdTeam).Limit(200); var conversations = (await conversationQuery.FindAsync()) .Select(x => AVIMConversation.CreateWithData(x, client)); foreach (var conversation in conversations) { var session = new ConversationSessionViewModel(conversation); if (conversation.ContainsKey("category")) { var category = conversation.Get <int>("category"); if (conversation.MemberIds.Contains(client.ClientId)) { var group = this.SessionGroups.First(g => g.Category == category); if (group != null) { group.Sessions.Add(session); } } else { var group = this.SessionGroups.First(g => g.Category == -1); if (group != null) { group.Sessions.Add(session); } } } } }
// //显示排行榜界面 // void ShowRankPanel() { AVQuery <AVObject> query = new AVQuery <AVObject>("GameScore").OrderByDescending("score").Limit(10); query.FindAsync().ContinueWith(t => { var results = t.Result; var scores = new List <string>(); foreach (var result in results) { var score = result["playerName"] + " : " + result["score"]; scores.Add(score); } MainThreadDispatcher.Send(_ => { foreach (var score in scores) { var item = Instantiate(RankItem); item.GetComponent <Text>().text = score; item.transform.SetParent(RankItem.transform.parent); } RankPanel.SetActive(true); }, null); }); }
/// <summary> /// AVQuery 订阅 AVLiveQuery 的扩展方法 /// </summary> /// <returns>AVLiveQuery 对象</returns> /// <param name="query">Query.</param> /// <param name="cancellationToken">Cancellation token.</param> /// <typeparam name="T">The 1st type parameter.</typeparam> public static async Task <AVLiveQuery <T> > SubscribeAsync <T>(this AVQuery <T> query, CancellationToken cancellationToken = default(CancellationToken)) where T : AVObject { var liveQuery = new AVLiveQuery <T>(query); liveQuery = await liveQuery.SubscribeAsync(); return(liveQuery); }
private void OnClickQueryBtn() { var query = new AVQuery <ACCOUNT>(); query.FindAsync().ContinueWith(t => { ACCOUNT first = t.Result.FirstOrDefault(); PanelManager.MessageBox.Show(first.ToString()); }); }
/// <summary> /// 查询一张表 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static Task QueryData <T>() where T : AVObject { var query = new AVQuery <T>(); return(query.FindAsync().ContinueWith(t => { T first = t.Result.FirstOrDefault(); PanelManager.MessageBox.Show(first.ToString()); })); }
private static void GetModelDataListFromCloudLC(bool publicOnly, bool includeUsername, Action <List <ModelData> > successAction, Action <string> failedAction) { var query = new AVQuery <AVObject>("ServerData"); if (publicOnly) { query = query.WhereEqualTo("is_private", false); } query = query.OrderByDescending("updateAt"); query.FindAsync().ContinueWith(t => { if (t.IsFaulted || t.IsCanceled) { if (failedAction != null) { failedAction(t.Exception.Message); } } else { if (successAction != null) { IEnumerable <AVObject> avDatas = t.Result; var results = new List <ModelData>(); foreach (var avData in avDatas) { var data = new ModelData(); data.objectId = avData.ObjectId; data.name = avData.Get <string>("name"); data.isPrivate = avData.Get <bool>("is_private"); data.unitSize = avData.Get <int>("unit_size"); data.cpuCoresCount = avData.Get <int>("cpu_count"); data.cpuHz = avData.Get <int>("cpu_hz"); data.hddBaysCount = avData.Get <int>("hdd_count"); data.memorySpeed = avData.Get <int>("memory_speed"); data.memoryCapacity = PairData.FromListOfIntsToList(avData.Get <IList <int> >("memory_capacity")); data.raid = avData.Get <string>("raid"); data.hdd = PairData.FromListOfIntsToList(avData.Get <IList <int> >("hdd")); // data.gpu = (List<string>) (avData.Get<IList<string>>("gpu")); results.Add(data); } successAction(results); } } }); }
public Task TestSubClassQuery() { AVObject.RegisterSubclass <Employee>(); var query = new AVQuery <Employee>(); return(query.FindAsync().ContinueWith(t => { var first = t.Result.FirstOrDefault(); Assert.True(first.GetType() == typeof(Employee)); })); }
public void TestGetQuery() { AVObject.RegisterSubclass <SubClass>(); AVQuery <AVObject> query = AVObject.GetQuery("UnregisteredSubClass"); Assert.AreEqual("UnregisteredSubClass", query.GetClassName()); Assert.Throws <ArgumentException>(() => AVObject.GetQuery("SubClass")); AVPlugins.Instance.SubclassingController.UnregisterSubclass(typeof(SubClass)); }
public Task CQLQueryWithPlaceholderTest() { string cql = "select * from Todo where location=?"; return(AVQuery <AVObject> .DoCloudQueryAsync(cql, "会议室").ContinueWith(t => { Assert.False(t.IsFaulted); Assert.False(t.IsCanceled); Assert.True(t.Result.Count() > 0); return Task.FromResult(0); })); }
public async Task <IEnumerable <AVUser> > LoadAllUsersInTeam(string teamId = null, Team team = null) { var wrappedTeam = wrapTeam(teamId, team); var query = new AVQuery <AVObject>("Team_User") .WhereEqualTo("team", wrappedTeam) .Limit(limit) .Include("user"); var tu = await query.FindAsync(); return(tu.Select(x => x.Get <AVUser>("user"))); }
private async void SaveScores() { try { var studentId = (await app.Assist.GetStudentInfo()).StudentId; var query = new AVQuery <AVObject>("CourseScore").WhereEqualTo("stuKey", studentId); var objs = await query.FindAsync(); List <AVObject> saving = new List <AVObject>(); foreach (var score in Scores) { bool has = false; var fullName = "[" + score.CourseId + "]" + score.CourseName; foreach (var obj in objs) { if (Convert.ToString(obj["courseName"]) == fullName) { has = true; break; } } if (has) { continue; } if (Double.TryParse(score.Score1, out double dScore1) && Double.TryParse(score.Score2, out double dScore2)) { var o = new AVObject("CourseScore") { ["stuKey"] = studentId, ["courseName"] = fullName, ["term"] = score.Semester, ["score1"] = dScore1, ["score2"] = dScore2, ["score"] = score.Score }; saving.Add(o); } } await AVObject.SaveAllAsync(saving); } catch { } }
public async Task <IEnumerable <AVIMConversation> > LoadAllConversationsInTeamAsync(string teamId = null, Team team = null) { var wrappedTeam = wrapTeam(teamId, team); var query = new AVQuery <AVObject>("_Conversation") .WhereEqualTo("team", wrappedTeam).Limit(300); var result = await query.FindAsync(); return(result.Select(x => { return AVIMConversation.CreateWithData(x, client); })); }
private async void Button_Click_1(object sender, RoutedEventArgs e) { AVQuery <AVObject> findGirlType = new AVQuery <AVObject>("GirlType").WhereEqualTo("typeName", "Hot"); await findGirlType.FindAsync().ContinueWith(t => { var hot = t.Result.First();//可能有多个标记为Hot的GirType,但是“弱水三千只取一瓢”。 var myself = new AVObject("Boy"); myself["name"] = "AVOS Cloud User 2"; myself["age"] = 18; myself["focusType"] = hot;//关联被查询出来的对象。 return(myself.SaveAsync()); }); }
/// <summary> /// 根据ID查询,此方法不适合即时查询(适用于静态数据) /// </summary> /// <param name="table"></param> /// <param name="id"></param> /// <returns></returns> public static void QuerySingleDataByID(DataTable table, string id) { AVQuery <AVObject> query = new AVQuery <AVObject>(table.ToString()); AVObject dataObject = null; query.GetAsync(id).ContinueWith(t => { dataObject = t.Result;//如果成功获取,t.Result将是一个合法有效的AVObject //acc.UserName = dataObject.Get<string>(Account.UserName.ToString()); //acc.Password = dataObject.Get<string>(Account.Password.ToString()); //acc.PhoneNumber = dataObject.Get<string>(Account.PhoneNumber.ToString()); }); }
public Task <IEnumerable <IObjectState> > FindAsync <T>(AVQuery <T> query, AVUser user, CancellationToken cancellationToken) where T : AVObject { string sessionToken = user != null ? user.SessionToken : null; return(FindAsync(query.ClassName, query.BuildParameters(), sessionToken, cancellationToken).OnSuccess(t => { var items = t.Result["results"] as IList <object>; return (from item in items select AVObjectCoder.Instance.Decode(item as IDictionary <string, object>, AVDecoder.Instance)); })); }
private async void Button_Click_1(object sender, RoutedEventArgs e) { AVQuery<AVObject> findGirlType = new AVQuery<AVObject>("GirlType").WhereEqualTo("typeName", "Hot"); await findGirlType.FindAsync().ContinueWith(t => { var hot = t.Result.First();//可能有多个标记为Hot的GirType,但是“弱水三千只取一瓢”。 var myself = new AVObject("Boy"); myself["name"] = "AVOS Cloud User 2"; myself["age"] = 18; myself["focusType"] = hot;//关联被查询出来的对象。 return myself.SaveAsync(); }); }
// Use this for initialization void Start() { renderer.enabled = true; AVQuery<AVObject> query = new AVQuery<AVObject>("GameScore");//建立对GameScore的查询。 query.Limit(1).OrderByDescending("score").FindAsync().ContinueWith(t =>//获取排名最高的玩家,这算法未必是最佳选择,但是这里只提供一种最简单的算法。 { var results = t.Result.FirstOrDefault(); var name = results["playerName"].ToString(); var score = (int)results["score"]; PlayerPrefs.SetInt("highscore", score);//将最高分记录到系统,下次再打开游戏的时候,会刷新这个最高分。 }); }
public void RefreshUI() { AVQuery<AVUser> batchQuery = new AVQuery<AVUser>().WhereContainedIn("objectId", AVConversation.MemberIds); batchQuery.FindAsync().ContinueWith(t => { var result = t.Result; foreach (var u in result) { if (App.ViewModel.CurrentClient.ClientId != u.ObjectId) { ContactsInCoversation.Add(new DemoContact(u)); } } NotifyPropertyChangedOnUI("ConversationPageTitle"); }); NotifyPropertyChangedOnUI("ContactsInCoversation"); }
public void Fight() { var query = new AVQuery<AVObject>("Building").WhereEqualTo("UserID", CurMatchUser.ObjectId); query.FindAsync().ContinueWith(t=>{ List<BuildingData> buildingDataList = new List<BuildingData>(); foreach(AVObject buildingObject in (t as Task<IEnumerable<AVObject>>).Result) { BuildingData buildingData = new BuildingData(); buildingData.UserID = buildingObject.Get<string>("UserID"); buildingData.Type = (EBuildingType)buildingObject.Get<int>("Type"); buildingData.Level = buildingObject.Get<int>("Level"); buildingData.Value = buildingObject.Get<int>("Value"); buildingData.SlotID = buildingObject.Get<int>("SlotID"); buildingDataList.Add(buildingData); } GameManager.Instance.LastMatchBuildingDataList = buildingDataList; GameManager.Instance.EventQueue.Queue.Enqueue(new EventItem(){Type = EEventItemType.EnemyBuildingLoaded}); }); }
public void Search() { var query = new AVQuery<AVObject>("Village").WhereNotEqualTo("UserID", AVUser.CurrentUser.ObjectId); query.FindAsync().ContinueWith(t=>{ List<AVObject> objList = new List<AVObject>(); objList.AddRange((t as Task<IEnumerable<AVObject>>).Result); if(objList.Count > 0) { var rand = new System.Random(); int r = rand.Next(objList.Count); AVObject villageObject = objList[r]; AVUser.Query.GetAsync(villageObject.Get<string>("UserID")).ContinueWith(t2=>{ AVUser user = (t2 as Task<AVUser>).Result; GameManager.Instance.LastMatchUser = user; GameManager.Instance.LastMathVillage = villageObject; GameManager.Instance.EventQueue.Queue.Enqueue(new EventItem(){Type = EEventItemType.MatchFound}); }); } }); }
private void Query () { var model = new AVObject ("Model1"); model ["name"] = "TestModel"; model ["cpucount"] = 3; model.SaveAsync().ContinueWith(t=>{ if (!t.IsFaulted) { Debug.Log("Success!"); } else { Debug.Log("Error!"); } var query = new AVQuery<AVObject>("Model1"); return query.GetAsync("551d1952e4b062519520cf96"); }).Unwrap().ContinueWith(t => { var modelGot = t.Result; Debug.Log(modelGot.Get<string>("name")); Debug.Log(modelGot.Get<int>("cpucount")); }); }
public async void LoadContactAsync() { #region 获取所有系统中的用户,注:理论上这里是获取该用户的好友列表,以下代码仅仅是为了演示聊天的基础功能,所以默认是获取所有用户的列表。 AVQuery<AVUser> query = new AVQuery<AVUser>(); var users = await query.FindAsync(); if (users != null) { foreach (var u in users) { if (u.ObjectId != AVUser.CurrentUser.ObjectId)//当前用户不显示在联系人列表里面。 AllContacts.Add(new DemoContact(u)); } ContactsListVM = AlphaKeyGroup<DemoContact>.CreateGroups(AllContacts, Thread.CurrentThread.CurrentUICulture, (DemoContact s) => { return s.Nickname; }, true); NotifyPropertyChanged("ContactsListVM"); } #endregion }
public Task TestSendPush() { MutableAVState state = new MutableAVState { Query = AVInstallation.Query }; AVPush thePush = new AVPush(); AVPushPlugins.Instance = new AVPushPlugins { PushController = GetMockedPushController(state) }; thePush.Alert = "Alert"; state.Alert = "Alert"; return thePush.SendAsync().ContinueWith(t => { Assert.True(t.IsCompleted); Assert.False(t.IsFaulted); thePush.Channels = new List<string> { { "channel" } }; state.Channels = new List<string> { { "channel" } }; return thePush.SendAsync(); }).Unwrap().ContinueWith(t => { Assert.True(t.IsCompleted); Assert.False(t.IsFaulted); AVQuery<AVInstallation> query = new AVQuery<AVInstallation>("aClass"); thePush.Query = query; state.Query = query; return thePush.SendAsync(); }).Unwrap().ContinueWith(t => { Assert.True(t.IsCompleted); Assert.False(t.IsFaulted); }); }
public AVPush() { this.mutex = new object(); this.query = AVInstallation.Query; }
public static Task SendDataAsync(IDictionary<string, object> data, AVQuery<AVInstallation> query) { return new AVPush() { Query = query, Data = data }.SendAsync(); }
// 获取特定玩家信息 public void NetGetOtherByID(string objectID, Action callback) { GameManager.Instance.AsyncBeginWait(); var query = new AVQuery<AVObject>("Village").WhereEqualTo("UserID", objectID); query.FindAsync().ContinueWith(t=>{ List<AVObject> objList = new List<AVObject>(); objList.AddRange((t as Task<IEnumerable<AVObject>>).Result); if(objList.Count > 0) { AVObject villageObject = objList[0]; VillageData villageData = new VillageData(); villageData.AVObject = villageObject; AVQuery<AVObject> buildingQuery = new AVQuery<AVObject>("Building").WhereEqualTo("UserID", villageData.UserID); buildingQuery.FindAsync().ContinueWith(t2=>{ List<BuildingData> buildingDataList = new List<BuildingData>(); foreach(AVObject buildingObject in (t2 as Task<IEnumerable<AVObject>>).Result) { BuildingData buildingData = new BuildingData(); buildingData.AVObject = buildingObject; buildingDataList.Add(buildingData); } GameManager.Instance.AsyncEndWait(()=>{ OtherVillageData = villageData; OtherVillageData.BuildingDataList = buildingDataList; if(callback != null) callback(); }); }); } }); }
private void QueryList () { var data = new AVObject("List"); data["name"] = "hello"; data["Parameters"] = new List<int>(new int[] {3, 2, 1}); data.SaveAsync().ContinueWith(t => { if (t.IsFaulted || t.IsCanceled) { Debug.Log("Failed"); Debug.Log(t.Exception.Message); } else { Debug.Log("Success"); } }).ContinueWith(t => { var query = new AVQuery<AVObject>("List").FindAsync().ContinueWith(t2 => { foreach (var result in t2.Result) { // var hello = result.Get<string>("name"); // Debug.Log(hello); var list = result.Get<IList<int>>("Parameters"); Debug.Log(list.ToString()); } }); }); }
// 网络-获取随机玩家 public void NetGetRandomOther(Action callback) { GameManager.Instance.AsyncBeginWait(); var query = new AVQuery<AVObject>("Village").WhereNotEqualTo("UserID", AVUser.CurrentUser.ObjectId); Debug.Log("开始查找敌人村落"); query.FindAsync().ContinueWith(t=>{ List<AVObject> objList = new List<AVObject>(); objList.AddRange((t as Task<IEnumerable<AVObject>>).Result); if(objList.Count > 0) { var rand = new System.Random(); int r = rand.Next(objList.Count); AVObject villageObject = objList[r]; VillageData villageData = new VillageData(); villageData.AVObject = villageObject; Debug.Log("开始查找敌人建筑"); AVQuery<AVObject> buildingQuery = new AVQuery<AVObject>("Building").WhereEqualTo("UserID", villageData.UserID); buildingQuery.FindAsync().ContinueWith(t2=>{ List<BuildingData> buildingDataList = new List<BuildingData>(); foreach(AVObject buildingObject in (t2 as Task<IEnumerable<AVObject>>).Result) { BuildingData buildingData = new BuildingData(); buildingData.AVObject = buildingObject; buildingDataList.Add(buildingData); } Debug.Log("找到敌人建筑"); GameManager.Instance.AsyncEndWait(()=>{ OtherVillageData = villageData; OtherVillageData.BuildingDataList = buildingDataList; if(callback != null) callback(); }); }); } }); }
// 网络-获取玩家村落信息 public void NetQueryPlayerVillageData(Action callback = null) { GameManager.Instance.AsyncBeginWait(); AVQuery<AVObject> query=new AVQuery<AVObject>("Village").WhereEqualTo("UserID", AVUser.CurrentUser.ObjectId); query.FirstAsync().ContinueWith(t =>{ AVObject villageObject = (t as Task<AVObject>).Result; VillageData villageData = new VillageData(); villageData.AVObject = villageObject; AVQuery<AVObject> buildingQuery = new AVQuery<AVObject>("Building").WhereEqualTo("UserID", AVUser.CurrentUser.ObjectId); buildingQuery.FindAsync().ContinueWith(t2=>{ List<BuildingData> buildingDataList = new List<BuildingData>(); foreach(AVObject buildingObject in (t2 as Task<IEnumerable<AVObject>>).Result) { BuildingData buildingData = new BuildingData(); buildingData.AVObject = buildingObject; buildingDataList.Add(buildingData); } GameManager.Instance.AsyncEndWait(()=>{ PlayerManager.Instance.PlayerVillageData = villageData; PlayerManager.Instance.PlayerVillageData.BuildingDataList = new List<BuildingData>(); PlayerManager.Instance.PlayerVillageData.BuildingDataList = buildingDataList; if(callback != null) callback(); }); }); }); }
public static Task SendAlertAsync(string alert, AVQuery<AVInstallation> query) { return new AVPush() { Query = query, Alert = alert }.SendAsync(); }
/// <summary> /// Pushes an arbitrary payload to every device matching target. This is shorthand for: /// /// <code> /// var push = new AVPush(); /// push.Query = query /// push.Data = data; /// return push.SendAsync(); /// </code> /// </summary> /// <param name="data">A push payload. See the AVPush.Data property for more information.</param> /// <param name="query">A query filtering the devices which should receive this Push Notification.</param> public static Task SendDataAsync(IDictionary<string, object> data, AVQuery<AVInstallation> query) { var push = new AVPush(); push.Query = query; push.Data = data; return push.SendAsync(); }
/// <summary> /// Pushes a simple message to every device matching the target query. This is shorthand for: /// /// <code> /// var push = new AVPush(); /// push.Query = query; /// push.Data = new Dictionary<string, object>{{"alert", alert}}; /// return push.SendAsync(); /// </code> /// </summary> /// <param name="alert">The alert message to send.</param> /// <param name="query">A query filtering the devices which should receive this Push Notification.</param> public static Task SendAlertAsync(string alert, AVQuery<AVInstallation> query) { var push = new AVPush(); push.Query = query; push.Alert = alert; return push.SendAsync(); }