Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 更改显示“的蓝色条的文本”;“应用程序名称正在使用您的位置”;在主屏幕上_Ios_Objective C_Core Location - Fatal编程技术网

Ios 更改显示“的蓝色条的文本”;“应用程序名称正在使用您的位置”;在主屏幕上

Ios 更改显示“的蓝色条的文本”;“应用程序名称正在使用您的位置”;在主屏幕上,ios,objective-c,core-location,Ios,Objective C,Core Location,我正在使用位置管理器,请求不使用授权。当我的应用程序进入后台时,蓝色条显示“应用程序名称正在使用您的位置” 我能把这段文字改成别的吗 或者是否有其他方式在主屏幕上显示文本 但是UBER是如何显示这一点的呢?我认为你不能更改工具栏上的文本。好吧,你可以更改你的应用程序名称,但其余的都是固定的 如果使用“始终请求授权”,则不会获得蓝色条。如果您在被发送到后台之前或当应用退出活动状态时停止位置管理器,您也不会得到蓝色条。TL;DR:Uber创建了一个假的录音机,并使用UIKit/UIApplicat

我正在使用位置管理器,请求不使用授权。当我的应用程序进入后台时,蓝色条显示“应用程序名称正在使用您的位置”

我能把这段文字改成别的吗

或者是否有其他方式在主屏幕上显示文本


但是UBER是如何显示这一点的呢?

我认为你不能更改工具栏上的文本。

好吧,你可以更改你的应用程序名称,但其余的都是固定的


如果使用“始终请求授权”,则不会获得蓝色条。如果您在被发送到后台之前或当应用退出活动状态时停止位置管理器,您也不会得到蓝色条。

TL;DR:Uber创建了一个假的录音机,并使用UIKit/UIApplication.h private方法修改双高状态栏的外观和文本。


我实际上一直在调查这个问题,因为我也想实现这是我的应用程序。首先,优步合作伙伴应用程序是一个企业应用程序,因此可能正在使用私有API。也就是说,以下是我在查看时发现的:

首先,栏中的文本位于Uber Partner app中的json语言本地化文件中:

i、 stack.imgur.com/rYoaD.png

然后通过[UBPingControllerDriver updateDoubleHeightStatusBar]方法在UberDriver二进制文件中检索相关语言文件

i、 stack.imgur.com/e9WyY.png

实际的双高状态栏是通过[UBFakeAudioRecorder sharedInstance]方法执行的,该方法创建了一个假的录音机(很可能将输出转储到/dev/null中)。但是,这会给出一个红色条。因此,应用程序随后使用一个单独的方法[UBFakeAudioRecorder shouldRecordWithLocationPermission:]来使用位置权限创建蓝色条

i、 stack.imgur.com/M1j5D.png

实际文本是使用名为@selector(setDoubleHeightStatusText:forStyle:)的选择器设置的;位于[UBPingControllerDriver UpdateDoubleLightStatusBar]\u块\u调用

i、 stack.imgur.com/HWTVw.png

最后的屏幕截图与UIApplication实例交互,我不知道之后会发生什么。Uber应用程序使用UIKit,并与@interface UIApplication(Private)接口以修改状态栏属性。可以在这里找到标题的完整列表:,但简单看一下,我猜它们使用的是:

-(void)setDoubleHeightMode:(int)arg1 glowAnimationEnabled:(BOOL)arg2

-(void)setDoubleHeightStatusText:(id)arg1 for style:(int)arg2

-(void)addStatusBarStyleOverrides:(int)arg1


可能还有其他一些…

我已经更新了我的问题。看一看。我很确定优步在使用授权时也会使用request来显示这一点。我不认为这是可能的。那一定有办法。为什么要投否决票?如果您认为我所说的是错误的,请至少留下评论,并纠正我。此外,如果您希望使用此方法实现自定义状态栏,您还可以使用“请求始终授权”并手动触发双高栏。当然,这是可能的。正如问题所述,有一些应用程序在做这件事(优步合作伙伴应用程序做这件事,但它是一个企业应用程序而不是应用商店应用程序)。