【问题标题】:Set default iOS local notification style for application为应用程序设置默认的 iOS 本地通知样式
【发布时间】:2012-01-03 23:44:31
【问题描述】:

从 iOS 5 开始,有两种通知样式:横幅和警报(“旧”样式)。用户可以在设置中为每个应用程序设置使用哪种样式。不过,现在的默认设置似乎是通知以横幅样式显示。

我正在使用本地通知来提醒“现在”将要发生的事件。横幅在它出现后不久就会消失(并且它不够明显以至于人们可以点击它),因此对于这些通知,最好有警报样式通知,因为这些通知会一直留在屏幕上,直到用户决定采取行动(忽略或去到应用程序)。

有没有办法通过代码或例如Info.plist 条目告诉iOS 默认情况下应该使用警报样式通知(只要用户没有配置其他东西)?

更新缺少信息/文档不足以让我解决这个问题。我想要来自权威人士(Apple 员工或 Erica Sadun 之类的人)的论坛/博客帖子之类的东西,说这是不可能的,或者如果有可能,那么我想要解决方案。 “要求用户更改设置” 之类的解决方法也不够好。

【问题讨论】:

  • 您是否尝试过使用本文档第 53-54 页的方法? developer.apple.com/library/ios/documentation/iphone/conceptual/…
  • @DanZimm:问题在于没有安排本地通知。问题是告诉 iOS 默认使用警报样式来显示它们。您引用的文档没有说明任何内容。
  • gotcha - 我认为创建和配置 uilocalnotification 的方式可能会影响其外观,我的错:P
  • 你有正确的答案吗?我们也在努力寻找解决方案。
  • @IBG:因为someone else filed a radar for this 我没有打扰。所以不,我还没有答案。

标签: ios ios5 uilocalnotification localnotification


【解决方案1】:

我有一个警报应用程序,我也需要此功能。在 iOS5 下,如果用户在关闭时正在使用另一个应用程序,则会出现横幅。因此,我花了很多时间浏览解决方案。

但是,恐怕无法控制 UILocalNotification 生成的警报样式:(

您可以从类参考中看到没有任何规定:

http://developer.apple.com/library/IOs/#documentation/iPhone/Reference/UILocalNotification_Class/Reference/Reference.html

或者在plist中:

http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html

最好的办法是告诉用户如何更改设置。

【讨论】:

  • 恐怕UILocalNotification 中没有任何属性不足以解决这个问题。例如,可能有一个 Info.plist 键来指定默认值。
  • 无意冒犯,但我不认为您具有权威性,尽管您似乎为此付出了一些努力。但我怀疑您是否查看过 iOS 二进制文件或比阅读文档更深入地挖掘。不过,我很感激你付出的努力,这就是我给你 +1 的原因。
【解决方案2】:

显然你不喜欢听到否定的答案,但是,不。

【讨论】:

  • 我对“否”的答案没有问题,但一定是权威的“否”。因此,如果您可以备份它,例如通过指向某些文档的链接或从真正有发言权的人(如 Apple 员工或 iPhone 开发团队中的某位知名黑客)发帖,那么你会得到赏金:-)
  • 好吧,我已经花了很长时间寻找,但我没有找到解决方案。考虑到所涉及的时间,我会说我的回复现在是权威的,所以如果至少有两个人对此进行投票,这样我就可以得到一半的赏金,那就太好了:) 你会在其他回复中找到它...... .
  • 这与我看到的每天一次被问到的问题基本相同:我的应用程序的行为如何与所有其他应用程序完全不同?如何彻底改变 iOS UI?这种事情是永远不可能的。它没有规模。 (也许你的闹钟应用确实需要与众不同。但是每个放屁应用也会这样做。)
  • @David Dunham:不,这与与众不同无关。 iOS 有两种不同的通知样式,对于我们的用例,警报样式更有意义,因此我们希望将其作为默认样式。而我想要一个权威答案的原因是完全这样其他人也可以解决这个问题。
【解决方案3】:

您可能不会从您的同行那里找到“权威”,您最好直接向 Apple 询问;而且这个问题已经在他们的论坛上被问过好几次了,都没有回答......

HIG 编程指南 - http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/TechnologyUsage/TechnologyUsage.html#//apple_ref/doc/uid/TP40006556-CH18-SW1 -

“支持本地或推送通知的iOS应用可以参与 通知中心以各种方式,取决于用户的 偏好。”

最后一句话是我发现的唯一“权威提示”。

用户的偏好

至于更多权威……也许是大喊大叫?

不,您不能选择通知显示样式,这是用户的选择

开个玩笑…… 无论如何,一种解决方法可能是在您的应用程序中提供一种方法 - 提示/教程 - 推动用户自己更改警报样式......

祝你好运!

【讨论】:

  • 我已经计划在赏金期结束后提交雷达,当我问这个问题时,我希望我不必这样做,但很快就很明显,这将是唯一的方法已经一劳永逸地回答了这个问题;-)
【解决方案4】:

你试过了吗

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

在你的 didFinishLaunching 方法中,这不会帮助那些更新,但应该为那些第一次安装的人启用警报

【讨论】:

  • 您说的是remote 通知(错过了UIRemoteNotificationTypeAlert),但我说的是local 通知。该文档没有谈到影响本地通知,所以我非常怀疑它会产生影响。
  • 根据人们的评论,这个调用也应该用于在通知中心启用应用程序,即使它只使用本地通知。
  • 这不会改变任何东西 - 即使在安装时设置 UIRemoteNotificationTypeAlert 仍然默认显示徽章样式
  • 是的,这里是关于“本地通知”的,但 registerForRemoteNotificationTypes 仍然会简单地询问用户的权限,它没有设置通知的样式为无、横幅或警报。见:developer.apple.com/library/ios/documentation/…
【解决方案5】:

我想补充一点,因为我已经打开了一个 TSI,并且不知何故我问过这个问题并得到了答复。来自奎因“爱斯基摩人!”:

“这取决于您的意思。您可以根据您设置 UILocalNotification 属性(如 alertBody、soundName 等)的方式来控制通知的显示方式。但是,如果您要询问进入的方式这些属性被解释(用户可以在设置>通知中自定义的东西),这些是用户偏好,不通过任何 API 公开。”

【讨论】:

  • 这是问题的真正答案,为了进一步的帮助,这是我观察到的
  • 警报样式取决于 3 个属性,即 alertBody、alertAction 和 alertTitle,如果您只提供警报正文,则样式将是横幅,如果没有提供这些属性,则不会是警报
  • @JProgrammer 我已经提供了所有三个,但它仍然是横幅。我做错了什么?
【解决方案6】:

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

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

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

【讨论】:

  • 不幸的是,这只能确定警报是否启用,而无法找出警报的样式。见定义: typedef NS_OPTIONS(NSUInteger, UIRemoteNotificationType) { UIRemoteNotificationTypeNone = 0, UIRemoteNotificationTypeBadge = 1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 2012-02-01
  • 1970-01-01
  • 2015-09-09
  • 2013-10-04
相关资源
最近更新 更多