检查是否已授予通知权限(Xamarin,iOS)

时间:2019-11-18 13:07:29

标签: c# ios xamarin permissions runtime

提示用户拒绝/授予通知权限:

screenshot

该应用程序具有一个设置视图,用户可以在其中切换通知。如果未授予该权限,我想将用户指向iOS设置(如WhatsApp一样)。

如何检查是否已授予权限?尤其是在用户授予权限但决定从iOS设置而不是应用程序内部将其禁用的情况下。

有一个广受欢迎的permissions plugin,不幸的是不支持此特定权限。

3 个答案:

答案 0 :(得分:0)

尝试一下:

Device.OpenUri(new Uri("app-settings:"));

或您可以这样做(对于android和iOS): https://dotnetco.de/open-app-settings-in-xamarin-forms/

答案 1 :(得分:0)

基本上,您需要在每次运行的应用程序上请求授权。因此,您将知道授权状态,并在需要时将用户导航到应用程序的ios设置。

UNUserNotificationCenter.Current.RequestAuthorization(UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound, (approved, error) =>
            {
                // do something with approved
                // approved will be true if user given permission or false if not
            });

如果给予许可,此方法将在每次运行时返回true。如果更改,它将返回false。

答案 2 :(得分:0)

您可以使用DependencyService来检查是否为该应用程序启用了通知。

在iOS中:

[assembly: Dependency(typeof(DeviceService))]
  class DeviceService : IDeviceService
  {
    public bool GetApplicationNotificationSettings()
     {
     var settings = UIApplication.SharedApplication.CurrentUserNotificationSettings.Types;
            return settings != UIUserNotificationType.None;
     }
   } 

表单:

public interface IDeviceService
{
   bool GetApplicationNotificationSettings();
}

然后,您可以从页面或视图模型中调用DependencyService,如下所示:

bool isNotificationEnabled = DependencyService.Get<IDeviceService>().GetApplicationNotificationSettings();