Permissions.iOS.cs 1.0 KB

12345678910111213141516171819202122232425262728
  1. using InABox.Core;
  2. using Microsoft.Maui.ApplicationModel;
  3. namespace InABox.Avalonia.Platform.iOS;
  4. public class iOS_Permissions : IPermissions
  5. {
  6. public Logger? Logger { get; set; }
  7. public async Task<bool> IsPermitted(Permission permission)
  8. {
  9. if (permission == Permission.Camera)
  10. return await DoEnabled<Permissions.Camera>();
  11. if (permission == Permission.PhotoLibrary || permission == Permission.VideoLibrary)
  12. return await DoEnabled<Permissions.Photos>();
  13. if (permission == Permission.Geolocation)
  14. return await DoEnabled<Permissions.LocationWhenInUse>();
  15. return false;
  16. }
  17. private async Task<bool> DoEnabled<TPermission>() where TPermission : Permissions.BasePlatformPermission, new()
  18. {
  19. var status = await Permissions.CheckStatusAsync<TPermission>();
  20. if (status != PermissionStatus.Granted && status != PermissionStatus.Restricted)
  21. status = await Permissions.RequestAsync<TPermission>();
  22. return status == PermissionStatus.Granted;
  23. }
  24. }