/// <summary> /// 位置情報利用の認証状態が変わった際に、位置情報のモニタリングを開始します。 /// </summary> /// <param name="manager"></param> /// <param name="status"></param> public override void AuthorizationChanged(CLLocationManager manager, CLAuthorizationStatus status) { var adapter = new DbAdapter_iOS(); adapter.AddDeviceLog($"位置情報の認証状態が更新", status.ToString()); // TODO ステータス名表示に if (status == CLAuthorizationStatus.AuthorizedAlways || status == CLAuthorizationStatus.AuthorizedWhenInUse) { //iBeacon領域判定の有効化 if (CLLocationManager.IsMonitoringAvailable(typeof(CLBeaconRegion))) { 研究室領域.NotifyEntryStateOnDisplay = false; 研究室領域.NotifyOnEntry = true; 研究室領域.NotifyOnExit = true; manager.StartMonitoring(研究室領域); } //ジオフェンス領域の有効化 if (CLLocationManager.IsMonitoringAvailable(typeof(CLCircularRegion))) { foreach (var gr in 学内領域) { gr.NotifyOnEntry = true; gr.NotifyOnExit = true; manager.StartMonitoring(gr); } } } else { //位置情報利用の許可を貰う manager.RequestAlwaysAuthorization(); } }
public virtual void AuthorizationChanged(CLLocationManager manager, CLAuthorizationStatus status) { Console.WriteLine(status.ToString()); if (status == CLAuthorizationStatus.NotDetermined) { if (locationManager != null) { // Check for iOS 8. Without this guard the code will crash with "unknown selector" on iOS 7. if (locationManager.RespondsToSelector(new ObjCRuntime.Selector("requestWhenInUseAuthorization"))) { locationManager.RequestWhenInUseAuthorization(); } return; } } if (status == CLAuthorizationStatus.AuthorizedAlways || status == CLAuthorizationStatus.Denied) { string title = (status == CLAuthorizationStatus.Denied) ? "Location services are off" : "Location Service is not enabled"; string message = "To use Location Service you must turn on 'While using the app' in the Location Services Settings"; if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0)) { Mvx.Resolve <IMvxMessenger>().Publish(new ProgressMessage(this.ViewModel, false)); UIAlertView alertView = new UIAlertView(title, message, null, "Cancel", "Settings"); alertView.Clicked += (object sender, UIButtonEventArgs e) => { if (e.ButtonIndex == alertView.CancelButtonIndex) //cancel { ViewModel.CloseViewModel(); } else { //go to settings UIApplication.SharedApplication.OpenUrl(new NSUrl(UIApplication.OpenSettingsUrlString)); } }; alertView.Dismissed += (sender, e) => { alertView.Dispose(); alertView = null; }; alertView.Show(); } else { // ios 7 only has two CLAuthorizationStatus : Denied and AuthorizedAlways if (status == CLAuthorizationStatus.AuthorizedAlways) { return; } Mvx.Resolve <IMvxMessenger>().Publish(new ProgressMessage(this.ViewModel, false)); UIAlertView alertView = new UIAlertView(title, message, null, "OK"); alertView.Clicked += (sender, e) => { if (e.ButtonIndex == alertView.CancelButtonIndex) { ViewModel.CloseViewModel(); } }; alertView.Dismissed += (sender, e) => { alertView.Dispose(); alertView = null; }; alertView.Show(); } } }
public virtual void AuthorizationChanged(CLLocationManager manager, CLAuthorizationStatus status) { Console.WriteLine(status.ToString()); }