#ios #swift #deep-linking #ios-universal-links #ios-sharesheet
#iOS #swift #глубокая привязка #ios-universal-ссылки #ios-sharesheet
Вопрос:
Обновление: у меня еще нет времени для проверки предоставленного ответа, но я буду обновлять этот ответ по мере того, как буду пробовать разные вещи.
В симуляторе iOS 14, когда я открываю общий доступ и нажимаю их Share Target
, Apple News
приложение запускается немедленно, и они проверяют, добавлен ли общий URL-адрес в их индекс.
Мой вопрос в том, как они сразу запускают свое приложение без какого-либо взаимодействия с пользователем?
GIF-файл содержит около 100 000 слов: https://giphy.com/gifs/HPzTNyWGDDMVwASQ9z
Я бы предположил, что это может быть какая-то комбинация регистрации Universal Link
, а затем программного запуска с помощью контроллера представления расширения общего доступа, но мне интересно, есть ли у кого-нибудь идеи получше.
Несколько других мест, которые я спрашивал:
Ответ №1:
Это просто открытый URL-вызов новостного приложения. До iOS 14 оно называлось как copy to app name
. Для этого вам необходимо указать поддерживаемый тип документа для вашего приложения в plist с помощью key CFBundleDocumentTypes
. Для получения дополнительной информации обратитесь к документации Apple: https://help.apple.com/xcode/mac/current/#/devddd273fdd
В списках опций общего доступа произошли изменения.
случай 1: когда ваше приложение не поддерживает какие-либо расширения. И поддерживали добавление документа в список. Ваше приложение появится в общем доступе для сопроводительных документов. При нажатии ваше приложение получает вызов openURL с URL-адресом общего доступа к документу.
случай 2. Ваше приложение поддерживает расширение общего доступа или расширение действия, тогда ваш параметр вызова open URL для вашего приложения не будет отображаться в общем доступе. если предикат активации расширения общего доступа и расширения действия не выполняется, а общий доступ к документу поддерживается вашим приложением, этот параметр будет отображаться так же, как в случае 1. (Краткое описание: если расширение общего доступа или расширение действия указаны в общем доступе, то опция open URL не будет указана.)
Примечание: Ограничение вызова openURL заключается в том, что он поддерживает только один URL-адрес. Например, вы предоставляете общий доступ к нескольким файлам, появится опция openURL вашего приложения. Но при нажатии ваше приложение получит только один URL-адрес.
Если вам требуется общий доступ только к одному URL-адресу, а в вашем приложении нет расширения общего доступа и расширения действия. Тогда key CFBundleDocumentTypes
— ваш друг.
Комментарии:
1. Большое вам спасибо за ваш ответ. В данный момент я работаю над своим бэкэндом, но как только я закончу и вернусь к работе с интерфейсом, я собираюсь попробовать это. Безусловно, будет предоставлен голос и проверьте, работает ли это. Однако один вопрос: какой тип документа мне нужно выбрать, чтобы принимать ВСЕ URL -адреса?
2. Значение для ключа
LSItemContentTypes
— это тип массива, который принимает массив строк (UTI для документов). Для поддержки всех URL-адресов, которые вы можете использоватьpublic.url
.3. Приветствую @manish punia. Я все еще работаю над своим бэкэндом, но как только я дойду до следующей точки триггера, я попробую ваше решение. Большое вам спасибо!
4. @lustig это работает? Я пробовал это решение, но ничего не изменилось.
5. @picode пока не удалось попробовать это, поскольку я все еще работаю с серверной частью. Проверьте вложенные ссылки, указанные в вопросе. Они опубликовали больше опций. Что именно вы пробовали?