gpt4 book ai didi

ios - 当 iOS 应用程序在后台时显示警报

转载 作者:IT王子 更新时间:2023-10-29 08:06:08 25 4
gpt4 key购买 nike

我想在我的 iOS 应用处于后台时显示提醒 View (并且它正在使用位置信息)。

例如,即使在以下情况下,优步合作伙伴(司机)应用也会显示提醒并播放声音:

  • 我已关闭通知!
  • 我的 iPhone 处于静音模式!

我知道本地通知方法,如果用户关闭/更改设置中的通知,它就不起作用。我正在寻找不同的东西。

enter image description here
为达到上述状态而执行的操作:

  • 在优步合作伙伴应用程序上上网(您是司机!)
  • 在“设置”中禁用该应用的通知
  • 将应用移至后台并等待乘车请求
  • 一段时间后,一个乘车请求作为警报 View 弹出,并在后台播放声音

当然,即使用户在“设置”中禁用通知,应用程序也可以使用 didReceiveRemoteNotification: fetchCompletionHandler: API 获取静默 远程通知。但是,警报是如何弹出的,这正是我想要找出的。

最佳答案

我可以想象 Uber 拥有一些特殊权限或使用一些私有(private) API,允许他们在不使用本地通知的情况下实现此行为。虽然我不知道 Uber 如何在他们的合作伙伴应用程序中实现这一点,但我可以稍微谈谈提醒在主屏幕上的工作原理。

SpringBoard 是管理 SpringBoard 应用程序 (SpringBoard.app) 的单例类,它是 iPhone 的应用程序启动器。 SpringBoard 不使用标准的 UIAlertView/UIAlertController 类,因为它们不参与 SpringBoard 范围的警报系统。 iOS 5 介绍 SBAlertItem用于在 SpringBoard 上显示 UIAlertViews(电池通知警报、Sim 解锁警报等)。 Apple 使用 SBAlertItem 作为他们的锁定和主屏幕警报,我将假设 Uber 使用 SBAlertItem 作为这个答案。

SBAlertItem 有一个 protected ivar UIAlertView *_alertSheet。假设它作为一个普通的 UIAlertView,您应该能够更改此警报的属性以满足您的需要。我还会通读 saurik 的 Cydia Substrate 项目,特别是 MobileSafety.mm查看一些用例。我还找到了 noweibogoodsleep它提供了在 SpringBoard 上使用 SBAlertItem 的示例。

我还找到了 SBUserNotificationAlert , SBAlertItem 的子类。与标准 SBAlertItem 相比,这似乎有更多方法可以促进可能更适合您需求的警报定制。

我意识到挂接到私有(private) API 可能不是您在问这个问题时所期望的。由于我不知道 Uber 是如何工作的,我只能根据我使用运行时和越狱设备的个人经验提供答案。

关于ios - 当 iOS 应用程序在后台时显示警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com