Пульт для Samsung Smart TV (Tizen, 2016 и новее) на iPhone: тачпад-мышь, голосовой ввод текста в поля на телевизоре, кнопки пульта.
Управление идёт напрямую по локальной сети, через wss://IP:8002/api/v2/channels/samsung.remote.control. Без облака и аккаунтов.
Голосовой ввод. Системный SFSpeechRecognizer (русский и английский, работает офлайн). Пока говоришь, текст отправляется в открытое на телевизоре поле ввода командой SendInputString. Кнопка подсвечивается зелёным, когда телевизор сообщает, что клавиатура открыта.
Тачпад-мышь. Палец по панели двигает курсор на телевизоре (ProcessMouseDevice), тап = левый клик, рядом ползунок чувствительности. Курсор поддерживают не все модели: на многих он работает только в браузере телевизора.
Кнопки. D-pad и OK, назад, домой, выход, питание, источник, меню, громкость, каналы, перемотка, цифры.
Поиск телевизора сканированием подсети по порту 8001.
Нужен Xcode и xcodegen:
brew install xcodegen./build.shНа выходе TVRemote.ipa, неподписанный. Заливается на iPhone через Sideloadly (подпишет вашим Apple ID) или AltStore.
- iPhone и телевизор в одной Wi-Fi сети, телевизор включён.
- Нажать лупу, поиск найдёт телевизор. Или ввести IP вручную.
- На телевизоре подтвердить подключение устройства. Потом список разрешённых устройств лежит в Настройки, Основные, Диспетчер внешних устройств, Диспетчер подключения устройств.
Токен доступа телевизор выдаёт при первом подключении, хранится локально в UserDefaults.
Включить выключенный телевизор нельзя, для этого нужен Wake-on-LAN, он не реализован.
Протокол неофициальный, восстановлен реверс-инжинирингом. Набор рабочих команд отличается от модели к модели.
Sources/TV.swift, протокол и поиск телевизора. Sources/Dictation.swift, распознавание речи. Sources/App.swift, интерфейс. project.yml, описание проекта для xcodegen. build.sh, сборка IPA.