【问题标题】:iOS Push Notification Banner shown twice for a single PushiOS 推送通知横幅为单次推送显示两次
【发布时间】:2016-01-07 23:19:29
【问题描述】:

我注意到发送推送通知会导致以下行为:

看看横幅是如何在短暂延迟后第二次显示的?

起初我以为我们的后端错误地发送了 2 个推送通知,一个接一个。

但是,这似乎是单个推送通知的默认 iOS 行为。显示横幅,然后立即“再次显示”。这会导致 gif 中显示的这种紧张的 UI。横幅似乎收到了两次。

使用 iOS 9.0.2 测试。

我不记得从其他向我发送推送通知的应用程序中看到过这种行为。我是否做错了什么会导致横幅显示两次?

雷达:

工程部门已确定您的错误报告 (23133694) 与另一个问题 (23130766) 重复,将被关闭。

【问题讨论】:

  • 这很奇怪。您可以尝试使用不同的后端(即 Parse)测试推送通知,看看它是否会导致相同的行为。几天前我测试了推送通知,并没有遇到这样的故障。您是否尝试在不同的设备上进行测试?
  • 绝对不是 iOS 的问题,因为如果是,其他人会报告它。您的服务器发送了两次,或者触发服务器发送通知的事件被触发了两次
  • 我也在经历这个。这很奇怪,因为如果您查看通知中心,通知仅列出一次。此问题仅影响横幅的显示次数。它对我来说也出现了两次。
  • @ilanbt RukyO 在下面的回答是否有帮助,两次致电register...?它没有解决我的问题(我认为您应该可以调用它两次),但这个答案得到了许多其他人的支持,它一定有帮助。如果那没有解决您的问题,那么在此发表评论会有所帮助。
  • 我们从 Parse 切换到 OneSignal 时遇到了同样的问题。他们的实现代码超级简单,我们只好去掉[application registerForRemoteNotifications];从我们的 didRegisterUserNotificationSettings 中阻止双重通知出现。

标签: ios push-notification apple-push-notifications ios9


【解决方案1】:

我遇到了同样的问题,但在尝试调试无数小时后,我意识到我在didFinishLaunchingWithOptions: 中调用了两次registerUserNotificationSettings(settings)。确认你没有做同样的事情

【讨论】:

  • 感谢您的回答,我会检查这个。这似乎是解决 iOS 错误的一种解决方法……应该有两次调用 registerUserNotificationSettings: 的有效用例,例如请求徽章以及之前请求的警报。
  • 我们犯了同样的错误,不幸的是已经提交了应用程序。我们现在可以做些什么来用新版本解决这个问题,而不必要求用户卸载应用程序?我们尝试调用unregisterForRemoteNotifications,然后调用registerUserNotificationSettings,但我们没有再次看到通知权限警报对话框。
  • 我也在追这个bug。我担心的是,Apple 建议在每次应用程序启动时注册远程通知,因为令牌可能会更改(在此处阅读:developer.apple.com/library/ios/documentation/…)仅调用一次 registerUserNotificationSettings 与 Apple 在此处的建议相违背。
【解决方案2】:

您确定所有设置都正确吗?
如果您将提供更多代码,则更容易找到错误。 这绝对不是 iOS 错误。


遇到服务器通知问题时要检查的基本事项:

1。检查您的配置文件并清理所有未使用的证书。
2。确保您的服务器配置正常。同样,完整的答案需要更多细节。

如果您是离线执行此操作,那么通常您会错过代码中的某些内容,或者您​​的隐蔽帖子处理程序会被调用两次。

【讨论】:

  • 我很确定我的设置是正确的。通过 NWPusher 工具只发送了一个 Push,但出现了两个横幅。一位同事证实了这个问题,这个问题的 cmets 中的某个人也证实了这一点。
  • @pkamb 这也绝对不是 iOS 问题。然后如果后端没问题,看看你在代码中的推送处理
  • 我的代码中的推送处理与此无关...打开了一个不同的应用程序,iOS 在该应用程序顶部显示推送通知横幅。应用中的推送处理不会导致横幅显示两次...
  • @BagratKirakosian,我有同样的问题,配置文件可能有什么问题?我该如何解决?
【解决方案3】:

在我们使用 ios 9.3.3 和 ios 9.2 版本的两台设备上遇到了这个问题。但是对于运行 ios 8.2 和运行 iOS 10(在 10.3 上测试)的设备并没有出现此问题

在每次全新安装时使用 9.3.3 和 9.2 的设备都会出现问题。但是重新启动设备似乎可以解决问题。虽然这不是我们可以向客户提出的解决方案。

在系统的控制台日志中,我们收到“不平衡调用开始/结束 SBBannerButtonViewController 外观转换的调用”消息。

这似乎是某些具有 9.x 版本的设备的问题,并且对于运行 iOS 10.0 及更高版本的设备应该可以正常工作。

【讨论】:

    【解决方案4】:

    您是否使用数据库来存储设备 ID?

    如果是,则可能会存储设备 ID 两次。如果可能,请清理数据库并尝试再次发送

    【讨论】:

      【解决方案5】:

      我认为这里接受了错误的答案(如果这是关于从 Parse 迁移到 OneSignal)。因为对于 OneSignal,似乎没有任何适当的解决方案。如果有人有,我也在寻找解决方案。唯一的解决方法是重启手机。

      但它很奇怪。我们不能要求所有用户重新启动他们的设备。

      【讨论】:

        【解决方案6】:

        我们在 IOS 9.3.1 上遇到了同样的问题

        我们使用城市飞艇来管理通知,这是我们的设置

        let config = UAConfig.default()
        
        UAirship.setLogging(false)
        UAirship.takeOff(config)
        UAirship.push().userPushNotificationsEnabled = true
        UAirship.push().notificationOptions = [.alert, .badge, .sound]
        UAirship.push().backgroundPushNotificationsEnabled = false
        UAirship.push().pushNotificationDelegate = self
        

        经过多次尝试,我们简单地删除了以下行并且它起作用了!

        UAirship.push().notificationOptions = [.alert, .badge, .sound]
        

        我希望这会对某人有所帮助。

        【讨论】:

          【解决方案7】:

          我知道这个答案比原始帖子晚了几年,但万一这对任何人都有帮助......

          在我的例子中,我使用 CloudKit 通知并且不小心创建了两个跟踪相同记录类型的订阅!

          【讨论】:

            【解决方案8】:

            根据this answer 的类似问题,此问题报告为 rdar://23569779,应该在 iOS 9.3 公开版本中修复。

            如果您在 iOS 9.3+ 中重现此问题,请发表评论

            据说固定在:

            iOS 9.2.1 测试版(内部版本:13D11)

            【讨论】:

            • 我能够在 iOS 9.3.2 (13F51a) 上重现此错误。效果一模一样。
            • 在 iOS 9.3.3 上遇到问题
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-04-07
            相关资源
            最近更新 更多