Как Grammarly Keyboard обошла ограничения песочницы расширения клавиатуры iOS для полнотекстового доступа и управления кIOS

Программируем под IOS
Ответить
Anonymous
 Как Grammarly Keyboard обошла ограничения песочницы расширения клавиатуры iOS для полнотекстового доступа и управления к

Сообщение Anonymous »

🚀 Как Grammarly Keyboard обходит песочницу расширения клавиатуры iOS для полнотекстового доступа и управления курсором?
Здравствуйте, разработчики Swift/iOS!
В настоящее время я работаю над расширенным проектом AI Keyboard (похожим на Grammarly) и заметил некоторое поведение, которое, похоже, бросает вызов известным ограничениям песочницы расширения клавиатуры iOS. Я пытаюсь понять, как этого удалось добиться.
1. Протестированные сценарии (наблюдаемое поведение)
Я провел два конкретных теста, которые показали, что Grammarly Keyboard получает доступ к данным, выходящим за рамки стандартного TextDocumentProxy:
  • Сценарий 1: Полнотекстовое распознавание
    • I набрал предложение с помощью Grammarly Keyboard (например, «Я мальчик»).
    • Я переключился на родную клавиатуру iOS и набрал другое предложение с новой строки (например, «Ты девочка»).
    • Когда я обратно переключился на Grammarly Keyboard, она смогла читать и выполнять проверку грамматики на весь текст в TextView (как «Я мальчик», так и «Ты девочка»).
  • Сценарий 2: Детальное управление курсором

    Клавиатура Grammarly позволяет пользователю нажмите и удерживайте клавишу пробела и проведите пальцем по области клавиатуры, чтобы переместить курсор в любое желаемое положение во всем текстовом поле.

2. Ограничение политики песочницы iOS
В соответствии с моделью безопасности Apple для расширений клавиатуры:
  • Расширения предназначены для запуска в отдельном контейнере, что серьезно ограничивает их доступ к данным ведущего приложения или иерархии представлений.
  • Стандартный доступ через TextDocumentProxy обычно ограничивается непосредственный окружающий текст (

    Код: Выделить всё

    documentContextBeforeInput
    и documentContextAfterInput) и стандартные команды манипулирования текстом.
  • Непосредственное чтение полного содержимого TextView или вычисление положения курсора на основе координат экрана обычно невозможно без нарушения изолированной программной среды.
3. Вопрос: возможные обходные пути?
Учитывая эти ограничения и наблюдаемое поведение, я хотел бы спросить сообщество:
Как, по вашему мнению, Grammarly (или аналогичным сложным сторонним клавиатурам) удается обойти эти ограничения на iOS?
Существуют ли какие-либо известные, но недокументированные методы или безопасные методы обходные пути для:
  • A. Безопасного доступа ко всему содержимому текущего поля ввода?
  • B. Получения управления на основе координат для точного позиционирования курсора в любом месте текста?
Есть ли какие-либо сведения о том, может ли это быть сложным эвристика, частные API или определенные уязвимости платформы (которых следует избегать) будут высоко оценены. Я намерен ответственно подходить к реализации этой задачи в соответствии с рекомендациями Apple, если существует стандартный подход.
Спасибо за ваш опыт!

Подробнее здесь: https://stackoverflow.com/questions/797 ... ictions-fo
Ответить

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

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

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

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

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