提示用户拒绝/授予通知权限:
该应用程序具有一个设置视图,用户可以在其中切换通知。如果未授予该权限,我想将用户指向iOS设置(如WhatsApp一样)。
如何检查是否已授予权限?尤其是在用户授予权限但决定从iOS设置而不是应用程序内部将其禁用的情况下。
有一个广受欢迎的permissions plugin,不幸的是不支持此特定权限。
答案 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();