Поиск ссылок на объект 1с обработка: Поиск ссылок на объекты в 1С 8.3

Поиск и удаление дублей в 1С 8.3 – Как использовать встроенные инструменты для удаления задвоек?

Главная

/

Новости и акции

/

Все новости

/

Совет: Поиск и удаление дублей в 1С 8.3 – Как использовать встроенные инструменты для удаления задвоек?

10.04.2019

Появление дублей и задвоек в информационной базе 1С – неизбежное следствие использования программы несколькими пользователями. Поэтому все конфигурации 1С имеют встроенный механизм поиска и удаления дублей. В данном случае мы рассмотрим практический пример поиска и удаления дублей в справочнике «Номенклатура» на примере программы 1С:Бухгалтерия 8.3.

Смоделирован пример, когда одна и так же номенклатура Гвозди, Шурупы и Металлический уголок дублируется в корневой папке и папке «Материалы».

Искать вручную все повторяющиеся объекты в справочнике с большим количеством элементов и сложной структурой крайне трудоемкий процесс.

Кроме того, на дублирующиеся объекты может ссылаться множество различных документов. Использование обработки «Поиск и удаление дублей» не только ускорит процесс поиска, но и позволит объединить все ссылки и восстановить порядок в учете. Для этого в главном меню откроем раздел «Администрирование», пункт «Обслуживание».

В появившемся списке необходимо раскрыть элемент «Корректировка данных» и отсюда запустить обработку «Поиск и удаление дублей».

Откроется окно обработки. В данном окне можно выбрать справочник или список документов, в котором будет осуществляться поиск. В данном случае справочник «Номенклатура».

Также можно установить правила отбора элементов, например, не учитывать элементы с пометкой на удаление, или искать дубли в определенной группе. В данном случае мы осуществляем поиск по всем элементам.

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

Правило «Совпадает по походим словам» будет учитывать элементы как дубли даже если они имеют другой порядок слов в наименовании или измененные словоформы.

После запуска поиска дублей обработка найдет все элементы, удовлетворяющие условиям. В данном случае обработка нашла лишние элементы – номенклатуры ОПФ-1 и ОПФ-2 не являются дублями. Необходимо снять галочку с номенклатуры, чтобы программа не удалила ее. Также в данном окне вы сможете выбрать какой из одинаковых объектов является оригинальным, а какой – дублирующим, подлежащим удалению.

Когда все необходимые действия со списком выполнены, можно нажать кнопку «Удалить дубли». В результате ссылки с дублирующих элементов будут переключены на оригинал, и на дубликаты будет поставлена отметка на удаление. Теперь можно использовать обработку «Удаление помеченных объектов», чтобы окончательно убрать дубли из базы 1С.

Пройдите курсы 1С и Вам больше не понадобятся советы и руководства!

Расписание курсов 1C


Подпишитесь на нас!

И получите в подарок промокод на 1500 руб! Все новые статьи, акции и анонсы каждую неделю:

Поиск ссылок на объект [BS Docs 4]

  • Поиск ссылок на объект

    • Панель инструментов окна «Поиск ссылок на объект»

    • Переназначение и очистка ссылок

В системе Business Studio значением параметра типа «Объект» является объект справочника. При вводе такого значения формируется ссылка: значение параметра ссылается на объект какого-либо справочника.

При удалении объекта система предлагает очистить ссылки на удаляемый объект. Если удалить объект без очистки ссылок, то при обращении к параметру система будет выдавать сообщение о ссылке на удаленный объект.

Пункт меню Поиск ссылок на объект может быть вызван из контекстного меню объекта справочника (Контекстное меню объекта → Дополнительно → Поиск ссылок на объект), а также из выпадающего меню кнопки Действия в Окне свойств объекта. Результатом выполнения пункта меню будет список объектов, ссылающихся на данный объект (Рис. 1). Другими словами, в этот список попадут те объекты, у которых значением параметра типа «Объект» является объект, для которого выполнен поиск ссылок.

Рисунок 1. Окно Поиск ссылок на объект

В полученном списке можно открыть объект на редактирование, а также очистить или переназначить ссылки. Результат очистки или переназначения ссылок запишется как лог-файл в «Журнал событий» (см. Журнал событий).

Внимание!

После переназначения ссылок в некоторых случаях необходимо вручную внести изменения в диаграммы, на которых присутствовал объект. К таким случаям, относятся, например, дорожки диаграмм процессов в нотации «Процедура», «BPMN».

Описание назначения кнопок панели инструментов окна Поиск ссылок на объект приведено в Таблице 1.

Кнопка Название Назначение
Редактировать объект Открывает Окно свойств объекта для выделенного объекта списка.
Обновить Обновляет информацию в списке поиска ссылок.
Переназначить ссылки на объект Открывает окно со списком объектов соответствующего класса для выбора объекта, на который переназначается ссылка.
Очистить ссылки на объект Для выделенного объекта очищает значение параметра.
Сохранить лог переназначения ссылок в файл Кнопка активна после выполнения соответствующей операции. Открывает стандартное окно для выбора каталога, в котором будет сохранен файл.

Таблица 1. Панель инструментов окна «Поиск ссылок на объект»

Чтобы переназначить ссылку на объект, установите курсор на строку списка в окне Поиск ссылок на объект и нажмите на кнопку на панели инструментов.

Будет открыто Окно справочника для выбора того объекта, на который следует переназначить ссылку. После выбора выдается окно диалога с предупреждением о том, что операция переназначения ссылок модифицирует данные. Нажмите на кнопку Да

, чтобы переназначить ссылку. При этом в окне Поиск ссылок на объект появляется сообщение о завершении операции. Нажатие на кнопку обновит состав строк в окне Поиск ссылок на объект.

Возможно переназначение ссылок одновременно для нескольких строк в списке поиска ссылок. Для этого строки нужно выделить и затем выполнить те же действия, что и для одной строки.

Чтобы очистить ссылку, установите курсор в списке ссылок на строку и нажмите на кнопку панели инструментов. В открывшемся окне диалога подтвердите очистку ссылки, нажав на кнопку Да. В окне Поиск ссылок на объект появится сообщение о результате очистки ссылки. Эта операция удаляет значение параметра объекта.

Очистку ссылок также можно сделать одновременно для нескольких строк (объектов) списка поиска ссылок.

Внимание!

Переназначением и очисткой ссылок следует заниматься осознанно, понимая, какие изменения будут произведены. Рекомендуется очищать ссылки на объект в момент удаления.

Linked Objects — Evolveum Docs

Нам часто приходится пересчитывать одну сторону ссылки, когда меняются соответствующие части объекта на другой стороне (или сама ссылка). Обычно для этого мы используем правило политики с действием политики scriptExecution .

Выбор объектов для пересчета

Действие политики scriptExecution позволяет указать объект(ы), к которым следует применить заданный сценарий midPoint (массовое действие). Этот вариант называется объект и имеет следующие значения:

Опция Мощность Массовое действие будет выполняться на Тип значения опции Примечание

текущийОбъект

одинарный

Текущий объект в фокусе. Это значение по умолчанию, если ничего не указано.

ObjectSelectorType

LinkTarget

несколько

Объекты, являющиеся целями ссылок, исходящих от этого объекта (т. е. результаты присвоений этих объектов), пересчитываются.

LinkTargetObjectSelectorType

ссылкаИсточник

несколько

Объекты, являющиеся источниками ссылок, идущих на этот объект (т.е. объекты, имеющие присвоения этому объекту), пересчитываются.

LinkSourceObjectSelectorType

namedLinkTarget

несколько

Ярлык для linkTarget с указанным linkType .

строка

Экспериментальный. Может быть удален.

nameLinkSource

несколько

Ярлык для linkSource с указанным linkType .

строка

Экспериментальный. Может быть удален.

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

Значения вышеперечисленных параметров используются для выбора конкретных целевых ссылок или источников для использования; и при каких условиях текущий объект должен быть выбран. Вы можете использовать эти фильтры (и объединены вместе, если они присутствуют в одном значении):

Фильтр Значение ОбъектСелекторТип LinkTargetObjectSelectorType LinkSourceObjectSelectorType

тип

Тип объекта.

да

да

да

подтип

Подтип объекта.

да

да

да

архетипRef

Архетип объекта.

да

да

да

orgRef

Верхний узел организационной иерархии. Этот узел и все его подузлы (транзитивно, неограниченной глубины) считаются совпадающими.

да

да

да

фильтр

Фильтр, которому должен соответствовать объект, чтобы считаться выбранным. Этот фильтр НЕ ДОЛЖЕН содержать пункты организационной единицы. Он может содержать только предложения свойств, логические операции и так далее.

да

да

да

отношение

Ссылка соответствует, если она имеет какое-либо из указанных отношений. (Если отношение не указано, все отношения совпадают.)

да

да

linkType

Имя объявленного типа ссылки. (Экспериментальный.)

да

да

изменение Ситуация

В каких ситуациях (связанных с изменением) ссылка совпадает? (всегда, добавлено, удалено, новое, старое, изменено, без изменений)

да

совпаденияRuleAssignment

Цель ссылки связана с назначением, которое привело это правило политики к объекту фокуса. Этот параметр может устранить необходимость указывать связанные цели, например. через архетип, если архетип сам привносит это правило политики в объект. Этот фильтр является приблизительным! Во-первых, он игнорирует отношения. Во-вторых, он игнорирует, действительно ли назначение, которое привело к этому правилу политики, было тем, которое было указано в (старом/новом) roleMembershipRef. Поэтому, пожалуйста, не используйте его, если вам нужна абсолютная точность.

да

совпаденияОграничение

Целевой объект ссылки соответствует некоторому ограничению политики в этом правиле (например, ограничение модификации назначения имеет целевой объект, равный целевому назначению). Этот параметр может устранить необходимость указывать связанные цели, например. с использованием архетипа. Высоко экспериментальный, вероятно, будет удален.

да

Возможные значения фильтра changeSituation :

Значение Значение Старое существование Новое существование

всегда

Ссылка всегда соответствует (даже если она существовала, но больше не существует). Это значение по умолчанию.

любой (X)

любой (Y)

добавленный

Ссылка соответствует, только если она была только что добавлена.

ложный

правда

удалено

Ссылка соответствует, только если она была только что удалена.

правда

ложный

новый

Ссылка соответствует, если она существует в новом состоянии.

любой (X)

правда

старый

Ссылка соответствует, если она существует в старом состоянии.

правда

любой (X)

изменено

Ссылка соответствует, если ее существование было изменено.

любой (X)

не Х

без изменений

Ссылка соответствует, если ее существование не изменилось.

любой (X)

Х

Пример:

Пересчет устройств при изменении имени пользователя

 
    
        <или>
            <модификация>
                имя
            
            <модификация>
                полное имя
            
        
    
    
        <выполнение сценария>
            <объект>
               
                    ......."/>
               
            
            <исполняемый скрипт>
                
            
        
    
 

Это правило приводит к пересчету всех связанных объектов с указанным архетипом при изменении имени или полного имени текущего объекта. См. также recompute для получения дополнительной информации о пересчете объектов.

Асинхронное выполнение

В ситуациях, когда необходимо пересчитать много объектов, можно указать асинхронное выполнение , т.е. выполнение пересчета в контексте фоновой задачи.

Это делается с помощью asynchronousExecution Элемент, содержащий следующие параметры:

Опция Значение Пример

режим исполнения

Режим асинхронного выполнения скрипта.

повторный (по умолчанию)

taskTemplateRef

Ссылка на шаблон задания, т.е. задание, которое используется в качестве шаблона (прототипа) реально создаваемого задания.

TaskCustomizer

Выражение, которое принимает задачу и настраивает ее содержимое. Входная переменная: подготовленная задача (из TaskType ).
Вывод: объект типа TaskType , который следует использовать. Сценарий может просто изменить prepareTask и вернуть его, см. пример ниже. Обратите внимание, что это последний шаг в подготовке задачи. Таким образом, задача выполняется в том виде, который подготовлен этим выражением.

Асинхронные режимы выполнения

Доступны следующие режимы:

Режим выполнения Значение Комментарий

повторный

Использует итеративный обработчик сценариев, т. е. объектный запрос со сценарием, который обрабатывает каждый найденный объект.

Это рекомендуемый вариант по умолчанию.

одинарный

Использует однократное действие сценария. Входные данные для этого действия содержат ссылки на объекты, которые должны служить входными данными массового действия.

Использовать только в особых случаях.

singleRunNoInput

Использует однократное действие сценария без какого-либо явного ввода.

Шаблоны заданий

Шаблон задания может содержать любые параметры, которые вы хотите видеть в конечном задании. Его состояние должно быть , ожидание или , закрытое , чтобы избежать независимого запуска. Для финальной задачи устанавливаются следующие элементы (поэтому перезаписываются имеющиеся в шаблоне):

Элемент Значение Набор значений

имя

Имя задачи

Имя шаблона задачи (или Выполнить сценарий, если шаблон не указан) плюс суффикс случайного числа.

ВладелецRef

Владелец задачи

Пользователь, вошедший в систему в данный момент, или пользователь, указанный в runAsRef для действия политики выполнения сценария.

состояние исполнения

Состояние выполнения задачи

RUNNABLE (Это совершенно очевидно: задача должна быть запущена.)

присвоение архетипа

Архетип задачи

00000000-0000-0000-0000-000000000509 (Итеративное массовое действие) для итеративного режима выполнения и 00000000-0000-0000-0000-000000000508 (Отдельное массовое действие) для других режимов выполнения.

Обратите внимание, что taskTemplateRef может содержать объектный фильтр даже с выражениями. Эти выражения могут относиться к focus , policyAction , policyRule и configuration . переменные. Пример:

 <асинхронное выполнение>
    итеративный
    
        <фильтр>
            
                <выражение>
                    <скрипт>
                        <код>
                            импортировать com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType
                            сфокусировать экземпляр OrgType? '9c50ac7e-73c0-45cf-85e7-9a94959242f9' : '9107b8a4-0a0a-4e82-a4c6-9d84034f9d6e'
                        
                    
                
            
        
    
    ...
 
Настройщик задач

Вы можете указать любые другие свойства задачи (или удалить любые предварительно установленные), используя специальное выражение, которое ожидает prepareTask в качестве входных данных и должно возвращать измененный объект задачи. Возвращаемым объектом может быть тот, который был получен на вход (с необходимыми изменениями). Пример:

 <асинхронное выполнение>
    
        <скрипт>
            
            <код>
                log.info('Подготовка задачи = {}', prepareTask.asPrismObject().debugDump())
                подготовленныйTask.description = 'Привет!'
                workerThreads = midpoint.getExtensionOptionRealValue('memberRecomputationWorkerThreads')
                basic.setTaskWorkerThreads(preparedTask, workerThreads)
                подготовленная задача
            
        
    
 

Задержка пересчета с помощью триггеров

Бывают ситуации, когда требуется отложить пересчет. Типичным случаем является повторное вычисление членов абстрактных ролей, которые (потенциально) изменились в большем масштабе. Например, когда они синхронизируются с ресурса. Или если они изменены с помощью массового действия. Или если просто ожидается, что пользователи будут редактировать больше ролей через графический интерфейс за короткий промежуток времени (относительно времени, необходимого для пересчета членов этих ролей).

В таких случаях вы можете просто установить триггер пересчета для соответствующих объектов вместо их немедленного пересчета. Триггер может быть установлен либо безусловно, либо на заданное время в будущем. Последний вариант оптимизирует даже создание триггеров, пропуская заведомо избыточные триггеры. См. пересчет для более подробной информации.

(Обратите внимание, что триггеры могут быть установлены синхронно или асинхронно. Последний вариант подходит для ролей с большим количеством участников.)

Включение/выключение распространения изменений

Преимущество исходной опции, на которую влияет пересчет, состоит в том, что ее можно включить или выключить непосредственно при отправке операции, например. через графический интерфейс. Чтобы реализовать подобный механизм, мы разработали концепцию ModelExecuteOptions элементов расширения . Вы можете определить их, используя стандартный механизм расширения, например.

 
    
        
            
                
            
        
        
            
        
    
    
        
            
                Включает или отключает перерасчет членов — для абстрактных ролей или их архетипов
                которые смотрят на это свойство расширения. 
            
        
    
 

И затем вы можете проверить эту опцию в условиях, связанных с конкретными правилами политики, например.

 <побуждение>
    
        <документация>
            При изменении МВЗ отдела элементы должны быть пересчитаны
            (если это явно не отключено в параметрах выполнения).
        
        
            <модификация>
                Центр затрат
            
        
        
            <выполнение сценария>
                <объект>
                    
                
                <исполняемый скрипт>
                    
                
                <асинхронное выполнение/>
            
        
    
    <условие>
        <выражение>
            <скрипт>
                midpoint. extensionOptionIsNotFalse('recomputeMembers')
            
        
    
 

Определенные параметры нельзя (сейчас) установить через графический интерфейс. Однако их можно указать в массовых действиях, реакциях синхронизации или в любом другом месте, где API модели вызывается из кода Java или groovy. В ближайшем будущем мы реализуем поддержку и для вызовов REST.

ТОДО

Необходимо как-то проверять авторизации при обработке опций исполнения. В настоящее время их нет.

Пример настройки параметров реакции синхронизации:

 <реакция>
    связано
    true
    <параметры выполнения>
        <расширение>
            false
        
    
 

Руководство по программированию поиска приложений: поддержка универсальных ссылок

Когда вы поддерживаете универсальные ссылки, пользователи iOS могут коснуться ссылки на ваш веб-сайт и автоматически перенаправиться в установленное вами приложение, минуя Safari. Если ваше приложение не установлено, при нажатии на ссылку на ваш веб-сайт открывается ваш веб-сайт в Safari.

Универсальные ссылки дают вам несколько ключевых преимуществ, которые вы не получаете при использовании пользовательских схем URL. В частности, универсальные ссылки:

  • Уникальный. В отличие от пользовательских схем URL-адресов, другие приложения не могут использовать универсальные ссылки, поскольку они используют стандартные ссылки HTTP или HTTPS на ваш веб-сайт.

  • Безопасность. Когда пользователи устанавливают ваше приложение, iOS проверяет файл, который вы загрузили на свой веб-сервер, чтобы убедиться, что ваш веб-сайт позволяет вашему приложению открывать URL-адреса от его имени. Только вы можете создать и загрузить этот файл, поэтому связь вашего веб-сайта с вашим приложением безопасна.

  • Гибкий. Универсальные ссылки работают, даже если ваше приложение не установлено. Если ваше приложение не установлено, нажатие на ссылку на ваш веб-сайт открывает контент в Safari, как и ожидают пользователи.

  • Простой. Один URL подходит как для вашего веб-сайта, так и для вашего приложения.

  • рядовой. Другие приложения могут взаимодействовать с вашим приложением, не зная, установлено ли ваше приложение.

Примечание

Универсальные ссылки

позволяют пользователям открывать ваше приложение, когда они нажимают ссылки на ваш веб-сайт в представлениях WKWebView и UIWebView и на страницах Safari, в дополнение к ссылкам, которые приводят к вызову openURL: , например тем, которые встречаются в Mail , сообщения и другие приложения.

Когда пользователь просматривает ваш веб-сайт в Safari и нажимает универсальную ссылку на URL-адрес в том же домене, что и текущая веб-страница, iOS учитывает наиболее вероятное намерение пользователя и открывает ссылку в Safari. Если пользователь нажимает универсальную ссылку на URL-адрес в другом домене, iOS открывает ссылку в вашем приложении.

Для пользователей, использующих более ранние версии iOS, чем 9.0, нажатие универсальной ссылки на ваш веб-сайт открывает ссылку в Safari.

Добавить поддержку универсальных ссылок очень просто. Вам нужно сделать три шага:

  • Создайте файл apple-app-site-association , содержащий данные JSON об URL-адресах, которые может обрабатывать ваше приложение.

  • Загрузите файл apple-app-site-association на свой веб-сервер HTTPS. Вы можете поместить файл в корень вашего сервера или в папку .известный подкаталог .

  • Подготовьте свое приложение для обработки универсальных ссылок.

Вы можете протестировать универсальные ссылки на устройстве.

Создание и загрузка файла ассоциации

Чтобы создать безопасное соединение между вашим веб-сайтом и вашим приложением, вы устанавливаете доверительные отношения между ними. Вы устанавливаете эту связь в двух частях:

  • ассоциация сайта-приложения-яблока файл, который вы добавляете на свой сайт

  • Разрешение com.apple.developer.associated-domains , которое вы добавляете в свое приложение (эта часть описана в разделе «Подготовка приложения к работе с универсальными ссылками»).

Вы можете узнать больше о том, как ваше приложение и веб-сайт могут совместно использовать учетные данные, в Shared Web Credentials Reference .

Примечание

Если ваше приложение работает в iOS 9 или более поздней версии и вы используете HTTPS для обслуживания apple-app-site-association , вы можете создать обычный текстовый файл, который использует тип application/json MIME, и вам не нужно его подписывать. Если вы поддерживаете Handoff и общие веб-учетные данные в iOS 8, вам все равно необходимо подписать файл, как описано в Справочник по общим веб-учетным данным .

Вам необходимо предоставить отдельный файл apple-app-site-association для каждого домена с уникальным контентом, который поддерживает ваше приложение. Например, apple.com и developer.apple.com нужны отдельные файлы apple-app-site-association , поскольку эти домены обслуживают разный контент. Напротив, для apple.com и www.apple.com не нужны отдельные файлы ассоциации сайтов, поскольку оба домена обслуживают один и тот же контент, но оба домена должны сделать файл доступным. Для приложений, работающих в iOS 9.3.1 и более поздних версиях, несжатый размер файла apple-app-site-association не должен превышать 128 КБ, независимо от того, подписан ли файл.

В вашем файле apple-app-site-association вы указываете пути от вашего веб-сайта, которые должны обрабатываться как универсальные ссылки, а также те, которые не должны обрабатываться как универсальные ссылки. Держите список путей достаточно коротким и полагайтесь на сопоставление с подстановочными знаками, чтобы соответствовать большим наборам путей. В листинге 6-1 показан пример файла apple-app-site-association , в котором указаны три пути, которые следует обрабатывать как универсальные ссылки.

Листинг 6-1 Создание файл ассоциации сайта-приложения-яблока
  1. {
  2. "приложения": {
  3. "приложения": [],
  4. "детали": [
  5. {
  6. "идентификатор приложения": "9JA89QQLNQ.com.apple.wwdc",
  7. "пути": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
  8. },
  9. {
  10. "идентификатор приложения": "ABCD1234.com.apple.wwdc",
  11. "пути": [ "*" ]
  12. }
  13. ]
  14. }
  15. }

Примечание

Не добавляйте . json к имени файла apple-app-site-association .

Ключ apps в файле apple-app-site-association должен присутствовать, и его значение должно быть пустым массивом, как показано в листинге 6-1. Значение ключа details — это массив словарей, по одному словарю на приложение, которое поддерживает ваш веб-сайт. Порядок словарей в массиве определяет порядок, которому следует система при поиске соответствия, поэтому вы можете указать приложение для обработки определенной части вашего веб-сайта.

Каждый словарь для конкретного приложения содержит ключ appID и ключ путей . Значением ключа appID является идентификатор команды или префикс идентификатора приложения, за которым следует идентификатор пакета. (Значение appID — это то же значение, которое связано с ключом «идентификатор приложения» в правах вашего приложения после его создания.) Значение ключа путей — это массив строк, определяющих части вашего веб-сайта. которые поддерживаются приложением, и части вашего веб-сайта, которые вы не хотите связывать с приложением. Чтобы указать область, которая не должна обрабатываться как универсальная ссылка, добавьте « NOT ”(включая пробел после T ) в начало строки пути. Например, файл apple-app-site-association , показанный в листинге 6-1, может предотвратить обработку области /videos/wwdc/2010/* веб-сайта как универсальной ссылки путем обновления путей . массив, как показано здесь:

  1. "пути": [ "/wwdc/news/", "НЕ /videos/wwdc/2010/*", "/videos/wwdc/201?/*"]

Поскольку система оценивает каждый путь в paths массив в том порядке, в котором он указан — и прекращает оценку при обнаружении положительного или отрицательного совпадения — вы должны указать пути с высоким приоритетом перед путями с низким приоритетом. Обратите внимание, что для сравнения используется только компонент пути URL. Другие компоненты, такие как строка запроса или идентификатор фрагмента, игнорируются.

Существуют различные способы указания путей к веб-сайтам в файле apple-app-site-association . Например, вы можете:

  • Используйте * чтобы указать весь ваш сайт

  • Включите конкретный URL-адрес, например /wwdc/news/ , чтобы указать конкретную ссылку.

  • Добавьте * к определенному URL-адресу, например /videos/wwdc/2015/* , чтобы указать раздел вашего веб-сайта.

    Помимо использования * для соответствия любой подстроке, вы также можете использовать ? для соответствия любому одиночному символу. Вы можете комбинировать оба подстановочных знака в одном пути, например /foo/*/bar/201?/mypage .

Примечание

Строки, используемые для указания путей веб-сайтов в массиве paths , чувствительны к регистру.

После создания файла apple-app-site-association загрузите его в корень веб-сервера HTTPS или в подкаталог .well-known . Файл должен быть доступен через HTTPS — без каких-либо перенаправлений — по адресу https:///apple-app-site-association 9.0004 или https://<домен>/.well-known/apple-app-site-association . Затем вам нужно обработать универсальные ссылки в вашем приложении.

Подготовка приложения к работе с универсальными ссылками

В универсальных ссылках используются две технологии: первая — это тот же механизм, который обеспечивает передачу обслуживания между веб-браузером и собственным приложением, а вторая — общие веб-учетные данные (дополнительную информацию об этих технологиях см. Справочник по общим веб-учетным данным ). Когда пользователь нажимает на универсальную ссылку, iOS запускает ваше приложение и отправляет ему объект NSUserActivity , который вы можете запросить, чтобы узнать, как ваше приложение было запущено.

Чтобы поддерживать универсальные ссылки в своем приложении, выполните следующие действия:

В разрешении com.apple.developer.associated-domains включите список доменов, которые ваше приложение должно обрабатывать как универсальные ссылки. Чтобы сделать это в Xcode, откройте раздел «Связанные домены» на вкладке «Возможности» и добавьте запись для каждого домена, который поддерживает ваше приложение, с префиксом 9.0003 ссылки на приложения: , например ссылки на приложения: www.mywebsite.com . Ограничьте этот список не более чем 20-30 доменами.

Чтобы соответствовать всем поддоменам связанного домена, вы можете указать подстановочный знак, добавив префикс *. до начала конкретного домена (точка обязательна). Сопоставление домена основано на самой длинной подстроке в элементах applinks . Например, если вы укажете записи applinks:*.mywebsite.com и applinks:*.users.mywebsite. com сопоставление домена emily.users.mywebsite.com выполняется с более длинной записью *.users.mywebsite.com . Обратите внимание, что запись для *.mywebsite.com не соответствует mywebsite.com из-за точки после звездочки. Чтобы включить сопоставление как для *.mywebsite.com , так и для mywebsite.com , необходимо предоставить отдельную запись applinks для каждого из них.

После того, как вы укажете связанные домены, примите Методы UIApplicationDelegate для Handoff (в частности, application:continueUserActivity:restorationHandler: ), чтобы ваше приложение могло получать ссылку и обрабатывать ее соответствующим образом.

Когда iOS запускает ваше приложение после того, как пользователь коснется универсальной ссылки, вы получите объект NSUserActivity со значением activityType NSUserActivityTypeBrowsingWeb . Свойство webpageURL объекта активности содержит URL-адрес, к которому обращается пользователь. Свойство URL-адрес веб-страницы всегда содержит URL-адрес HTTP или HTTPS, и вы можете использовать NSURLComponents API для управления компонентами URL.

Когда пользователь нажимает на универсальную ссылку, которую вы обрабатываете, iOS также проверяет недавние выборы пользователя, чтобы определить, открывать ли вам ваше приложение или ваш веб-сайт. Например, пользователь, который нажал универсальную ссылку, чтобы открыть ваше приложение, может позже открыть ваш веб-сайт в Safari, нажав кнопку навигации в строке состояния. После того, как пользователь сделает этот выбор, iOS продолжит открывать ваш веб-сайт в Safari до тех пор, пока пользователь не решит открыть ваше приложение, нажав «ОТКРЫТЬ» в смарт-баннере приложения на веб-странице.

Примечание

Если вы создадите экземпляр объекта SFSafariViewController, WKWebView или UIWebView для обработки универсальной ссылки, iOS откроет ваш веб-сайт в Safari, а не приложение. Однако если пользователь коснется универсальной ссылки из встроенного объекта SFSafariViewController , WKWebView или UIWebView , iOS откроет ваше приложение.

Важно понимать, что если ваше приложение использует openURL: для открытия универсальной ссылки на ваш сайт, ссылка не открывается в вашем приложении. В этом сценарии iOS распознает, что вызов исходит из вашего приложения и поэтому не должен обрабатываться вашим приложением как универсальная ссылка.

Если вы получаете недопустимый URL-адрес в объекте действия, важно корректно завершить работу. Чтобы обработать неподдерживаемый URL-адрес, вы можете вызвать openURL: для объекта общего приложения, чтобы открыть ссылку в Safari. Если вы не можете сделать этот вызов, отобразите пользователю сообщение об ошибке, объясняющее, что пошло не так.

Важно

Чтобы защитить конфиденциальность и безопасность пользователей, вы не должны использовать HTTP, когда вам нужно передавать данные; вместо этого используйте безопасный транспортный протокол, такой как HTTPS.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *