Как общаться с сервером без подключения к Интернету?

Я хочу знать, есть ли способ связаться с пользователями без подключения к Интернету на сервере.

Я думал, что это возможно с помощью SMS и машиночитаемой кодировки. Однако этот вопрос подтверждает, что приложения iOS позволяют отправлять, но не читать SMS: iphone app reading sms

Я также много читал об использовании USSD, но кажется, что мобильные открытые сообщения в iOS невозможны ( наберите код USSD с программным обеспечением iphone ), а в Android можно запрограммировать код программно, нет API USSD, ни Можно отправлять сообщения USSD молча.

Есть ли способ передать данные между моим приложением и моим сервером только с базовым сигналом голоса-sms?

Solutions Collecting From Web of "Как общаться с сервером без подключения к Интернету?"

Вы правы, что СМС может использоваться для связи с сервером, если сервер имеет доступ к GSM-модему. Для больших объемов SMS-сообщений вы ожидаете иметь интернет-соединение между вашим сервером и шлюзом SMS, который подключается непосредственно к центру обмена сообщениями в мобильной сети вместо модема.
Это модель серверов SMS-голосования.

Вы можете отправлять / получать SMS, если у вас есть сеть GSM, и вы правы; IP-соединение не требуется. Платформа Android позволяет отправлять и получать SMS-сообщения – см. Здесь.

Недостатки в том, что SMS может быть дорогостоящим и не имеет гарантированной доставки и не гарантируется срок поставки. Он не подходит для общения в режиме реального времени.

USSD – это еще одна форма связи между мобильным устройством и сетью, которая встроена непосредственно в сеть GSM, но сообщения USSD принадлежат или лицензируются сетевыми операторами и не являются бесплатными для использования пользователями, поскольку это SMS.

EDIT: USSD не является родным протоколом в CDMA, но различные реализации доступны от разных операторов. Например, вот патентная заявка, описывающая идею для одной такой системы, которая, как представляется, не требует IP-соединения. Googling «USSD CDMA» также дает различные новости о коммерческих реализациях, технические данные неизвестны. Я думаю, вам просто нужно выяснить, что предлагает ваш целевой оператор (ы).

Я не работал напрямую с WAP, но взгляд на стек протокола WAP показывает, что он действительно может работать через CDMA или GSM без IP-соединения. Существует также очень полезная статья в Википедии . Мой опыт тестирования MMS заключается в том, что он обычно не работает без IP-соединения, хотя предполагается, что он (согласно этой статье Wiki, с WAP / SMS). Поэтому я бы поставил под вопрос, насколько европейские операторы или мобильные устройства поддерживают или тестируют WAP. Вне зависимости от того, будет ли WAP практическим выбором, доступ к цене / доступности в конце дня, а не технические проблемы.

Ну, есть еще и другие варианты, в зависимости от объема данных, которые вам нужно передавать обратно и вперед на сервер.

Вместо sms, для небольшого количества данных вы можете попытаться реализовать Asterisk PBX , когда ваш мобильный телефон вызывается на вашем сервере, а затем отправляет другие цифры DTMF в качестве ваших данных, что будет интерпретироваться вашей АТС Asterisk (например, интерактивное звуковое меню телефона из Ваша кабельная компания). Asterisk является открытым исходным кодом GPL.

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

Ваш сервер может проверять эти данные, сохраняя содержимое на принимающей стороне. Просто запись вызова с подключенной платы факса / модема pci, или вы можете использовать сервер PBX Asterisk на локальном компьютере для сохранения аудиофайла, а затем обработки вашим серверным программным обеспечением.

В любом случае вам нужно будет создать новый тип протокола и типа данных, например, вы упомянули «машиночитаемое кодирование».

Таким образом, для типов данных вы могли бы просто сохранить много коротких аудиофайлов на своем мобильном устройстве и воспроизвести их как свои типы данных, но было бы проще просто пойти на DTMF, уже упомянутый выше. Или вы можете кодировать так: получить спектр звука, разрешенный для использования через речевой вызов (широкополосный / узкополосный) , и разделить его на количество отдельных символов или фрагментов (посмотрите, как кодировать в base64 , чтобы иметь некоторые идеи). Затем создайте функцию, чтобы просто кодировать ваши данные в виде короткого аудиопотока (читайте о кодировании PCM, а также читайте больше о быстрых преобразованиях Фурье , если вы хотите еще больше усложнить (но ускорить).

Создайте простой протокол следующим образом: первый аудиопакет представляет собой последовательность тонов, которая делает запрос, проверяет подлинность и ожидает ответа на подтверждение с сервера (что может быть просто не отбрасыванием вызова через 1 секунду после этого). Второй аудиопакет – это размер первого кадра данных, затем третий аудиопакет – это сами данные с размером, указанным ранее. И так далее. Для простоты взгляните на описание протокола ftp. Затем вам нужно доработать его так, чтобы время каждого вышеперечисленного пакета было наименее возможным, в то время как мантируя его.

Для экономии средств при голосовом вызове вы также можете изучить варианты номера телефона, такие как Google Voice, Skype или любой сервис Voip.