iOS推送通知类型选项?警报 vs 横幅?

6
我已阅读过这里的帖子,建议唯一可以使PUSH通知显示为警报而不是横幅的方法是让每个最终用户在应用程序的设置中的通知部分更改“警报样式”。令我困惑的是,有一些应用程序默认为“警报”风格,而无需进行此操作。
是否有一种方法可以在初始启动时通过对话框设定“警报”样式呢?我不介意在对话框中要求用户确认。我只想知道由于其他应用程序不需要用户手动进入设置以更改警报样式,因此必须有一种不同的方法来实现这一点...
我已准备好以下内容 -
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
    return YES;
}

你能否举个这样的应用程序的例子,这样我们就可以研究一下吗? - Andrew
CSR赛车肯定是个好游戏... - user1145643
这是我安装时得到的默认通知设置。无论如何,我认为这些是不可能设置的。 - Andrew
奇怪。我的CSR自动设置为“警报”。Skype也是这样。 - user1145643
刚刚在我的设备上下载了CSR Racing游戏。我从未听说过CSR Racing,更别说安装过它了。当我在应用程序中允许推送通知时,它会自动设置为横幅式提醒,无法强制用户看到某种类型的提醒。有关更多解释,请参见下面的答案。 - Jason Grandelli
显示剩余3条评论
2个回答

7

您的应用程序只有检查通知设置的权限,永远无法为用户设置或更改通知类型。

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

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

您可以从查询推送设置中了解到的所有信息仅限于用户是否启用了警报,但无法知道它们是如何显示的(横幅还是警报)。


1
这是不可能的,你无法做到。
你可以使用这行代码来查询当前通知样式的设置:
UIRemoteNotificationType* enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

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

你实际上无法检查警报样式,只能检查是否允许任何样式的警报。因此,您无法提示用户根据启用的类型更改其警报样式。 - Jason Grandelli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接