/// <summary> /// ローカルもしくはサーバー取得に失敗した場合Falseが返されます。Falseでもデーターが存在する可能性があります。 /// </summary> public async Task <bool> Get() { if (!await GetFromLocal()) // ローカルから取得できない場合サーバーからの情報をすべて利用 { if (FriendProfiles.Count <= 0) { return(false); } UserProfiles = new List <UserProfile>(); var my = await MeChat.Connection.GetUserProfile(MeChatHost.MeChat.Config.Id); if (my == null) { return(false); } UserProfiles.Add(my); var res = await MeChat.Connection.GetUserProfiles(FriendProfiles.ConvertAll <string>((x) => { return(x.Id); }).ToArray()); if (res == null) { return(false); } UserProfiles.AddRange(res); await MeChat.Filer.SaveUserProfiles(UserProfiles.ToArray()); return(true); } List <string> reqIdList = new List <string>(); //サーバーに要求するIDリスト foreach (var f in FriendProfiles) { if (!UserProfiles.Exists(x => x.Id == f.Id)) { reqIdList.Add(f.Id); // ローカルに存在しないIDをリストに追加 } } var get = await MeChat.Connection.GetUserProfiles(reqIdList.ToArray()); if (get == null) { return(false); } Debug.Log("Add : " + get.Length + " items. in UserProfiles.GET()"); UserProfiles.AddRange(get); return(true); }