6

我已经阅读了此处的帖子,建议使 PUSH 通知显示为警报而不是横幅的唯一方法是让个人最终用户更改应用程序Alert Style的. 令我困惑的是,有一些应用程序可以默认设置样式,而不必这样做。NotificationsSettingsAlerts

有没有办法Alerts在初始启动时通过对话框以编程方式设置样式?我不介意要求用户在对话框中确认。我只知道由于其他应用程序不需要用户手动进入设置来更改警报样式,因此必须有不同的方法来做到这一点......

我有以下 -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
    return YES;
}
4

2 回答 2

7

您的应用仅有权检查通知设置,您永远不能为用户设置或更改通知类型。

当您查询通知类型时,选项如下

typedef NS_OPTIONS(NSUInteger, UIRemoteNotificationType) {
    UIRemoteNotificationTypeNone    = 0,
    UIRemoteNotificationTypeBadge   = 1 << 0,
    UIRemoteNotificationTypeSound   = 1 << 1,
    UIRemoteNotificationTypeAlert   = 1 << 2,
    UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,
}

通过查询推送设置,您可以发现用户是否启用了警报,而不是它们的显示方式(横幅与警报)。

于 2013-10-08T15:25:31.430 回答
1

不,这是不可能的,你不能这样做。

您可以使用此行查询通知样式的当前设置:

UIRemoteNotificationType* enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

您可以检查 enabledTypes,然后指示用户在设置中更改通知样式。

于 2013-10-07T13:21:31.050 回答