#c# #ios #xamarin
#c# #iOS #xamarin
Вопрос:
Я сталкиваюсь с сообщением об исключении xamarin.essentials.permission =locationwheninuse разрешение не было предоставлено: отказано», и я понятия не имею, как с этим справиться.
Я использую xam.plugin.geolocator, и вот мой список
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access to location when in the background.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs access to location when open and in the background.</string>
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
пока здесь находится мой appdelegate
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
//
// This method is invoked when the application has loaded and is ready to run. In this
// method you should instantiate the window, load the UI into it and then make the window
// visible.
//
// You have 17 seconds to return from this method, or iOS will terminate your application.
//
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
Rg.Plugins.Popup.Popup.Init();
global::Xamarin.Forms.Forms.Init();
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(AppSetting.SyncfusionLicense);
Syncfusion.XForms.iOS.TextInputLayout.SfTextInputLayoutRenderer.Init();
SfCalendarRenderer.Init();
new SfCarouselRenderer();
Xamarin.FormsMaps.Init();
ZXing.Net.Mobile.Forms.iOS.Platform.Init();
LoadApplication(new App(new iOSInitializer()));
UITabBar.Appearance.SelectedImageTintColor = UIColor.Black;
UITabBar.Appearance.TintColor = UIColor.Gray;
UITabBar.Appearance.BarTintColor = UIColor.White;
return base.FinishedLaunching(app, options);
}
}
для репликации я просто развернул приложение на устройстве. После открытия он запросит у вас разрешение. Нажмите «Не разрешать».
Есть идеи?
TIA.
Комментарии:
1. В вашем вопросе НЕ показан код разрешения, но вам нужно сначала проверить разрешения, прежде чем запрашивать их, чтобы вы могли пропустить запрос (и, следовательно,
PermissionException
), если пользователь уже отказал в них: learn.microsoft.com/en-us/xamarin/essentials / …2. Я пытался использовать это в моей mainpage viewmodel, в моем коде mainpage и на других страницах, а также в app.cs. Но я не знаю, где еще это разместить.
3. Почему бы вам просто не проверить статус разрешений и не показать им диалоговое окно, в котором говорится, что они не могут войти в приложение, если они уже не приняли все разрешения? learn.microsoft.com/en-us/xamarin/essentials/… А затем запросить разрешение или отменить вход?
4. Привет, Saamer, я тоже это сделал. Оно запускается при первом запуске после его установки на устройстве.
5. @JohnMombay Привет, ты имеешь в виду, что в диалоговом окне разрешения всегда отображается «не разрешить»?