Push-уведомления по WiFi

В приложении Boingo Wi-Finder iOS я заметил, что приложение вызывает уведомление пользователю после того, как он достиг точки доступа, зарегистрированной в базе данных Boingo. Уведомление сообщает пользователю, что он может получить доступ к Wi-Fi-сети.

Как это делается iOS?

Ответ 1

Я думаю, что это можно сделать, наблюдая за подключением устройства с помощью Reachability class в AppDelegate didFinishLaunchingWithOptions и когда networkStatus равно ReachableViaWiFi, тогда вызовите application.registerForRemoteNotifications()

Обновить: существует 2 типа уведомлений: Remote и Local вы можете настроить приложение для отправки локального уведомления, но вам нужно установить его содержимое раньше, здесь вы можете найти руководство Apple о том, как обрабатывать локальное уведомление

Ответ 2

Вы можете использовать CLLocationManager и UserNotifications, чтобы достичь этого.

Вы можете использовать службы мониторинга региона, такие как CLCircularRegion класс (для получения географических регионов) или CLBeaconRegion класс (для получения областей маяка), чтобы получать уведомление, когда пользователь пересекает границу на основе региона. Если пересечение границы происходит, даже если ваше приложение не работает, система автоматически разбудит его (или перезапустит) в фоновом режиме, чтобы он мог обработать событие.

В этом случае словарь параметров, переданный методу приложения (_: didFinishLaunchingWithOptions:) вашего делегата приложения, содержит UIApplicationLaunchOptionsKey.location. Затем вызвать локальное уведомление, чтобы уведомить пользователя о доступных услугах в этом месте.

<сильные > Примеры: -

NB. Как было предложено в других ответах класса Достижимость, мы также можем использовать. Но Reachability не может использоваться, если приложение находится в фоновом режиме или завершено. Чтобы вызвать достижимость, когда приложение находится в фоновом режиме, мы можем следовать этому: fooobar.com/questions/273896/.... Но, к сожалению, недостатком здесь является то, что чем чаще фоновая выборка настроена на работу в приложении, тем больше ресурсов будет использовано. iOS защищает себя и устройство, применяя ограничения на приложения, которые пытаются использовать API очень часто, поэтому будьте осторожны при настройке пользовательских временных интервалов. Также Фоновая выборка очень быстро разрядит аккумулятор.

Также, только если приложение подключится к этой сети Wi-Fi, Reachability может инициировать уведомление. Но Boingo уведомит пользователя, даже если приложение находится в фоновом режиме, и телефон еще не подключен к Wi-Fi. Поэтому я сильно подозреваю, что они используют службы определения местоположения, чтобы определить, введен ли пользователь в область, где доступен Wi-Fi.

Ответ 3

Вы можете получить SSID точки доступа Wi-Fi, и если он зарегистрирован, вы можете следовать ответам Мохи. Проверьте следующую ссылку.

Как получить Wi-Fi SSID в iOS9 после того, как CaptiveNetwork устарела, и вызовы Wifi-имени уже заблокированы

Это поможет вам получить SSID точки доступа Wi-Fi.