Гиперссылки являются самой старой и самой популярной функцией Интернета. Слово гипертекст (это ht
в http / s
) означает текст с гиперссылками. Возможность связывать с гипертекстом других людей сделала Интернет, сеть — набор связанных страниц. Эта фундаментальная особенность сделала веб очень мощной платформой, и очевидно, что мир приложений нуждается в этой функции. Все современные платформы поддерживают способ регистрации приложений URI (пользовательский протокол), а также универсальные ссылки (обработка веб-ссылок в приложении).
Давайте посмотрим, почему мы хотели бы воспользоваться этой возможностью и как это сделать.
Содержание статьи
- 1 Почему вообще ссылки на приложения?
- 2 Ссылка на терминологию
- 3 Настройка гиперссылок приложения
- 4 Диалог сопоставления URL Как только вы нажмете OK, он покажет код, который можно было бы использовать в качестве альтернативы в AndroidManifest.xml : Примечание: Это точно так же, как и для пользовательского URI. На шаге 2 выберите назначенное действие и добавьте код для загрузки действия. Код также точно такой же, как и для пользовательских URI выше. На шаге 3 он будет генерировать JSON-файл, который необходимо добавить на сайт в качестве application / json mime в https://css-tricks.com/.well- известно / assetlinks.json . [{ "relation": ["delegate_permission/common.handle_all_urls"], «target»: { «namespace»: «css_tricks», "имя_пакета": "com.css-tricks.android", "sha256_cert_fingerprints": ["17:CC:87:9C:C8:39:B1:89:48:E8:2E:9E:6F:FC:7D:03:69:4D:05:90:2A:84:B8:AE:5D:6B:30:97:F8:1C:2B:BF"] } }] Android Studio автоматизирует генерацию отпечатков пальцев, которая проверяет идентификатор приложения. Этот идентификатор отличается от debug и версией приложения. Мгновенная ссылка Мгновенные приложения на Android требуют незначительных изменений в ссылках на приложения, которые мы рассмотрели ранее. Чтобы включить мгновенные приложения, измените объявленное выше намерение так: Это позволяет связать URL-адреса http и https с приложением, а autoVerify сообщает магазину Android (Google Play), чтобы проверить манифест автоматически. Мгновенное приложение - это функция Play Маркет / Google Chrome. Изменения в приложении минимальны для поддержки этого. Электрон Электронные приложения - это традиционные приложения MacOS и Windows с хроматическим временем исполнения. Эти платформы поддерживают только пользовательские URI, которые можно включить, не касаясь скомпилированного кода. Для MacOS отредактируйте info.plist как описано в разделе MacOS. События получают объект приложения как: // В main.js require («электрон»). app.on ('open-url', (event, url) => { console.log (URL); }); В Windows добавьте запись реестра, как определено в разделе Windows. Приложение получит пользовательский URL-адрес в process.argv : // В main.js console.log (process.argv [2]) В электронном режиме вы можете загружать внешние веб-страницы, которые могут открывать URL-адреса. Если желательно обрабатывать только эти URL внутри, которые могут быть зарегистрированы через электронный API: require('electron').protocol.registerHttpProtocol('css-tricks', (req, cb) => { console.log(req.url) }); Web Going a complete circle, a website can also register custom URIs (like handling mailto: links via a website). Note that these only affect links provided in other websites and have nothing to do with links in other applications. The API is very restrictive and can be used only for a selected link type: web+. Browsers allow a pre-defined list of top level protocols to be registered: Chrome: mailto, mms, nntp, rtsp, webcal Firefox: bitcoin, geo, im, irc, iris, magnet, mailto, mms, news, sip, sms, smite, ssh, tel, urn, webcal, wti, xmpp To register a protocol, you need to provide the same domain as the website that registers it (i.e. https://www.css-tricks.com can register only https://www.css-tricks.com and not https://css-tricks.com). if (navigator.registerProtocolHandler) { navigator.registerProtocolHandler("web+csstricks", "https://css-ticks.com/?s=%s", "CSS Tricks custom URI"); } The custom URIs are not indexed by search engines and therefore there is not much use to these apart from handling the links like mailtowebcal etc., that are already present in the web at multiple places. Wrapping Up
- 5 Related
Почему вообще ссылки на приложения?
Создание URI, которые могут открывать приложения, обеспечивает уникальный набор преимуществ. A URL инкапсулирует все состояние веб-страницы (оно использовалось до появления приложений с одиночной страницей (SPA), тяжелое с JavaScript и даже в них, лучше всего поддерживать эту функциональность) или веб-приложение и желательно иметь маршрутизацию в приложениях, чтобы навигационная система URL никогда не прерывалась. URL-адреса позволяют браузерам иметь последовательные кнопки назад и вперед, а также загружать страницы и закладки. И такие вещи, как поиск Google, зависят от адресов веб-страниц и веб-приложений для навигации пользователей в нужном месте. Разрешить приложениям открывать URL-адреса предоставляет способ связать контент и функциональность вашего приложения с другими приложениями, веб-сайтами и даже внутри приложения, такими как страницы справки / учебники.
Trivia! Настольные приложения имели гиперссылки еще до всемирной паутины, такие как Hypercard на Mac в 1987 году и Windows Help в 1990 году. Революционная вещь о гиперссылках в Интернете заключается в том, что вы можете связать контент, который был создан и принадлежит другим. Эта концепция соединения кросс-приложений не была популярна на традиционных платформах до появления смартфонов.
Ссылки на приложения по командной строке
Уже существует оболочка для интерфейса командной строки и поддерживает передачу аргументов, перенаправление результатов из одного приложения в пыльник и даже скриптинг. Тем не менее, потребность в поддержке гиперссылок желательно по различным причинам:
- Безопасность: Сценарий командной строки слишком сложный, чтобы получить право. Очень опасно ожидать, что пользователи технологий (которые не являются разработчиками) понимают, как очистить сценарий командной строки и убедиться, что сценарий случайно не вызывает что-то, например
rm -rf ~ / Documents
. Командная строка не помещена в песочницу, и хотя она обеспечивает власть, она несет ответственность за пользователей и подвержена эксплойтам. - Поддержка браузера: Браузер не может предоставить интерфейс командной строки. Он построен для запуска ненадежного стороннего кода в песочнице, и это невозможно сломать. И, если мы не будем соблюдать правила веб-технологий, приложение выйдет из Интернета из Интернета. Это слишком много, чтобы проиграть.
- Мобильный телефон: В мире мобильных устройств сенсорная клавиатура не так хороша и интуитивно понятна, как физические, используемые на рабочем столе. Поэтому, даже если командная строка присутствовала, ее было бы очень сложно использовать. Вся сила перенаправления и цепочки не так эффективна, как в командной строке на клавиатуре. Более простое решение, такое как URL, более желательно в этом контексте.
- Состояние: Теоретически интерфейс командной строки может обеспечить доступ к приложению в любом состоянии. Но, практически, он был создан для отдельной цели: запустить приложение для выполнения задачи, а затем вернуться с кодом. Кроме того, он был дезактивирован GUI в Windows и Mac. Многие приложения (например, Microsoft Word и Adobe Photoshop) никогда не имели полноценной поддержки командной строки. Они даже не присутствуют в среде PATH и требуют полного запуска. URI предоставляют свежий способ взглянуть на информацию о соединении, а также на функциональность между приложениями. Это безопасный, современный способ взаимодействия между приложениями, когда пользователю не нужно думать.
Ссылка на терминологию
Глубокая ссылка
Глубокая ссылка — это концепция, с которой можно связать конкретную страницу / функциональность внутри веб-сайта / приложения. Например, https://css-tricks.com/link/to/this/page
является глубокой ссылкой для этой страницы в более широком https://css-tricks.com
] ссылка. В отличие от внешних ссылок, открывающих приложения, глубокие ссылки открывают приложение в определенном состоянии, с переданными данными, готовыми к употреблению. Пользовательский URI (описанный ниже) был первым способом достижения глубокой привязки в приложении, а «глубокая привязка» во многих контекстах теперь является синонимом пользовательского URI, хотя он также может означать универсальные ссылки.
Пользовательский URI
В сети всегда были определенные пользовательские URI, связанные с приложениями по умолчанию, например mailto: username@host.com
и тел: 1234567890
для электронной почты и телефона соответственно. Это был очевидный выбор для расширения этой и всех основных платформ, позволяющих приложению регистрировать протокол URI — например css-трюки: //
— это может открыть глубоко связанное собственное приложение. Он должен инкапсулировать все состояние и предоставить все преимущества маршрутизации, чтобы открыть приложение, если оно доступно в системе. Они обеспечивают хороший интерфейс для взаимодействия между приложениями, когда приложение уже установлено, и желание открыть предпочтительное приложение пользователя (например, браузер или почтовый клиент), который реализует требуемый протокол.
Пользовательские URI отлично подходят для класса приложений, где пользователь хочет иметь выбор для выбора приложения для выполнения определенного выбора, но они не очень подходят для задания привязки веб-сайта к собственному приложению из-за следующего причины:
- Установка: Установка: В отличие от Интернета, приложениям, требующим установки, требуется установка, и если они не установлены, у вас есть два варианта: отправить пользователя в магазин приложений (который также предоставляет настраиваемый URI) или должным образом отступить. Обе эти задачи требуют дополнительного кода, который URI не инкапсулирует. URI магазина приложений будет другим отдельным URI, который нам нужно сохранить. Кроме того, мы должны определить, установлено ли приложение, которое требует перехода на URI и обработки ошибки в навигации, аналогичной
404
поскольку протокол не зарегистрирован. Это не так просто, как якорный тег ( - Отсутствие центрального реестра: Даже если все сделано совершенно правильно, пользователи все равно могут быть брошены в приложение, с которым они не должны были быть связаны. В отличие от системы DNS (которая гарантирует уникальность доменных имен) на платформах приложений нет центрального репозитория. Таким образом, несколько приложений могли зарегистрировать
csstricks
как пользовательский URI. Теперь кто-то еще может зарегистрировать тот же URI, что и одно приложение, и если другое приложение будет установлено в системе вместо требуемого, оно может запускаться вместо этого. Свобода пользовательского URI для выбора приложений работает против случая, когда мы всегда хотим открыть конкретное приложение. - Ссылка третьей стороны: Предоставление пользовательского URI третьим сторонам из-за проблем, которые мы рассмотрели выше, громоздко и их проверка является болезненной. Это также новый протокол. На каждом веб-сайте есть ссылки на веб-контент, и обновление всего Интернета невозможно. Это может даже не быть желательным для целей SEO.
Поэтому, если мы хотим дать пользователю опыт, когда приложение является предпочтительным способом просмотра контента, пользовательские URI не являются идеальным решением. Это может быть смягчено с помощью баннеров смарт-приложений в некоторой степени, где баннер будет отображаться, когда браузер получит пользовательский URI и ссылку на хранилище приложений для идентификации приложения. Но это не будет плавным.
Trivia! URI и URL-адреса немного отличаются по определению, хотя они используются взаимозаменяемо. URI обозначает Uniform Resource Identifier, что означает, что он инкапсулирует все необходимое для получения ресурса. URL (Uniform Resource Locator) — это особый тип URI, который идентифицирует ресурс в Интернете. Итак, технически, веб-адрес является URL-адресом, но что-то вроде csstricks: //
будет всего лишь URI.
Это все возможные варианты использования, когда пользовательский URI может иметь смысл:
- Вам необходимо предоставить URI, который могут регистрировать многие сторонние клиентские приложения. Скажем, у вас есть
git: //
в вашем приложении, и пользовательский git-клиент пользователя может зарегистрировать этот URI и клонировать репо при нажатии ссылки. - У вас нет полнофункционального веб-сайта.
- Вам нужен URI, который пользователям легко запомнить.
- Вы готовы обрабатывать все случаи, связанные с навигацией.
Вы можете использовать пользовательские URI параллельно со ссылкой Universal, которую мы рассмотрим далее, и они могут извлечь выгоду из раскрытия настраиваемого URL-адреса для взаимодействия между приложениями, оставив ссылку Universal для специального случая веб- приложение навигация. Android официально называет пользовательские URI глубокими ссылками .
Универсальная ссылка, ссылка на приложение или приложение URI
Решение проблемы перенаправления веб-приложений можно решить с помощью универсальной ссылки (как ее называют в Mac и iOS), App Link (как ее называют в Android) или App URI (как ее называют в Windows UWP), которые являются разными названиями одного и того же понятия. Это инкапсулирует логику, которую каждый сайт должен писать, чтобы обнаруживать установленные приложения, запускать правильные страницы и обрабатывать сбои навигации в случае пользовательских URL-адресов. Он очень похож на баннер смарт-приложений в том смысле, что вам нужно предоставить ссылку на приложение для приложения на своем веб-сайте для проверки, но он удаляет всю избыточность. Поскольку существующий URL http (s) уже содержит все состояние, регистрация пользовательского URI является избыточной. Исходный URL-адрес мог сам перейти к приложению с веб-сайтом, обеспечивающим резервный опыт в случае, если приложение не установлено.
После регистрации вашего приложения с помощью универсальной ссылки, когда приложение установлено, ОС переходит в Интернет, чтобы выяснить набор ссылок, поддерживаемых приложением. Всякий раз, когда нажимается какая-либо из этих ссылок, собственное приложение запускается вместо браузера. Полная поддержка адресации теперь доступна в приложении, где более настраиваемый опыт может быть предоставлен обратно в браузер, если приложение не установлено. Важное отличие от универсальных ссылок заключается в том, что они влияют на регулярный просмотр, поэтому поставщики ОС теперь находятся под жесткой блокировкой и ключом.
Несколько хороших примеров использования для универсальных ссылок включают:
- У вас есть полнофункциональный веб-сайт для резервного копирования.
- Желаемый поток для пользователей — от веб-сайта до приложения.
- Вы уже создали много кармы, имея контент со своего веб-сайта, связанного по сети.
Мгновенная ссылка или отложенная глубокая ссылка
. Отложенные глубокие ссылки предоставляют недостающую часть глубоким ссылкам, если пользователь продолжает устанавливать приложение при открытии ссылки. Пользователь может быть перенаправлен в хранилище приложений, а магазин приложений заботится о поддержании контекста, когда приложение будет запущено после установки. Это обеспечивает непрерывность в случае, когда приложение установлено. В настоящее время этот метод поддерживается только Android (как Google Play Мгновенный), и это вариант, когда вы хотите, чтобы пользователи переходили из приложения, чтобы получить желаемую функциональность. Система гиперссылок в Интернете является бесшовной, и нажатие на ссылку позволяет вам добраться до места назначения почти мгновенно (хотя многое происходит за кулисами). Отложенные глубокие ссылки обеспечивают такую же функциональность для приложений, где щелчок по ссылке может загрузить приложение и запустить его с помощью правильной страницы, что сделает все задачи установки приложения максимально возможными.
Возможно, вы захотите использовать мгновенные ссылки, если:
- Вам нужно, чтобы пользователи использовали приложение, а не веб-сайт, даже если они поступают из браузера (за исключением редких случаев, когда они мало на диске или отключили эту функцию для экономии полосы пропускания).
- Ваши ключевые страницы всегда актуальны в вашем приложении.
- Хорошо, всегда используйте их. Благодаря дополнительным преимуществам SEO, которые Google предлагает для мгновенных приложений, нет оснований не включать «мгновенные» приложения для приложения, имеющего универсальные ссылки.
Теперь, когда у нас есть сводка о том, что означает каждый термин, давайте посмотрим, как мы можем создавать их на определенных платформах.
Настройка гиперссылок приложения
MacOS и iOS
Пользовательский URI
Регистрация пользовательского URI в MacOS и iOS чрезвычайно проста. В Xcode перейдите в файл Info.plist
проекта и выберите опцию URL-типы
. Создайте элемент типа URL-схемы
внутри файла, где вы можете добавить все схемы URL, которые вы хотите поддержать.
Примечание: Идентификатор URL по умолчанию
заполненный Xcode в URL-адресах, является необязательным.
CFBundleURLTypes
CFBundleURLSchemes
CSS-уловок
Для MacOS вы получите призывы к AppDelegate
где вы можете отменить функцию:
func application (_ application: NSApplication, open urls: [URL]) {
// Выберите первый URL в списке URL для открытия
let url = urls [0];
// Зарегистрировать весь URL
NSLog ("% @", url.absoluteString)
}
- (void) приложение: (NSApplication *) application openURLs: (NSArray *) urls {
NSLog (@ "% @", URL [0] .absoluteString);
}
В iOS, функция получения того же вызова в AppDelegate
:
func application (_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
NSLog ("% @", url.absoluteString)
return true
}
- (BOOL) приложение: (UIApplication *) app openURL: (NSURL *) Параметры URL: (NSDictionary *) options {
NSLog (@ "% @", url.absoluteString);
return true;
}
Тип URL
во всех этих случаях содержит обычные URL-фрагменты, такие как путь, запрос и параметры поиска.
Универсальные ссылки
Универсальные ссылки не поддерживаются в MacOS. Чтобы получить универсальные ссылки на iOS, вам необходимо зарегистрироваться в Программе разработчиков Apple или стать членом программы Enterprise Developer Enterprise. Универсальные ссылки на iOS являются частью более широкой концепции связанных доменов, где секреты веб-сайта, такие как хранимые учетные данные, могут быть доступны из приложения, и Apple не позволяет обычным пользователям Xcode избегать универсальных ссылок (если вы случайно включите для вашего идентификатора приложения, но не помещайте это в права, будьте готовы получить ошибку проверки: ERROR ITMS-90046: «Недопустимые права подписи кода»).
Trivia! Универсальные ссылки - это новая концепция, и многие настольные приложения Mac и Windows построены со своим сетевым стеком, не используют хранилище приложений и, возможно, были выпущены много лет назад. Поэтому ОС не имеет контроля, необходимого для принудительного применения всеми приложениями концепции Universal link и открытия приложения. Apple предпочла не реализовывать Universal Links в MacOS, но в Windows они работают только в браузере Microsoft Edge и других приложениях UWP (которые используют ту же технологию).
Чтобы зарегистрироваться для универсальных ссылок на iOS, вам нужно сделать следующее:
- Включите идентификатор приложения на веб-сайте Apple Developer, чтобы получить эту функцию для связанных доменов.
- Добавьте связанные домены в файл с правами.
- Добавить файл
apple-app-site-association
в веб-домен для подтверждения прав собственности на приложение. - Добавить код для обработки кликов по универсальным ссылкам.
Шаги 1 и 2 можно выполнить вместе на вкладке «Возможности» на Xcode, если вы вошли в систему и выбрали правильный профиль (который принадлежит учетной записи Apple Developer или Enterprise). Пользовательский интерфейс Xcode показывает, что оба элемента были завершены.
На изображении выше, этап 2 успешно завершен, а этап 1 находится на рассмотрении. Вы можете щелкнуть по восклицательному знаку, чтобы найти проблему. Важно префикс домена с помощью приложений :
(который определяет, что вам нужны функции ссылок на приложения, то же самое используется для общих учетных данных). Это означает, что функция подключения приложений включена.
Вышеупомянутые шаги также могут быть выполнены индивидуально.
Для шага 1 включите Associated Domains
в разделе App ID
на веб-сайте разработчика (показано в нижней части изображения):
Для шага 2 добавьте следующее в файл прав:
com.apple.developer.associated-domains
applinks: css-tricks.com
Теперь, для шага 3, разместите файл ассоциации apple-app-site-association
как https://css-tricks.com/apple-app-site-association
с типом mime application / json
со следующими данными JSON от корня вашего сайта:
{
"applinks": {
«apps»: [],
"Детали": {
"ABCDEFGHIJ.com.ccs-tricks.mobile": {
«пути»: [
"*"
]
}
}
}
}
Вышеприведенный фрагмент предоставляет приложение с ID ABCDEFGHIJ.com.ccs-tricks.mobile
и обеспечивает доступ ко всем запросам в домене https://css-tricks.com
, Обратите внимание, что это работает с https
но http
не поддерживается. Вы также можете использовать для этого альтернативное местоположение, например https://css-tricks.com/.well-known/apple-app-site-association
. Этот URL-адрес предпочтительнее, так как он может поддерживать файлы ассоциации Android, iOS и UWP в безопасной отдельной папке, которая не может быть случайно удалена.
Trivia! Универсальные ссылки не гарантируют, что приложение открыто. Если пользователь вернется на сайт из заголовка в iOS, ОС решит по умолчанию использовать веб-сайт с тех пор, пока пользователь не решит использовать это приложение, снова щелкнув заголовок с Safari.
Для шага 4 добавьте следующий код в приложение:
func application (_ application: UIApplication, continue userActivity: NSUserActivity, restoreHandler: @escaping ([Any]?) -> Void) -> Bool {
если userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
печать (url.absoluteString)
}
return true
}
- (BOOL) приложение: (приложение UIApplication *) continueUserActivity: (NSUserActivity *) восстановление userActivityHandler: (void (^) (NSArray * _Nullable)) restoreHandler {
if (userActivity.activityType == NSUserActivityTypeBrowsingWeb) {
NSLog (@ "% @", userActivity.webpageURL.absoluteString);
}
return true;
}
Баннеры смарт-приложений на iOS намного проще и могут быть добавлены через простой метатег-тег в разделе главы следующим образом:
Они называют тот же метод, что и пользовательские URI, которые мы рассмотрели ранее.
Windows (традиционный)
На традиционной платформе Windows (Win32 / .NET) настраиваемый URI (называемый Custom Pluggable Protocol Handler
) является единственной поддерживаемой функцией. Добавление пользовательского URI в Windows предполагает добавление записи реестра в HKEY_CLASSES_ROOT
. Следующее откроет приложение с абсолютным путем, заданным при нажатии ссылки на css-трюки: //
. Из-за использования командной строки это всегда открывает новый экземпляр приложения и не отправляет URL-адрес в существующее запущенное приложение.
Редактор реестра Windows Версия 5.00
[HKEY_CLASSES_ROOTcss-tricks]
"URL-адрес протокола" = ""
@ = "CSS-трюки (имя приложения)"
[HKEY_CLASSES_ROOTcss-tricksshell]
[HKEY_CLASSES_ROOTcss-tricksshellopen]
[HKEY_CLASSES_ROOTcss-tricksshellopencommand]
@ = "" C: \ Windows \ notepad.exe ""% 1 ""
Вышеупомянутый блокнот
содержит аргумент командной строки, соответствующий указанному URL. Имейте в виду, что Notepad не поддерживает пользовательский URI и не знает, что делать с URL.
Это поведение похоже на передачу этого на консоли, и приложение должно убедиться, что оно правильно отличает аргумент как обычный CLI или пользовательский URI, как показано здесь:
namespace ConsoleApplication1 {
класса Программа {
static void Main (строка [] args) {
if (args.Length> 0 && args [0] .IndexOf ("css-tricks:") == 0) {
Console.Write (арг [0]);
}
}
}
}
int main (int argc, char * argv []) {
if (argc> 1) {// argv [0] - это имя файла.
std :: string word (argv [1]);
if (word.compare (0, 11, "css-tricks:") == 0) {
станд :: соиЬ << слово;
}
}
return 0;
}
Универсальная платформа Windows (UWP)
На универсальной платформе Windows вы можете использовать манифест пакета для регистрации как пользовательского URI, так и универсальной ссылки (так называемый URI-обработчик приложений
).
Пользовательский URI
Добавить объявление протокола в package.appxmanifest
:
То же самое может быть достигнуто в коде:
CSS-трюки
... и теперь это можно обрабатывать в приложении.
protected override void OnActivated (IActivatedEventArgs args) {
base.OnActivated (арг);
if (args.Kind == ActivationKind.Protocol) {
var e = args как ProtocolActivatedEventArgs;
System.Diagnostics.Debug.WriteLine (e.Uri.AbsoluteUri);
}
}
// В приложении App.xaml.h
virtual void OnActivated (Windows :: ApplicationModel :: Activation :: IActivatedEventArgs ^ e) переопределить;
// В App.xaml.cpp
void App :: OnActivated (Windows :: ApplicationModel :: Activation :: IActivatedEventArgs ^ e) {
if (e-> Kind == Windows :: ApplicationModel :: Activation :: ActivationKind :: Protocol) {
auto args = (ProtocolActivatedEventArgs ^) e;
auto url = args-> Uri-> AbsoluteUri;
}
}
Универсальные ссылки (URI приложения)
URI приложений поддерживаются только в браузере Microsoft Edge
. Они не работают в Internet Explorer, Chrome или Firefox. У URI приложений также есть запись в виде пакетов, аналогичная пользовательскому URI. Он не доступен в пользовательском интерфейсе Visual Studio Code 2017. Записи package.appxmanifest
почти одинаковы:
Если uap3
недоступен, его можно добавить в тег Package
где также определен uap
:
XMLNS: uap3 = "http://schemas.microsoft.com/appx/manifest/uap/windows10/3"
URI приложения - это относительно новая функция Windows, и многие проекты UWP нацелены на более старые версии окон в качестве минимальной версии. Возможно, вам придется столкнуться с этим, чтобы поддержать эту функцию.
Как и в iOS, веб-сайт должен подтвердить право собственности на домен, чтобы это функционировало. Это можно сделать путем размещения файла с типом mime type application / json
в корне вашего сайта, например https://css-tricks.com/windows-app-web-link
или https://css-tricks.com/.well-known/windows-app-web-link
над https
с контентом:
{
"packageFamilyName": "YourPackageFamilyNameHere",
«пути»: ["*"],
"excludePaths": ["/none/*", "https://cdn.css-tricks.com/robot.txt"]
}
Чтобы получить имя семейства пакетов, запустите следующее в Powershell
и найдите путь к вашему пакету:
Get-AppxPackage
Для обработки URI приложений требуется тот же код, что и пользовательские URI в Windows. По дизайну все, что вам нужно сделать, это увидеть поле протокола в предоставленном URI и написать соответствующую логику.
Как и у iOS, у пользователей Windows есть возможность отключить открытие приложений. Windows предоставляет настройки реестра, чтобы заставить приложения открываться (использовались для тестирования), а также инструмент проверки подлинности (расположенный в % windir% system32 AppHostRegistrationVerifier.exe
), чтобы проверить правильность указанных выше параметров.
Android
Пользовательский URI
Android поддерживает пользовательские URI с самого начала. Это можно сделать с помощью кода. В AndroidManifest.xml
добавить:
Категория DEFAULT
предназначена для того, чтобы не было никаких действий пользователя, необходимых для ее включения. BROWSABLE
гарантирует, что пользовательские URI работают в браузере.
Это может быть обработано в CustomUriActivity.java
при создании:
public class CustomUriActivity расширяет AppCompatActivity {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Intent intent = getIntent ();
if (Intent.ACTION_VIEW.equals (intent.getAction ())) {
Uri uri = intent.getData ();
}
}
}
Универсальные ссылки
Универсальные ссылки в Android очень похожи на URI приложений. Android Studio предоставляет инструмент GUI для создания этого. Перейдите в Инструменты> Помощник по подключению приложений
. Это обеспечит три задачи, необходимые для создания ссылок на приложения:
Для шага 1 введите редактор сопоставления URL-адресов и нажмите кнопку +
чтобы открыть диалоговое окно сопоставления URL-адресов :
Как только вы нажмете OK, он покажет код, который можно было бы использовать в качестве альтернативы в AndroidManifest.xml
:
Примечание: Это точно так же, как и для пользовательского URI. На шаге 2 выберите назначенное действие и добавьте код для загрузки действия. Код также точно такой же, как и для пользовательских URI выше.
На шаге 3 он будет генерировать JSON-файл, который необходимо добавить на сайт в качестве application / json
mime в https://css-tricks.com/.well- известно / assetlinks.json
.
[{
"relation": ["delegate_permission/common.handle_all_urls"],
«target»: {
«namespace»: «css_tricks»,
"имя_пакета": "com.css-tricks.android",
"sha256_cert_fingerprints":
["17:CC:87:9C:C8:39:B1:89:48:E8:2E:9E:6F:FC:7D:03:69:4D:05:90:2A:84:B8:AE:5D:6B:30:97:F8:1C:2B:BF"]
}
}]
Android Studio автоматизирует генерацию отпечатков пальцев, которая проверяет идентификатор приложения. Этот идентификатор отличается от debug и версией приложения.
Мгновенная ссылка
Мгновенные приложения на Android требуют незначительных изменений в ссылках на приложения, которые мы рассмотрели ранее. Чтобы включить мгновенные приложения, измените объявленное выше намерение так:
Это позволяет связать URL-адреса http
и https
с приложением, а autoVerify
сообщает магазину Android (Google Play), чтобы проверить манифест автоматически. Мгновенное приложение - это функция Play Маркет / Google Chrome. Изменения в приложении минимальны для поддержки этого.
Электрон
Электронные приложения - это традиционные приложения MacOS и Windows с хроматическим временем исполнения. Эти платформы поддерживают только пользовательские URI, которые можно включить, не касаясь скомпилированного кода.
Для MacOS отредактируйте info.plist
как описано в разделе MacOS. События получают объект приложения как:
// В main.js
require («электрон»). app.on ('open-url', (event, url) => {
console.log (URL);
});
В Windows добавьте запись реестра, как определено в разделе Windows. Приложение получит пользовательский URL-адрес в process.argv
:
// В main.js
console.log (process.argv [2])
В электронном режиме вы можете загружать внешние веб-страницы, которые могут открывать URL-адреса. Если желательно обрабатывать только эти URL внутри, которые могут быть зарегистрированы через электронный API:
require('electron').protocol.registerHttpProtocol('css-tricks', (req, cb) => {
console.log(req.url)
});
Web
Going a complete circle, a website can also register custom URIs (like handling mailto:
links via a website). Note that these only affect links provided in other websites and have nothing to do with links in other applications. The API is very restrictive and can be used only for a selected link type: web+
. Browsers allow a pre-defined list of top level protocols to be registered:
- Chrome: mailto, mms, nntp, rtsp, webcal
- Firefox: bitcoin, geo, im, irc, iris, magnet, mailto, mms, news, sip, sms, smite, ssh, tel, urn, webcal, wti, xmpp
To register a protocol, you need to provide the same domain as the website that registers it (i.e. https://www.css-tricks.com
can register only https://www.css-tricks.com and not https://css-tricks.com
).
if (navigator.registerProtocolHandler) {
navigator.registerProtocolHandler("web+csstricks", "https://css-ticks.com/?s=%s", "CSS Tricks custom URI");
}
The custom URIs are not indexed by search engines and therefore there is not much use to these apart from handling the links like mailto
webcal
etc., that are already present in the web at multiple places.
Adding hyperlinks to native apps is an easy and effective way to seamlessly move the user across applications with graceful handling in case the application is not installed. With these links, applications can have provide paths all over the Internet which can be an effective promotional mechanism. Links also give websites a way to provide data and launch the applications on a specific page without the security worries that plague the downloadable files or command line scripts allowing effective tutorials and bug reports. Routing and URLs provide for the core features of the World Wide Web like navigation, the back button, bookmarks and search. Hyperlinks in apps bring these learning from the (almost) 30 years of world wide web to native applications.
Related