#ios #swift #core-location
#iOS #swift #ядро-местоположение
Вопрос:
Я создаю приложение iOS в SWIFT, где местоположение пользователя выбирается и отправляется на сервер каждые 30 минут. Когда приложение открыто, оно продолжает отправлять на сервер широту / длину местоположения, но когда приложение закрыто или приостановлено, оно не отправляет. Я хочу отправить местоположение, даже если приложение закрыто. Возможно ли это каким-то образом? Я просто хочу отправить местоположение на сервер, нет необходимости открывать приложение снова и снова?
Комментарии:
1. medium.com/@calvinlin_96474/… и developer.apple.com/documentation/corelocation/…
Ответ №1:
Ваше приложение должно поддерживать фоновые задачи, чтобы иметь возможность работать в фоновом режиме.
Я полагаю, что на этот вопрос отвечали несколько раз. Вот ссылка на документацию
Поскольку вы используете location, я бы рекомендовал вам использовать UIBackgroundModes в качестве locations.Но убедитесь, что вы не разряжаете батарею пользователя.
Также использование фоновой выборки (UIBackgroundModes — fetch) и автоматического уведомления может быть отличным способом запустить ваше приложение через равный интервал времени.
Обновить
Для выполнения операций вы можете использовать автоматическое уведомление — обратитесь к этой документации Apple
Согласно документации — система запускает ваше приложение в фоновом режиме и вызывает application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
Обновление 2
Для локального уведомления наряду с планированием пользовательских действий обратитесь к этой документации Apple. Но я действительно сомневаюсь, что это поможет вам достичь желаемого результата. Главным образом потому, что ваше приложение получит событие только тогда, когда пользователь выполнит какое-либо действие в вашем локальном уведомлении, и если он проигнорирует его, ваше приложение останется в фоновом режиме.
Комментарии:
1. Привет, спасибо за ваш подробный ответ. Я уже внедрил фоновое обновление местоположения, когда приложение работает в фоновом режиме или не приостановлено. Я также реализовал push-уведомление, которое отображается после временного интервала, но как выполнить код при отображении уведомления. У меня нет проблемы, отображается приложение или нет после push-уведомления.
2. Я хочу просто вызвать api при отображении уведомления, чтобы обновить широту / длину местоположения.
3. как реализовать это в локальном push-уведомлении, поскольку мое приложение отправляет локальное уведомление через каждые 30 минут.