/// <summary> /// 領域から出た際にステータスを更新します。 /// </summary> /// <param name="manager"></param> /// <param name="region"></param> public override void RegionLeft(CLLocationManager manager, CLRegion region) { Console.WriteLine("Exit [{0}] Region", region.Identifier); var adapter = new DbAdapter_iOS(); if (region.Identifier.Equals(RegionList.研究室.Identifier)) { //研究室領域から退出 UpdateStatus(Status.学内.GetStatusId()); adapter.AddDeviceLog("在室状況を「学内」に更新", $"領域[{RegionList.研究室.Name}]から退出"); } else { //学内領域から退出 var gregion = RegionList.CampusAllRegions .Where(r => r.Identifier.Equals(region.Identifier)) .First(); adapter.UpdateGeofenceStatus(UserDataModel.Instance.DeviceId, gregion.DbIdentifierName, false); adapter.AddDeviceLog($"領域[{gregion.Name}]から退出"); if (manager.Location != null) { AddLocationLog(manager.Location, "LastUpdate", false); } else { manager.RequestLocation(); } } }
/// <summary> /// 領域に侵入した際にステータスを更新します。 /// </summary> /// <param name="manager"></param> /// <param name="region"></param> public override void RegionEntered(CLLocationManager manager, CLRegion region) { var adapter = new DbAdapter_iOS(); if (region.Identifier.Equals(RegionList.研究室.Identifier)) { //研究室領域に侵入 UpdateStatus(Status.在室.GetStatusId()); adapter.AddDeviceLog("在室状況を「在室」に更新", $"領域[{RegionList.研究室.Name}]に侵入"); } else { //学内領域に侵入 var gregion = RegionList.CampusAllRegions .Where(r => r.Identifier.Equals(region.Identifier)) .First(); adapter.UpdateGeofenceStatus(UserDataModel.Instance.DeviceId, gregion.DbIdentifierName, true); adapter.AddDeviceLog("ジオフェンス状態を更新", $"領域[{gregion.Name}]に侵入"); if (manager.Location != null) { AddLocationLog(manager.Location, "LastUpdate", true); } else { manager.RequestLocation(); } } }