如何在设备的前台应用程序中显示双高绿色状态栏(通话中)?

2023-11-27

这里有很多问题要求在后台显示红色录音栏。很明显我应该使用AVAudioSession类别AVAudioSessionCategoryPlayAndRecord为了那个原因。我的问题是,当我的应用程序中有活动的 VOIP 通话时,如何在前台应用程序中显示绿色的通话中栏(或至少是红色栏)?所以我可以返回调用 UI 点击状态栏区域,就像Whatsapp或者 Skype 可以。

我已经尝试过的:

  • voip and audio模式在UIBackgroundModes输入 Info.plist +setCategory:AVAudioSessionCategoryPlayAndRecord + setActive按照建议在这个SO答案中(进入后台时给我一个红色状态栏,但在前台时没有任何内容)
  • 上一页 +AVAudioSession + setMode:AVAudioSessionModeVoiceChat- 没用
  • Set kCFStreamNetworkServiceTypeVoIP将标志标记到 pjsip 源中的套接字并重新编译它 - 没有帮助。此外,自 iOS 8 起已弃用。
  • 创建一个单独的套接字,为 inputStream/outputStream 设置 voip 标志:[self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType](示例代码取自here)

使用 pjsip 进行呼叫。我还能尝试什么来增加状态栏高度,将所有 UI 下移? 是否有任何标准方法可以做到这一点,或者我应该通过调整根 UIWindow 的大小并在状态栏下设置另一个绿色 UIWindow 来自己破解它?


Edit: 由于没有找到标准方法的答案,因此接受了 @roman-ermolov 的答案。对于那些想要寻找答案的人,我可能会建议您自己做几个选择:

  1. 将根视图控制器包装在容器内,例如Apple 的 iAdSuite 和 Storyboards 示例。看看我的示例项目例如。可能是制作该酒吧的最佳方法。
  2. 破解 UINavigationBar 高度(参见this方法) - 尚不适用于景观,但可能会解决
  3. 自己控制主 UIWindow 的框架,将另一个 UIWindow 放置在状态栏下并包含所需的内容。

我对这两个应用程序(WhatsApp 和 Skype)进行了调查,发现它们使用自己的 UIView 来实现此功能。

This is Skype: Skype status bar

This is WhatsApp (Reveal can't get real snapshot, but it transmits basic idea): enter image description here

在这两个应用程序中,它都是一个从屏幕顶部开始的 UIView,以及几种用于格式化输出文本/处理触摸的方法。

苹果在 iOS 10 中引入了CallKit.framework,但似乎它也没有这种功能,所以唯一的方法就是 - 自己动手。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在设备的前台应用程序中显示双高绿色状态栏(通话中)? 的相关文章

  • 带约束的嵌套集合视图的意外行为 (Swift 4)

    我的表格视图中有一个单元格 其中包含水平分页集合视图 该集合视图的每个页面内都有一个垂直集合视图 为了避免 滚动滚动 问题 我在垂直集合视图中禁用了垂直滚动 垂直集合视图的单元格计数不是静态的 可以是任意数字 因此 这会产生一个问题 集合视
  • 在情节提要中将 Segue 拖至自身

    我想将一个 Segue 从我的视图控制器拖到其自身 所以我可以推送该特定视图控制器的 无限 实例 我知道如何在代码中执行此操作 即以编程方式实例化视图控制器 但是 我想尽可能使用 segues 我发现了一些在故事板中进行自我延续的 技巧 但
  • NSURLCache 不缓存

    我正在使用 Xcode 6 1 6A1030 iOS7 和 iOS8 模拟器 NSURLCache 似乎没有缓存任何东西 我使用 Cache Control 标头 我的服务器返回带有 max age 6000 的 Cache Control
  • TTTAttributedLabel 可点击截断标记

    我有一个 TTTAttributedLabel 并为其指定了一个自定义属性截断标记 NSAttributedString atributedTruncationToken NSAttributedString alloc initWithS
  • 使用 BGTaskScheduler 进行后台获取与调试模拟完美配合,但在实践中却不起作用

    我在 appDelegate 的 didFinishLaunchingWithOptions 中注册后台获取任务 BGTaskScheduler shared register forTaskWithIdentifier Backgroun
  • 命令 /Applications/Xcode-beta.app/Contents/Developer/usr/bin/atool 失败,退出代码 255

    它发生在新的 Xcode7 beta 中 CompileAssetCatalog Users admin Library Developer Xcode DerivedData InstaAd ddgdnbxlpxipirebpndfmgr
  • 使用 ZBarSDK 时 iPhone 相机失去自动对焦功能

    我正在开发一个应用程序 用户可以选择是否要扫描条形码或拍摄某物的照片 为了拍照 我正在使用UIImagePickerController照常 为了扫描条形码 我使用 ZbarSDK 1 2ZBarReaderViewController 拍
  • cordova插件条码扫描仪打不开扫描

    我的条形码扫描仪插件有问题 我不是天才 我不太了解如何编写网络应用程序 我使用phonegap和cordova 并且尝试制作一个网络应用程序 在单击链接后扫描条形码 我之前已经使用此命令行安装了该插件 cordova plugin add
  • 当 ViewController 从 UIStoryboard 实例化时,isMemberOfClass 返回 no

    我有一个 OCUnit 测试类 PatientTestViewControllerTests 下面是界面 interface PatientTestViewControllerTests SenTestCase property nonat
  • 从 IOS 应用程序注销的完美方法是什么?

    下面的代码可以工作 但有一个错误 场景是 我首先登录进入应用程序系统 登录成功后 应用程序将设置 UserDefaults UserId 之后 我可以使用存储的 UserId 导航应用程序视图 一旦我进入设置和选项卡注销 这将清除 User
  • 如何去掉 UIWebView 上的状态栏背景?

    从 iOS 11 开始 当UIWebView全屏时 状态栏上会出现与屏幕颜色相同的假背景UIWebView背景 有人知道如何摆脱它吗 甚至添加IUWebView到故事板并使其全屏将使状态栏背景出现 我一直在尝试编辑 UIWebView 的大
  • 在 Xcode5 中使用 XCTest 时 AFNetworking 导致错误

    我正在使用 Xcode 5 现在刚刚开始对现有项目进行单元测试 为此我添加了CocoaTouch Unit Testing Bundle作为我的项目的目标 目标名称是 MyAppTests 我之前使用添加了 AFNetworking 库Co
  • HTML 分页

    有没有html分页的开源项目 我正在为 iPhone 开发一个应用程序 我想在 UIWebView 上显示 HTML 文件 并且不希望用户向下滚动以查看屏幕上未显示的剩余内容 我想在第二个 UIWebView 上显示剩余的内容 我怎样才能做
  • 如何右对齐 UILabel?

    Remark 实施 myLabel textAlignment right does not解决了我的问题 这不是我所要求的 我想要实现的是让标签对齐右对齐 为了更清楚地说明 这就是如何left对齐外观 就是这样justify对齐外观 if
  • 从 iOS 13 开始安排 iOS 后台任务

    我正在实现用于更新数据的BackgroundTasks 框架 但我遇到了以下问题 无法计划刷新App 错误域 BGTaskSchedulerErrorDomain代码 1 空 无法安排数据提取 Error Domain BGTaskSche
  • 不明白 Swift 中的闭包示例

    我正在尝试了解 swift 和闭包 我被这个例子困住了 numbers map number Int gt Int in let result 3 number return result 什么是 number Int gt Int 它是一
  • UITableView 滑动删除 iOS 上的手势冲突

    我的手势识别器有问题 我的目标是在表视图中实现使用滑动删除 但我认为其他手势是相互冲突的 我正在使用这个库romonthego REFrostedViewController https github com romaonthego REF
  • iOS 解决方法:在没有 CSS 属性的情况下平滑滚动 滚动行为:平滑?

    编辑 我找到了一个 jQuery 解决方案 https codepen io chriscoyier pen dpBMVP https codepen io chriscoyier pen dpBMVP这个确实可以在 iOS 上运行 我想
  • 在视图之间传递核心数据实体变量

    我无法理解如何在视图之间使用核心数据实体变量 为了更好地理解我的问题是什么 我的代码如下 View A 基本上 您必须将完整预算实体或相关预算实体的 ID 从视图 A 传递到视图 B 由于不知道您的应用程序的视图层次结构和逻辑 我假设您选择
  • 将 UIButton 中的图像缩放到 AspectFit?

    我想将图像添加到 UIButton 并且还想缩放图像以适合 UIButton 使图像变小 请告诉我该怎么做 这是我尝试过的 但它不起作用 将图像添加到按钮并使用setContentMode self itemImageButton setI

随机推荐

  • 如何在 Ruby 中递增/递减一个字符以获取所有可能的值?

    我有一个长度为一个字符的字符串 可以是任何可能的字符值 irb main 001 0 gt x0 gt u0000 我认为这可能有效 irb main 002 0 gt x0 1 SyntaxError irb 2 syntax error
  • v-for 项目内部的切换会影响整个列表,如何使每个切换仅影响包含的列表项目?

    我正在使用 v for 循环制作一个项目列表 在循环的每个项目内都有一个带有单击事件方法的按钮 显示描述文本 当我单击按钮时 它应该仅在其自己的项目内部切换 但它会影响 v for 列表中的所有元素 那么 如何制作一个只影响其自身项目的切换
  • 在windows上安装scipy时出错

    我正在 Windows 机器和 2 7 版本的 python 上工作 我已经安装了 numpy 现在我正在尝试安装 scipy 我尝试使用简易安装命令并下载 zip 文件然后运行 setup py 文件来安装它 当我尝试通过 easy in
  • 如何在 Cordova Android 应用程序中嵌入 Youtube 视频

    我是 Cordova 应用程序开发的新手 我有一个 Youtube URL 我想将视频嵌入到 Cordova 应用程序中 我尝试过使用 YouTube Api JS 库 和 iframe 来制作它 我需要做什么才能在 Android 应用程
  • Chrome iFrame 阻止 HTTPS 重定向

    我有一个父网站 https a company com 其中包含一个带有 HTTPS 内容的 iframe https b company com foo 到目前为止一切都很顺利 但是 当发生重定向以在同一域上加载不同的路由时 Chrome
  • 如何使用 OpenGL 3.x VBO 渲染动态世界?

    尽管 OpenGL 3 x 本身的最新参考文献似乎很少 但 OpenGL 的实际低级操作相对简单 然而 我在试图概念化如何操纵 VBO 来渲染动态世界时遇到了严重的困难 显然旧的立即模式方式不适用 但是从那里我该去哪里呢 我是否编写某种场景
  • 单例模式的替代方案?

    我使用 ASP NET 和 C 担任 Web 开发人员已经有一段时间了 我想尝试通过使用最佳实践来提高我的技能 我有一个网站 我想一次性加载设置 然后在需要的地方引用它 所以我做了一些研究 50 的开发人员似乎正在使用单例模式来做到这一点
  • 如何通过用户的XAML动态添加控件到UserControl?

    我想创建一个包含 TextBlock 和 StackPanel 的用户控件 该控件将允许用户在 XAML 中动态地将他 她自己的控件添加到用户控件 以下是我的 UserControl 的示例 XAML
  • 如何从进程 ID 获取 X11 窗口?

    在 Linux 下 我的 C 应用程序使用 fork 和 execv 来启动 OpenOffice 的多个实例 以便查看一些 powerpoint 幻灯片 这部分有效 接下来 我希望能够将 OpenOffice 窗口移动到显示屏上的特定位置
  • 使用 NumPy datetime64 进行矢量化年/月/日运算

    我想从年 月和日的一维向量创建 NumPy datetime64 对象的向量 并且还可以反向操作 即从每日 datetime64 向量中提取年 月或日的向量 我正在使用 NumPy 1 7 0b2 例如 假设 years 1990 1992
  • 使用 RxJava 和 Retrofit 链接两个 Web 服务调用

    我正在使用 RxJava 和 Retrofit 我的基本要求是 我想链接两个 api 调用 这将被一个接一个地调用 从第一个 api 收到的响应在调用第二个 api 时用作输入 在阅读了互联网上的一些内容后 我用平面图来实现这一点 在执行此
  • Rails - 连接后 Distinct ON

    我正在使用 Rails 4 2 和 PostgreSQL 我有一个Product模型和一个Purchase模型与Product has many Purchases 我想找到最近购买的独特产品 最初我尝试过 Product joins pu
  • Google Apps 脚本 - 获取用户电子邮件地址

    我有一个在 Google 网站上运行的 Google Apps 脚本项目 该网站要求用户登录 并且仅向该 G suite 域中的用户开放 我拥有的脚本用于允许用户进行投票 进入发言者队列以及执行一些其他任务 目前 后台的所有功能都可以作为我
  • 解释 Scala 类型级编程中使用的“LowPriorityImplicits”模式

    当查看一些 Scala 库的源代码时 例如无形的 我经常发现名为LowPriorityImplicits 您能解释一下这个模式吗 解决的问题是什么 该模式是如何解决的 该模式允许您拥有隐式层次结构 避免编译器产生与歧义相关的错误 并提供一种
  • Log4Net 不写入数据库

    我已经检查了连接字符串 我从服务器资源管理器获取它 我检查了 log4net 配置中的 commandText 我已经检查了数据库权限 集成安全性很好并且在 log4net 类之外工作 我已经检查了存储库的配置属性 它已配置 它发现配置文件
  • 如何以编程方式比较 mp3

    我喜欢能够以编程方式比较 mp3 问题我不知道是什么 标头 直方图 渠道 有人有这方面的经验吗 I wrote 我的硕士论文关于音频指纹识别 本文列出了一些针对比较音乐听起来的问题的开源解决方案 并提供了它们之间的性能比较 可能有点矫枉过正
  • 如何更改 Fabric.js 对象的值?

    我有一个 Fabric jscanvas 我还有一个 JavaScript 它有一个在按下按钮时调用的函数 我知道如何获取活动对象 canvas getActiveObject 但我不知道如何更改其中的值 而不必进行克隆并删除原始值 我之所
  • ios 中联系人缺少一些必需的关键描述符

    我已使用以下方法检索所有联系人 void getAllContacts void NSArray array handler CNAuthorizationStatus status CNContactStore authorization
  • QueryDSL 左连接,ON 中带有附加条件

    是否可以在 QueryDSL 中执行以下查询 SELECT p FROM parts table p LEFT JOIN inventory balance table i ON p part no i part no AND i mont
  • 如何在设备的前台应用程序中显示双高绿色状态栏(通话中)?

    这里有很多问题要求在后台显示红色录音栏 很明显我应该使用AVAudioSession类别AVAudioSessionCategoryPlayAndRecord为了那个原因 我的问题是 当我的应用程序中有活动的 VOIP 通话时 如何在前台应