TG Telegram Group & Channel
Будни разработчика | United States America (US)
Create: Update:

#заметка дня

Быть в отпуске, который никак заранее не планировал, а в конце которого — полная смена работы (и даже отчасти деятельности: из продукта в дизайн-систему) — штука довольно тяжёлая.

С одной стороны, на работу ходить не надо. С другой — нужно как-то себя развлекать!

Зато, наконец, появилось время добить пульт на Flutter и запустить его на телефоне.

Не без проблем, конечно. И с Android, и с iOS.

Если с Android всё более-менее понятно — старая конфигурация, мелкие баги, — то с iOS…

Симулятор против реальности

iOS на симуляторе и iOS на реальном устройстве — это две совершенно разные iOS.

Нам никто не обещал полноценной эмуляции. Да, симулятор упрощает вход в разработку. Но почему бы не предупреждать разработчиков, что потом всё пойдёт не так?

Хотя, признаюсь, в половине случаев виноват сам.

Например, приложение падало при поиске телевизоров, который у меня реализован через SSDP (Service Discovery Protocol). Это работает через мультикаст (multicast) — а это уже отдельный мир.

Оказывается:

- Мультикаст — это отдельное разрешение, scope.
- Его нужно объявлять в конфигураци приложения.
- Потом — проходить модерацию в App Store.

Более того, нужно заранее уведомить Apple и получить соответствующий сертификат ещё до начала разработки.

И всё это — только если у тебя есть разработческий аккаунт за $99 в год. Без него — даже не пробуй.

А симулятор? Он позволяет всё. Мультикаст работает без проблем. Никаких предупреждений. Всё как по маслу — пока не ставишь приложение на свой собственный iPhone.

Решения

Окей. Я решил:

- Оставлю поиск включённых телевизоров на более дружелюбных ОС.
- Добавлю fallback — диалог ручного ввода IP-адреса телевизора.

Это помогло.

Но тут всплыла новая проблема — Wake-On-LAN не работает.

Хотя он должен работать даже по Wi-Fi: ваши «умные» устройства де-факто никогда не выключаются. Но я забыл, что у телефона две сети — Wi-Fi и сотовая. А вещать нужно в Wi-Fi.

Когда я начал фильтровать интерфейсы по ключевым словам (например, en на iOS/macOS или wlan на Android/Linux), всё наконец заработало.

SSDP без мультикаста?

И тут меня осенило: а можно ли использовать SSDP без мультикаста — через broadcast?

Ответ — да! Достаточно:

- Изменить IP шлюза.
- Отключить присоединение к мультикаст-группе.

Поиск устройств заработал. Никаких разрешений от Apple не нужно. Всё прекрасно!

Даже пока не надо тратить сотку...

Хотя ручное добавление по IP я всё равно оставил — на всякий случай.

Кстати, на эмуляторе Android ни SSDP, ни WebSockets — пока не работают... Вот вам и минус мультиплатформенной разработки — приходится разбираться в нюансах вообще всего.

Зато на iOS, macOS, Linux и Windows теперь всё просто прекрасно.

#flutter #ios

Media is too big
VIEW IN TELEGRAM
#заметка дня

Быть в отпуске, который никак заранее не планировал, а в конце которого — полная смена работы (и даже отчасти деятельности: из продукта в дизайн-систему) — штука довольно тяжёлая.

С одной стороны, на работу ходить не надо. С другой — нужно как-то себя развлекать!

Зато, наконец, появилось время добить пульт на Flutter и запустить его на телефоне.

Не без проблем, конечно. И с Android, и с iOS.

Если с Android всё более-менее понятно — старая конфигурация, мелкие баги, — то с iOS…

Симулятор против реальности

iOS на симуляторе и iOS на реальном устройстве — это две совершенно разные iOS.

Нам никто не обещал полноценной эмуляции. Да, симулятор упрощает вход в разработку. Но почему бы не предупреждать разработчиков, что потом всё пойдёт не так?

Хотя, признаюсь, в половине случаев виноват сам.

Например, приложение падало при поиске телевизоров, который у меня реализован через SSDP (Service Discovery Protocol). Это работает через мультикаст (multicast) — а это уже отдельный мир.

Оказывается:

- Мультикаст — это отдельное разрешение, scope.
- Его нужно объявлять в конфигураци приложения.
- Потом — проходить модерацию в App Store.

Более того, нужно заранее уведомить Apple и получить соответствующий сертификат ещё до начала разработки.

И всё это — только если у тебя есть разработческий аккаунт за $99 в год. Без него — даже не пробуй.

А симулятор? Он позволяет всё. Мультикаст работает без проблем. Никаких предупреждений. Всё как по маслу — пока не ставишь приложение на свой собственный iPhone.

Решения

Окей. Я решил:

- Оставлю поиск включённых телевизоров на более дружелюбных ОС.
- Добавлю fallback — диалог ручного ввода IP-адреса телевизора.

Это помогло.

Но тут всплыла новая проблема — Wake-On-LAN не работает.

Хотя он должен работать даже по Wi-Fi: ваши «умные» устройства де-факто никогда не выключаются. Но я забыл, что у телефона две сети — Wi-Fi и сотовая. А вещать нужно в Wi-Fi.

Когда я начал фильтровать интерфейсы по ключевым словам (например, en на iOS/macOS или wlan на Android/Linux), всё наконец заработало.

SSDP без мультикаста?

И тут меня осенило: а можно ли использовать SSDP без мультикаста — через broadcast?

Ответ — да! Достаточно:

- Изменить IP шлюза.
- Отключить присоединение к мультикаст-группе.

Поиск устройств заработал. Никаких разрешений от Apple не нужно. Всё прекрасно!

Даже пока не надо тратить сотку...

Хотя ручное добавление по IP я всё равно оставил — на всякий случай.

Кстати, на эмуляторе Android ни SSDP, ни WebSockets — пока не работают... Вот вам и минус мультиплатформенной разработки — приходится разбираться в нюансах вообще всего.

Зато на iOS, macOS, Linux и Windows теперь всё просто прекрасно.

#flutter #ios


>>Click here to continue<<

Будни разработчика




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)