在我的 iPhone 应用程序内的“设置”应用程序中读取通知标志
Posted
技术标签:
【中文标题】在我的 iPhone 应用程序内的“设置”应用程序中读取通知标志【英文标题】:Reading Notification flag in "Settings" application inside my iPhone application 【发布时间】:2011-03-22 23:29:08 【问题描述】:我正在为我的应用程序启用推送通知。当我的应用程序正在运行时,我们如何在“设置”应用程序中读取通知标志。由于某些原因,我需要知道特定通知(警报、声音、徽章)是否设置为 ON/OFF。
请指导。
【问题讨论】:
【参考方案1】:尝试调用此方法[[UIApplication sharedApplication] enabledRemoteNotificationTypes]
它将返回一个 UIRemoteNotificationType,您可以使用它来确定可用的内容。
UIRemoteNotificationType status = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
现在,可以使用NSLog(@"status = ", status);
将状态视为一个 int,我们可以准确地确定它的状态。但要做到这一点,我们需要了解 UIRemoteNotificationType。
typedef enum
UIRemoteNotificationTypeNone = 0,
UIRemoteNotificationTypeBadge = 1 << 0,
UIRemoteNotificationTypeSound = 1 << 1,
UIRemoteNotificationTypeAlert = 1 << 2,
UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3
UIRemoteNotificationType;
无需详细说明,您基本上需要摆脱这种了解的是......
如果徽章打开,请添加 1 如果声音打开,请添加 2 如果警报开启,请添加 4 如果报亭内容可用,请添加 8(我不会担心这个人)假设您想知道徽章/声音/警报是否全部开启。 UIRemoteNotificationType(如果你正在玩,则为状态)应该是 7。
现在,让我们倒退。可以说status == 5
。只有一种设置配置可以给我们这个值,那就是如果徽章和警报打开(徽章加 1,警报加 4,总数为 5)并且声音关闭。
如果status == 6
怎么办?同样,只有一种设置配置会返回此数字,即警报和声音都打开,而徽章关闭。
使用 IF 语句,我们可以做类似的事情
If (status == 5)
NSLog(@"User has sound alerts disabled");
[self fireThatSpecialMethod];
运行一组代码块,或在声音被禁用但其他一切都打开时触发特定方法。无论如何,希望这个回复对人们有所帮助!
【讨论】:
【参考方案2】:请注意,从 iOS 8 开始,您正在寻找确定是否注册远程通知的方法如下:
[[UIApplication sharedApplication] isRegisteredForRemoteNotifications]
您可以使用以下方法确定用户当前启用了哪些种类通知
[[UIApplication sharedApplication] currentUserNotificationSettings]
这将返回一个 UIUserNotificationSettings 对象,其中包含您需要的所有信息。
文档链接:
isRegisteredForRemoteNotifications
currentUserNotificationSettings
UIUserNotificationSettings
【讨论】:
以上是关于在我的 iPhone 应用程序内的“设置”应用程序中读取通知标志的主要内容,如果未能解决你的问题,请参考以下文章
无法在我的 iPhone 应用程序中为横向设置 SplashScreen