Отправлять Push-уведомления в iOS/Android на закрытом Wi-Fi nework (без подключения к Интернету)

Я хотел бы создать приложение, которое пользователи могут использовать в области/месте, где есть НЕТ GSM/3G или какой-либо прием ячейки. Мы также предоставляем только закрытую сеть Wi-Fi без интернет-восходящей линии связи, поэтому это локальная сеть, где устройства (ПК и смартфоны) могут взаимодействовать друг с другом, но не с внешним миром (не спрашивайте, почему:)

Пользователям будет предложено загрузить приложение, прежде чем они придут на место проведения.

Мое приложение должно иметь возможность получать push-уведомление, но, конечно же, оно не может попасть в сервисы Apple APNS или Google cloud messaging. Однако приложение регистрируется на нашем центральном сервере в локальной сети с IP-адресом. (он регистрируется, когда пользователь подключен к сети WiFi, и у нас есть номер телефона, который принадлежит зарегистрированному телефону.)

Теперь мой вопрос: есть ли способ отправить push-уведомление при срабатывании события, и приложение должно просыпаться без использования или подключения к службам уведомлений Apple или Google? Например. услугу push-уведомления о помещениях, которая может использоваться для отправки уведомления на телефон пользователя на основе события, которое запускается нашим сервером?
Любые предложения?

Обновление: просто для того, чтобы уточнить, это простое приложение VoiP, которое подключается к нашему серверу sip и позволяет пользователям звонить друг другу, поэтому для двух вызовов для подключения требуется довольно реальное время. Но, видимо, вы можете только разбудить приложение путем push-уведомления, и поэтому вам нужен интернет.

Ответ 1

например. услугу push-уведомления о помещениях, которая может использоваться для отправки уведомления на телефон пользователя на основе события, которое запускается нашим сервером?

Что касается Android, ответ "не совсем". Ваши варианты:

  • Внедрите свой механизм "push" в виде некоторой очереди сообщений, где опрос устройств ищет сообщения так часто, или

  • Используйте WakeLock и WifiLock, чтобы постоянно поддерживать устройство (и WiFi), а затем использовать что-то вроде MQTT для push-сообщения

Любой из них будет плохой для батареи, хотя первый из них более конфигурируется с точки зрения утечки энергии (например, если вы проверяете сообщения только один раз в час, это будет не так).

Причина, по которой GCM может поддерживать низкое энергопотребление, вызвана специальными перехватами для мобильных соединений данных в операционной системе и чипсете, так что CPU может отключиться, сохраняя открытое соединение сокетов на push-сервере, где входящие пакеты от этот сервер разбудит устройство. Это недоступно для WiFi.

Ответ 2

И для iOS ответ НЕТ. Вы не можете указывать устройство без использования Apple APNS-сервера. Ваш единственный вариант - это локальные уведомления, инициированные каким-либо другим способом на устройстве через WiFi, хотя вам все равно нужно будет поддерживать устройство в ожидании, чтобы получить их, или, возможно, добавить службу VOIP или другую совместимую службу, чтобы обеспечить непрерывную фоновую обработку.

Локальные уведомления iOS

Ответ 3

Вероятно, вы давно решили или отказались от своей конкретной проблемы. Но для справки iOS эволюционировала с годами и теперь поддерживает точный тип функций VOIP, которые вы описываете.

Приложение Voice over Internet Protocol (VoIP) позволяет пользователю создавать телефонные звонки с использованием интернет-соединения вместо устройств сотовая связь. Такое приложение должно поддерживать постоянную сеть соединение с его ассоциированной службой, чтобы оно могло звонки и другие соответствующие данные. Вместо того, чтобы поддерживать VoIP-приложения, время, система позволяет им приостанавливаться и обеспечивает средства для мониторинга их гнезд для них. При поступлении трафика, система пробуждает приложение VoIP и возвращает контролируя его сокеты.