1

我的 iOS 应用程序(确切地说是 iOS)显示一个弹出窗口,要求允许在第一次启动时使用用户的位置 - “”“想要使用您当前的位置”,带有两个按钮“不允许”和“确定” . 我试过: SLAlert *locationAlert = [SLAlert alertWithTitle:@"\"\" 希望使用您当前的位置"]; SLAlertHandler *okHandler = [locationAlertdismissWithButtonTitled:@"OK"]; [SLAlertHandler addHandler:okHandler]; 但仪器说“无法启动脚本,目标应用程序不是最前面的。”

那么如何用 Subliminal 消除这个弹出窗口呢?谢谢。

4

1 回答 1

0

Subliminal 的警报处理系统直到您的测试开始运行之前才会加载,因此如果您在启动时显示该警报(例如,在 中application:didFinishLaunchingWithOptions:),那么 Subliminal 将不会在它出现时准备好处理该警报。

有几种方法可以处理这个问题。在运行集成测试时,您可以简单地延迟获取用户的当前位置。就像是:

_manager = [[CLLocationManager alloc] init];
#if INTEGRATION_TESTING
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [_manager startUpdatingLocation];
});
#else
[_manager startUpdatingLocation];
#endif

或者您可以注册一个应用程序挂钩来触发获取用户的当前位置,在测试期间调用该挂钩。如果您使用应用程序挂钩来触发获取用户的位置,那么在任何测试调用该挂钩时肯定会加载 Subliminal 的警报处理系统。

于 2013-09-10T18:48:04.767 回答