Как специальная клавиатура Google для iOS, Gboard, программно закрывает самое переднее приложение?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как специальная клавиатура Google для iOS, Gboard, программно закрывает самое переднее приложение?

Сообщение Anonymous »


Специальное приложение Google для iOS, Gboard, имеет интересную функцию, которую невозможно реализовать с помощью общедоступных API в iOS SDK (начиная с iOS 10). Мне хотелось бы точно знать, как Google выполняет задачу программного возврата одного приложения в стек переключения приложений в Gboard.

Пользовательские клавиатуры iOS состоят из двух основных компонентов: приложения-контейнера и расширения приложения для клавиатуры. Расширение приложения клавиатуры запускается в отдельном процессе ОС, который запускается всякий раз, когда пользователь находится в любом приложении на своем телефоне, требующем ввода текста.

Вот приблизительные шаги, которые можно выполнить с помощью Gboard, чтобы увидеть эффект программного возврата к предыдущему приложению:
[*]Пользователь запускает приложение Apple Messages на своем iPhone и касается текстового поля, чтобы начать ввод текста. [*]Запускается расширение клавиатуры Gboard, и пользователи видят пользовательскую клавиатуру Gboard (пока они все еще находятся в приложении Apple Messages). [*]Пользователь нажимает кнопку микрофона внутри расширения клавиатуры Gboard, чтобы выполнить голосовой ввод. [*]Gboard использует специальную схему URL-адресов для запуска приложения-контейнера Gboard. Клавиатура Gboard и приложение «Сообщения Apple» перенесены на один уровень в стеке приложений, а приложение-контейнер Gboard теперь является самым передним приложением в стеке приложений. Приложение-контейнер Gboard использует микрофон для прослушивания речи пользователя и переводит ее в текст, который помещается на экран. [*]Пользователь нажимает кнопку «Готово», когда его устраивает ввод текста, который он видит на экране. [*]Здесь происходит волшебство… при закрытии экрана ввода текста приложение-контейнер Gboard также автоматически закрывается. Приложение-контейнер Gboard удаляется и заменяется приложением Apple Messages (иногда процесс расширения клавиатуры Gboard все еще активен, иногда он перезапускается, а иногда его необходимо перезапустить вручную, нажав внутри текстового поля). Как Google добивается этого? [*]Наконец, пользователь видит только что переведенный текст, автоматически вставленный в поле ввода текста. Предположительно, Google достигает этого, обмениваясь данными между приложением-контейнером Gboard и расширением клавиатуры.
Я предполагаю, что Google использует частные API, исследуя иерархию представлений строки состояния с помощью самоанализа среды выполнения Objective-C и каким-то образом синтезируя события касания или вызывая открытую цель/действие. Я изучил это очень мало и смог найти интересные подклассы UIView внутри строки состояния, например UIStatusBarBreadcrumbItemView, который содержит массив UISystemNavigationActions. Я продолжаю изучать эти классы в надежде найти способ воспроизвести взаимодействие с пользователем.

Я понимаю, что использование частных API — это хороший способ отклонить отправку вашего приложения в App Store. Это не проблема, которую я хотел бы затронуть в ответе. В первую очередь я ищу конкретные ответы о том, как именно Google выполняет задачу программного возврата одного приложения в стек переключения приложений в Gboard.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Уважает ли GBoard принудительную темную тему?
    Anonymous » » в форуме Android
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как построить пользовательскую клавиатуру Android с Kotlin и JetPack Compose, как Gboard или SwiftKey?
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • IIS закрывает одно действие в приложении (закрывает один контроллер)
    Anonymous » » в форуме C#
    0 Ответы
    74 Просмотры
    Последнее сообщение Anonymous
  • IIS закрывает одно действие в приложении (закрывает один контроллер)
    Anonymous » » в форуме C#
    0 Ответы
    72 Просмотры
    Последнее сообщение Anonymous
  • Приложение для iPad на MacOS: это нативная клавиатура или пользовательская клавиатура? [закрыто]
    Anonymous » » в форуме IOS
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»