iOS 8 和 Cordova:应用程序在首次启动时立即请求推送通知权限

Posted

技术标签:

【中文标题】iOS 8 和 Cordova:应用程序在首次启动时立即请求推送通知权限【英文标题】:iOS 8 & Cordova: App requests push notification permissions immediately on first launch 【发布时间】:2014-09-08 20:13:14 【问题描述】:

更新:ios 8 的已启动/GM 版本中仍然存在此问题。

我的 Cordova 应用(版本 3.5.0-0.2.7)在 iOS 7 中,当我尝试注册设备时向用户请求推送权限。

现在,在 iOS 8(测试版 5,Xcode 测试版 7)中,它会在应用首次打开时请求推送权限。这不好,因为如果请求没有给出一些上下文,用户通常会拒绝许可。

据我所知,iOS 8 现在将远程推送通知和本地通知合并到同一个权限请求中,而以前,本地通知不是单独请求的。 (来源:1、2)。 Cordova 是否有可能在启动时在后台请求本地通知权限,而现在,在 iOS 8 中,这可能会出现在用户面前?

我拥有的唯一似乎相关的 Cordova 插件是 PushPlugin。 (不使用任何本地通知插件。)

感谢您的帮助!

【问题讨论】:

本地通知从不需要任何权限,据我所知,他们现在也不需要权限——它唯一需要用户权限的推送通知 你确定吗?我不断在网上看到对本地通知的引用,现在需要在 iOS 8 中获得许可(example 1,example 2) 还有,这是今年 WWDC 演讲中的一段摘录:“因此,在 iOS 8 中,无论您的应用是要显示远程用户通知还是本地用户通知,您的应用程序必须首先注册才能使用这些通知。这将导致向用户显示警报,询问他们您的应用程序是否可以向他们显示通知。 (Source) 这是否意味着您甚至无法在未经用户许可的情况下更新徽章计数?应用图标上的徽章几乎没有侵入性。 【参考方案1】:

在文件 AppDelegate + notification.m 中尝试在 applicationDidBecomeActive 方法中将徽章编号设置为 0 的行注释

【讨论】:

以上是关于iOS 8 和 Cordova:应用程序在首次启动时立即请求推送通知权限的主要内容,如果未能解决你的问题,请参考以下文章

防止在首次启动 iOS 时调用 AFNetworking 可达性状态

React Native 应用程序在首次启动时询问 iOS 位置权限,但 0 引用内部任何位置的地理/位置代码

如何使用 SwiftUI 在首次应用启动时启动教程?

应用程序在首次启动后关闭

在首次显示之前获取屏幕高度?

应用内购买仅在首次应用启动时失败