LaunchOptionsKey.location в Swift запускает все приложение? - PullRequest
0 голосов
/ 10 июля 2019

В настоящее время я работаю над regionMonitoring в Swift, где я проверяю, находится ли пользователь в определенном месте. Я использую фоновые режимы (местоположение), чтобы проверять местоположение каждые 50 метров, которые перемещает пользователь. Это пробуждает мое приложение и предоставляет ключ местоположения в application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?).

Я также проверяю, на первом viewController, есть ли у пользователя рабочее подключение к Интернету. В противном случае отображается сообщение: «Пожалуйста, убедитесь, что вы подключены к Интернету».

В последние дни я заметил, что это сообщение показывалось, даже когда у меня было рабочее соединение, но мой Интернет был отключен, когда я был в пути. Поэтому я думаю, что приложение было разбужено и затем направлено на первый контроллер представления после didFinishLaunchingWithOptions.

Возможно ли это? Мое приложение запускается "полностью", когда новое место собрано? Могу ли я реализовать следующее в didFinishLaunchingWithOptions, чтобы предотвратить это:

if(launchOptions?[UIApplication.LaunchOptionsKey.location] != nil) {

    // handle new location that was sent, but don't launch the rest of the application

} else {

    // do all the regular stuff, such as setting keyWindow etc

}

Или это может вызвать проблемы в некоторых случаях? Если я сам открою приложение, можно ли включить туда ключ местоположения?

1 Ответ

0 голосов
/ 10 июля 2019

Я только что подумал, что мне нужно запустить все приложение, иначе я снова окажусь на черном экране, когда я снова открою приложение (потому что запуск уже был инициализирован).Так что теперь я делаю, проверяю willEnterForeground, если приложение застряло на «фальшивом» экране-заставке viewController, и если да, я перепроверяю соединение и запускаю оттуда.

...