Xamarin.iOS 中的关键警报
在 iOS 12 中,应用可以发送关键警报。 无论“请勿打扰”是处于启用状态还是响铃开关处于关闭状态,关键警报都会播放声音。 这些通知是中断性的,仅当用户必须立即采取措施时才应使用。
自定义关键警报权利
若要在应用中显示关键警报,请先从 Apple 请求自定义关键警报通知权利。
从 Apple 收到此权利并遵循有关如何配置应用以使用它的任何关联说明后,将自定义权利添加到应用的 Entitlements.plist 文件中。 然后,配置“iOS 捆绑签名”选项,以便在模拟器和设备上对应用进行签名时使用 Entitlements.plist。
请求授权
应用的通知授权请求会提示用户允许或禁止应用通知。 如果通知授权请求是请求发送关键警报权限,用户还可以在应用中选择加入关键警报。
以下代码请求发送关键警报和标准通知权限并发出声音,具体方法是将适当的 UNAuthorizationOptions
值传递到 RequestAuthorization
:
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
UNUserNotificationCenter center = UNUserNotificationCenter.Current;
var options = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Sound | UNAuthorizationOptions.CriticalAlert;
center.RequestAuthorization(options, (bool success, NSError error) => {
// ...
);
return true;
}
本地关键警报
若要发送本地关键警报,请创建 UNMutableNotificationContent
并将其 Sound
属性设置为以下任一值:
UNNotificationSound.DefaultCriticalSound
,使用默认的关键通知声音。UNNotificationSound.GetCriticalSound
,允许指定与应用和音量捆绑在一起的自定义声音。
然后,从通知内容创建一个 UNNotificationRequest
并将其添加到通知中心:
var content = new UNMutableNotificationContent()
{
Title = "Critical alert title",
Body = "Text of the critical alert",
CategoryIdentifier = "my-critical-alert-category",
// Sound = UNNotificationSound.DefaultCriticalSound
Sound = UNNotificationSound.GetCriticalSound("my_critical_sound.m4a", 1.0f)
};
var request = UNNotificationRequest.FromIdentifier(
Guid.NewGuid().ToString(),
content,
UNTimeIntervalNotificationTrigger.CreateTrigger(3, false)
);
var center = UNUserNotificationCenter.Current;
center.AddNotificationRequest(request, null);
重要
如果未为应用启用关键警报,则不会传递关键警报。 除了应用首次请求发送关键警报权限的提示之外,用户还可以在 iOS“设置”应用的应用“通知”部分中启用或禁用关键警报。
远程关键警报
有关远程关键警报的信息,请参阅 WWDC 2018 中的用户通知中的新增功能会话和生成远程通知文档。