#ios #swift #bluetooth-lowenergy #core-bluetooth #multipeer-connectivity
#iOS #swift #bluetooth-низкое энергопотребление #ядро-bluetooth #multipeer-подключение
Вопрос:
Я хочу включить функцию в свое мобильное приложение, с помощью которой я получаю уведомления через push notification
о близлежащих пользователях, у которых также есть мобильное приложение и которые идентифицируются как мой «друг» — даже когда приложение работает в фоновом режиме.
Пример: пользователь A и Пользователь B являются друзьями в приложении, пользователь A находится в непосредственной близости от пользователя B. Оба предупреждены о присутствии друг друга.
Есть ли какое-либо рекомендуемое решение, которое я должен изучить, чтобы выполнить этот вариант использования? Я знаю о iBeacons
, BLE
и Multipeer Network Connectivity
, но, по общему признанию, не полностью понимаю их концептуально и что возможно. Кроме того, есть какой-нибудь доступный учебник для новичка? Я пробовал просматривать веб-страницы и не смог их найти.
Любые рекомендации будут оценены.
Комментарии:
1. вы можете проверить местоположение пользователя в фоновом режиме и рассчитать расстояние между пользователями на стороне сервера и отправленные уведомления, если это необходимо
2. «вы можете проверить местоположение пользователя в фоновом режиме …» Нет, вы не можете. Только пошаговым приложениям GPS разрешено постоянно считывать данные с GPS в фоновом режиме. Другие приложения получают всего несколько минут фонового времени, прежде чем они будут приостановлены и перестанут получать фоновое время.
Ответ №1:
Я не думаю, что есть решение, которое позволит вам сделать это, когда устройство заблокировано. Вы можете отслеживать сигналы iBeacon в фоновом режиме, и ваше приложение даже запустится при обнаружении маяка. Однако все копии вашего приложения должны будут транслировать сигналы маяка, а вы не можете этого сделать, пока устройство заблокировано или более чем на пару минут, пока ваше приложение работает в фоновом режиме.
То же самое верно для мониторинга вашего местоположения по GPS и трансляции его в сеть. Возможно, вы сможете использовать уведомление «значительное изменение местоположения» для определения того, когда пользователь перемещается на значительное расстояние, но это может не дать вам необходимого разрешения.
Комментарии:
1. Спасибо за отзыв. Будет ли следующее потенциально работать? Разрешить фоновые обновления местоположения и отслеживать значительные изменения местоположения с помощью диспетчера местоположений, а в
didUpdateLocations
методе делегирования запустить функцию, которая запускает серверную часть, чтобы определить, находятся ли другие пользователи поблизости, на основе координат, которые сохраняются, когда у других пользователей есть свойdidUpdateLocations
огонь? И отправлять push-уведомления после этого?2. Да, это должно сработать, но вы можете не получить необходимое разрешение или быстрые обновления. Я предлагаю настроить тестовое приложение с настроенными уведомлениями о значительных изменениях местоположения и заставлять его подавать звуковой сигнал каждый раз, когда ваше приложение получает обновление, и отображать обновление местоположения в виде pin-кода на карте, а затем ходить и оценивать, достаточно ли оно частое и / или точное для ваших нужд.