更改显示" APP NAME正在使用您的位置"在主屏幕上

时间:2015-10-21 09:26:32

标签: ios objective-c core-location

我正在使用位置管理器,requestWhenInUse授权。当我的应用程序进入后台时,会出现蓝色条,显示"应用程序名称正在使用您的位置"。

我可以将此文字更改为其他内容吗?

或者还有其他方法可以在主屏幕上显示文字。

enter image description here enter image description here

但是UBER如何展示这个?

3 个答案:

答案 0 :(得分:2)

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

我实际上一直在研究这个,因为我也想实现这是我的应用程序。首先,优步合作伙伴应用程序是一个企业应用程序,因此私有API可能正在使用中。也就是说,这是我在寻找时发现的:

首先,栏中的文字位于优步合作伙伴应用程序中的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 updateDoubleHeightStatusBar] _block_invoke

i.stack.imgur.com/HWTVw.png

最后的屏幕截图与UIApplication实例交互,我不知道之后会发生什么。 Uber应用程序使用UIKit,并与 @interface UIApplication(私有)接口)来修改状态栏属性。完整的标题列表可以在这里找到: https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UIApplication.h ,但从简短的说来看,我猜它们正在使用:

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

- (void)setDoubleHeightStatusText:(id)arg1 forStyle:(int)arg2;

- (void)addStatusBarStyleOverrides:(int)arg1;

可能还有其他几个......

答案 1 :(得分:1)

好吧,您可以更改您的应用名称,但其余内容已修复。

如果您使用请求始终授权,您将无法获得蓝色条。如果您在被发送到后台之前停止了位置管理器,或者当应用程序重新启动时,您也无法获得蓝色条。

答案 2 :(得分:-2)

我认为你不能改变栏上的文字。