<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%B0%D1%81%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F_%D1%81_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0%D0%BC%D0%B8</id>
	<title>Маскировка взаимодействия пользователя с мобильными интерфейсами - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%B0%D1%81%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F_%D1%81_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0%D0%BC%D0%B8"/>
	<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%9C%D0%B0%D1%81%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F_%D1%81_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0%D0%BC%D0%B8&amp;action=history"/>
	<updated>2026-09-16T13:26:02Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://doc.ruscomtech.ru/index.php?title=%D0%9C%D0%B0%D1%81%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F_%D1%81_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0%D0%BC%D0%B8&amp;diff=6604&amp;oldid=prev</id>
		<title>IKuznetsov: Новая страница: «= Маскировка взаимодействия пользователя с мобильными интерфейсами =  &#039;&#039;&#039;Ранний доступ&#039;&#039;&#039;  Взаимодействия пользователя фиксируют имена элементов пользовательского интерфейса, таких как метки кнопок или названия полей ввода. Если эти имена содержат или...»</title>
		<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%9C%D0%B0%D1%81%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F_%D1%81_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%D0%B8_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0%D0%BC%D0%B8&amp;diff=6604&amp;oldid=prev"/>
		<updated>2026-08-19T18:16:02Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «= Маскировка взаимодействия пользователя с мобильными интерфейсами =  &amp;#039;&amp;#039;&amp;#039;Ранний доступ&amp;#039;&amp;#039;&amp;#039;  Взаимодействия пользователя фиксируют имена элементов пользовательского интерфейса, таких как метки кнопок или названия полей ввода. Если эти имена содержат или...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Маскировка взаимодействия пользователя с мобильными интерфейсами =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ранний доступ&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Взаимодействия пользователя фиксируют имена элементов пользовательского интерфейса, таких как метки кнопок или названия полей ввода. Если эти имена содержат или раскрывают личную информацию, можно скрыть отдельные представления, чтобы имена их элементов пользовательского интерфейса были заменены на &amp;lt;code&amp;gt;***&amp;lt;/code&amp;gt; в зафиксированных взаимодействиях.&lt;br /&gt;
&lt;br /&gt;
В ваши обязанности входит выявление того, какие представления и компоненты вашего приложения могут раскрывать персональные данные, и соответствующее маскирование.&lt;br /&gt;
&lt;br /&gt;
== Маскирование отображения в нативных приложениях Android ==&lt;br /&gt;
&lt;br /&gt;
Установите тег &amp;lt;code&amp;gt;data-dt-mask&amp;lt;/code&amp;gt; для представления.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kotlin&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myView.tag = &amp;quot;data-dt-mask&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Java&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myView.setTag(&amp;quot;data-dt-mask&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате взаимодействия имя представления будет заменено на &amp;lt;code&amp;gt;***&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Маскируемые элементы в Android Jetpack Compose ==&lt;br /&gt;
&lt;br /&gt;
Примените модификатор &amp;lt;code&amp;gt;dtMask()&amp;lt;/code&amp;gt; к составному элементу.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Button(&lt;br /&gt;
    onClick = { /* ... */ },&lt;br /&gt;
    modifier = Modifier.dtMask()&lt;br /&gt;
) {&lt;br /&gt;
    Text(&amp;quot;Оплатить сейчас&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате взаимодействия имя составного элемента будет заменено на &amp;lt;code&amp;gt;***&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Маскирование отображения нативных элементов iOS ==&lt;br /&gt;
&lt;br /&gt;
Установите для параметра &amp;lt;code&amp;gt;accessibilityIdentifier&amp;lt;/code&amp;gt; вида значение &amp;lt;code&amp;gt;data-dt-mask&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Swift&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myView.accessibilityIdentifier = &amp;quot;data-dt-mask&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objective-C&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myView.accessibilityIdentifier = @&amp;quot;data-dt-mask&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате взаимодействия имя представления будет заменено на &amp;lt;code&amp;gt;***&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Маскирование представлений в iOS SwiftUI ==&lt;br /&gt;
&lt;br /&gt;
Используйте модификатор &amp;lt;code&amp;gt;.astromkeyMasked()&amp;lt;/code&amp;gt; или установите значение &amp;lt;code&amp;gt;accessibilityIdentifier&amp;lt;/code&amp;gt; на &amp;lt;code&amp;gt;data-dt-mask&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Модификатор ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Button(&amp;quot;Оплатить сейчас&amp;quot;) {&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
.astromkeyMasked()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Доступность ID ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Button(&amp;quot;Оплатить сейчас&amp;quot;) {&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
.accessibilityIdentifier(&amp;quot;data-dt-mask&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате взаимодействия имя представления будет заменено на &amp;lt;code&amp;gt;***&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Взаимодействие с масками в React Native ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;React Native&amp;#039;&amp;#039;&amp;#039; поддерживает два подхода к маскированию: маскирование на основе маркеров с использованием свойства &amp;lt;code&amp;gt;dtMask&amp;lt;/code&amp;gt; и маскирование на основе правил через конфигурацию.&lt;br /&gt;
&lt;br /&gt;
=== Используйте маскирование на основе маркеров ===&lt;br /&gt;
&lt;br /&gt;
Чтобы скрыть компонент и все его дочерние элементы, добавьте свойство &amp;lt;code&amp;gt;dtMask&amp;lt;/code&amp;gt; к любому родительскому представлению.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;View dtMask&amp;gt;&lt;br /&gt;
  &amp;lt;Pressable onPress={onPress}&amp;gt;&lt;br /&gt;
    &amp;lt;Text&amp;gt;john.doe@example.com&amp;lt;/Text&amp;gt;&lt;br /&gt;
  &amp;lt;/Pressable&amp;gt;&lt;br /&gt;
&amp;lt;/View&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Любое взаимодействие, разрешаемое через поддерево с предком &amp;lt;code&amp;gt;dtMask&amp;lt;/code&amp;gt;, маскируется. Взаимодействие по-прежнему фиксируется, но имя элемента пользовательского интерфейса заменяется на &amp;lt;code&amp;gt;***&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Используйте маскирование на основе правил ===&lt;br /&gt;
&lt;br /&gt;
Чтобы скрывать взаимодействия на основе шаблонов &amp;lt;code&amp;gt;testID&amp;lt;/code&amp;gt; или длины текстового содержимого, настройте правила маскирования в конфигурации Ключ-АСТРОМ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
const config = {&lt;br /&gt;
  mask: {&lt;br /&gt;
    replaceWith: &amp;#039;***&amp;#039;,&lt;br /&gt;
    testID: (id: string) =&amp;gt; /email|phone/i.test(id),&lt;br /&gt;
    text: (text: string) =&amp;gt; text.length &amp;gt; 20,&lt;br /&gt;
  },&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При такой конфигурации:&lt;br /&gt;
&lt;br /&gt;
* Элементы, &amp;lt;code&amp;gt;testID&amp;lt;/code&amp;gt; соответствующие заданной функции, маскируются.&lt;br /&gt;
* Элементы, обнаруженное текстовое содержимое которых соответствует заданной функции, маскируются.&lt;br /&gt;
&lt;br /&gt;
Оба подхода заменяют конфиденциальную метку значением &amp;lt;code&amp;gt;replaceWith&amp;lt;/code&amp;gt; (по умолчанию: &amp;lt;code&amp;gt;***&amp;lt;/code&amp;gt;), сохраняя при этом идентификатор взаимодействия и путь к элементу.&lt;br /&gt;
&lt;br /&gt;
== Маскирующие виджеты во Flutter ==&lt;br /&gt;
&lt;br /&gt;
Оберните виджет в &amp;lt;code&amp;gt;UserInteractionWidget&amp;lt;/code&amp;gt; и установите &amp;lt;code&amp;gt;masked&amp;lt;/code&amp;gt; значение &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UserInteractionWidget(&lt;br /&gt;
  masked: true,&lt;br /&gt;
  child: TextField(&lt;br /&gt;
    decoration: InputDecoration(labelText: &amp;#039;Password&amp;#039;),&lt;br /&gt;
  ),&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате взаимодействия имя виджета будет заменено на &amp;lt;code&amp;gt;***&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>IKuznetsov</name></author>
	</entry>
</feed>