我正在使用位置管理器,requestWhenInUse授权。当我的应用程序进入后台时,会出现蓝色条,显示"应用程序名称正在使用您的位置"。
我可以将此文字更改为其他内容吗?
或者还有其他方法可以在主屏幕上显示文字。
但是UBER如何展示这个?
答案 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)
我认为你不能改变栏上的文字。