Обнаруживать ближайших пользователей и уведомлять с помощью Push-уведомления iOS

#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-кода на карте, а затем ходить и оценивать, достаточно ли оно частое и / или точное для ваших нужд.