Можно ли построить сокетное соединение между двумя устройствами iOS

Можно ли создать сокетное соединение между двумя устройствами iOS, подключенными к одной сети (без сети)?

если это возможно .. Полезен ли для меня (проект CocoaAsyncSocket)?

Я просто хочу отправить сообщение с Устройства А на Устройство Б, которое переводит приложение в фоновый режим .. когда Устройство Б получает сообщение, оно должно отображаться уведомление, чтобы вернуть приложение на передний план.

Это не для App Store, поэтому меня не волнует, отклонит ли Apple приложение из-за такого поведения.


person Husam    schedule 16.09.2012    source источник
comment
Смотрю на другой ваш вопрос... для этой проблемы вы тоже хотите сделать подключение по вайфаю, без доступа к сети оператора?   -  person Nate    schedule 17.09.2012
comment
Я просто хочу использовать локальную сеть, такую ​​​​как ad-hoc, но без интернет-сигнала, если это возможно ... спасибо, Нейт, за быстрый ответ.   -  person Husam    schedule 17.09.2012


Ответы (1)


Да, вы можете это сделать, и да, CocoaAsyncSocket было бы полезно. Если вам не нужно беспокоиться о брандмауэрах и фильтрах сети оператора, то вы, безусловно, сможете создать клиент-серверное приложение, работающее на двух устройствах iOS. Один открывает сокет сервера для прослушивания, а другой (клиент) подключается через сеть Wi-Fi.

Попробуйте выполнить поиск в Google (например, "CocoaAsyncSocket iPhone iOS site:stackoverflow.com") или прямо здесь, в Stack Overflow.

Вот кто-то, кто, похоже, добился этого

Еще одна ссылка

И сообщение от самого Робби Хэнсона, отсылающее вас к проектам EchoServer в репозитории github.

проект EchoServer

Возможно, вам придется использовать статический IP-адрес для серверного устройства (я не уверен, насколько вы контролируете конфигурацию сети Wi-Fi) или использовать некоторые другой механизм, позволяющий двум устройствам обнаруживать друг друга.

person Nate    schedule 16.09.2012
comment
Ваши слова помогли мне, я успешно построил клиент-серверное приложение по вашему совету, я использовал GCDAsyncSocket... но столкнулся с другой проблемой :( - person Husam; 19.09.2012
comment
устройство-слушатель не может читать данные, полученные в фоновом режиме, пока они не будут переведены на передний план... другими словами, делегат зависает в фоновом режиме.. Я хочу прочитать данные, полученные в фоновом режиме, чтобы показать, что локальное уведомление содержит кнопку (Показать приложение) XD ... у вас есть какие-нибудь идеи, чтобы исправить? Спасибо - person Husam; 19.09.2012
comment
@Husam, я считаю, что iOS отключает сокеты, когда ваше приложение переходит в фоновый режим. поскольку вы сказали, что это не для магазина приложений, вы можете попробовать это решение. по сути, ваше приложение притворяется приложением voip, что позволяет ему поддерживать сетевые подключения даже в фоновом режиме. Я думаю, вам может понадобиться добавить фоновую задачу, чтобы это заработало... см. предоставленную ссылку. в качестве альтернативы, если вы можете взломать телефон, вы можете соберите приложение как Launch Daemon - person Nate; 19.09.2012
comment
Я нашел простое решение... Я установлю Backgrounder из Cydia, чтобы приложение работало в фоновом режиме. Спасибо, вы оказали мне огромную услугу. - person Husam; 19.09.2012
comment
@Хусам, отлично. Я рад, что это сработало. Вы, конечно, можете делать много замечательных вещей с iPhone, если он взломан! - person Nate; 20.09.2012