Несколько приложений с одной и той же схемой URL — iOS

Итак, для моего нового приложения у меня есть схема URL-адресов, чтобы люди могли запускать мое приложение из другого приложения или с веб-сайта... "myapp://" ... Итак, что произойдет, если в AppStore есть другое приложение, которое имеет ту же схему URL, что и моя? Или если кто-то попытается украсть мою схему URL?


person Albert Renshaw    schedule 29.10.2012    source источник


Ответы (4)


Если два приложения регистрируют одну и ту же настраиваемую схему URL-адресов, неизвестно, какое приложение будет фактически запущено. Один будет запущен, но нет никакого способа узнать.

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

Лучшее решение — убедиться, что ваша пользовательская схема URL-адресов не тривиальна, поэтому маловероятно, что другое приложение будет иметь такую ​​​​же схему.

person rmaddy    schedule 29.10.2012
comment
Но как насчет злонамеренных разработчиков, от которых вы можете защититься? Например, что, если бы я сделал свою URL-схему Facebook:// или что-то еще, что они используют... возможно, каждый раз, когда кто-то щелкает, например, мое приложение запускается, и пользователь видит рекламу или две, и я получаю деньги: o (я бы не стал это конечно, но есть такие жалкие людишки, которые могли бы) эххх - person Albert Renshaw; 30.10.2012
comment
Я никогда не слышал, чтобы кто-то так делал, но вы правы, кто-то может. Я предполагаю, что возможно Apple проверяет, чтобы убедиться, что любые настраиваемые схемы URL-адресов, которые вы определяете, подходят для вашего приложения, но я никогда не слышал, чтобы кому-то приходилось менять свою схему раньше. - person rmaddy; 30.10.2012
comment
Apple должна позволить разработчикам создавать схемы URL-адресов в Интернете и сообщать заранее, если что-то уже занято. - person Amogh Talpallikar; 09.05.2013
comment
У меня были такие же сомнения, и я наткнулся на эту тему. @AmoghTalpallikar — если Apple предоставит структуру регистрации URL-адресов, люди просто зарегистрируют множество схем URL-адресов, и они останутся неиспользованными. Возможно, должен был быть способ, при котором схемы URL-адресов каким-то образом связаны с профилем подготовки приложения, или способ работы push-уведомлений, который связан с профилем подготовки разработчика / Ad-hoc и т. д. Тем не менее, какая бы система ни была настроена в настоящее время, ясно, что это небезопасно, как справедливо указал автор вопроса этого поста. - person Raj Pawan Gumdal; 22.05.2013
comment
@Raj: но на случай, если вам нужна чистая схема URL, которую легче запомнить и которая выглядит стандартной, а не странной длинной строкой. например, Google Chrome использует googlechrome:// для chrome в iOS, и они разумно используют его в других приложениях Google, если хотят, чтобы ссылки открывались в Chrome, а не в Safari. - person Amogh Talpallikar; 27.05.2013
comment
Обратите внимание, что ошибка, связанная с удалением приложения, обрабатывающего URL-адрес, исправлена ​​(по крайней мере) в iOS8. - person Rog; 18.06.2015
comment
Вопрос: что, если у вас есть 2 целевых приложения с общей схемой URL? В рабочей среде пользователь никогда бы не установил оба, но тестировщики могут. Apple не будет блокировать это, верно? - person Lytic; 13.04.2017
comment
@Lytic У меня есть группа приложений, в которой используется общая схема URL. У Apple никогда не было проблем с этим. - person rmaddy; 13.04.2017
comment
Спасибо! Вы когда-нибудь находили способ поддерживать одновременную установку? - person Lytic; 15.04.2017

Согласно документам Apple:

Если несколько сторонних приложений регистрируются для обработки одной и той же схемы URL-адресов, неизвестно, какое из приложений будет выбрано для обработки URL-адресов этого типа.

Точная цитата из документов Apple за 8 лет подряд:

Примечание. Если несколько сторонних приложений регистрируются для обработки одной и той же схемы URL-адресов, в настоящее время не существует процесса определения того, какое приложение получит эту схему.

Источники:

По состоянию на сентябрь 2019 года эта часть документации была удалена с сайта Apple. Ближайшим связанным документом теперь может быть Зарегистрируйте свою схему URL.

person Dustin    schedule 29.10.2012

Обновлено для 2016 г.

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

Примечание. Если несколько сторонних приложений регистрируются для обработки одной и той же схемы URL-адресов, в настоящее время не существует процесса определения того, какое приложение получит эту схему.

Источник:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6.-SW1

person Bosh    schedule 28.02.2016
comment
Я смущен. Кажется, вы говорите, что более чем одно приложение не может иметь одну и ту же схему URL-адресов, но затем вы добавляете примечание о том, что они могут, и это не определено, как говорится в ответе 2012 года. - person Albert Renshaw; 28.02.2016
comment
Позвольте мне пояснить: в 2012 году Apple разрешила нескольким приложениям регистрироваться с одной и той же схемой, и поведение во время выполнения того, какое из них будет запущено, не было определено. Теперь Apple, похоже, принимает решение во время регистрации, а не во время выполнения, а это означает, что поведение во время выполнения будет четко определено, и для данной схемы будет только одно возможное приложение. - person Bosh; 01.03.2016
comment
@Bosh Я не понимаю, как твой комментарий проясняет твой ответ. Что вы имеете в виду под временем регистрации? Пока я не вижу в вашем ответе ничего, что отличалось бы от того, что было в 2012 году. - person rmaddy; 01.03.2016
comment
Язык на странице Apple изменился — по крайней мере, это ясно, верно? Разница в том, что ранее два приложения могли регистрироваться с одной и той же пользовательской схемой и бороться с ней, когда на устройстве пользователя происходило фактическое перенаправление (именно это я имею в виду под временем выполнения). Теперь Apple заявляет, что они не позволят двум приложениям регистрировать одну и ту же пользовательскую схему (именно это я имею в виду под временем регистрации). - person Bosh; 11.03.2016
comment
@Bosh Я хотел бы немного уточнить регистр. Так что есть два возможных пути, насколько я вижу. 1. Apple отклонит приложение, если увидит, что вы пытаетесь отправить приложение с URL-адресом, который уже получен другим приложением. 2. Apple полностью разрешит загружать приложения в AppStore с той же схемой URL-адресов, но когда вы загружаете приложение, URL-адрес которого уже поддерживается другим приложением на вашем телефоне, оно просто игнорирует ваше приложение как поддерживаемое приложение для этого URL-адреса? - person Bagrat Kirakosian; 12.06.2016
comment
@Bosh, что нескольким приложениям не будет разрешено регистрироваться по одной и той же схеме. У вас есть источник для этого? В предоставленной вами ссылке они говорят только о порядке, в котором они разрешают пользовательские схемы URL-адресов. Не о том, разрешают ли они несколько приложений с одной и той же схемой. - person Vincent; 27.12.2016
comment
@Bosh Я думаю, вы неправильно интерпретируете документацию. Если для обработки одной и той же схемы URL регистрируется более одного стороннего приложения --› это означает, что 2 приложения могут зарегистрировать одну и ту же схему, а это означает, что ваш ответ неверен. - person Vincent; 27.12.2016
comment
@Albert Renshaw Что вы думаете о двух комментариях выше? - person Vincent; 30.12.2016
comment
@ Винсент Я думаю, вы правы, кажется, в документации теперь говорится то, что было первоначально сказано в 2012 году (не уверен, что это когда-либо менялось), похоже, два приложения все еще могут иметь конфликты в схемах URL. Я погуглил выделенную курсивом цитату в ответе Боша и не нашел URL-адресов с этими словами, кроме этого поста и сайта архивации этого поста. - person Albert Renshaw; 30.12.2016
comment
Я принимаю ответ @rmaddy, пока Бош не сможет дать некоторые разъяснения - person Albert Renshaw; 30.12.2016
comment
Было бы лучше, если бы каждое приложение Apple всегда использовало идентификатор магазина или пакетный идентификатор в качестве схемы URL-адресов по умолчанию, ничего не делая. Тогда было бы легко просто сделать глубокую ссылку для ОС. - person Thaina; 26.05.2018
comment
@Thaina Я согласен, что рана имеет гораздо больше смысла, чем позволить разработчикам приложений называть схему URL-адресов по своему усмотрению. Я думаю, что Apple на самом деле не заботят проблемы с URL-схемами, потому что они уже довольно давно подталкивают приложения к использованию универсальных ссылок. - person thedp; 01.07.2020

Как описано в других ответах в этой теме, вполне допустимо, чтобы несколько приложений были зарегистрированы как способные обрабатывать определенную пользовательскую схему URL-адресов, и если на устройстве установлено более 2 приложений, которые могут обрабатывать определенный настраиваемый URL-адрес. схеме не определено, какое приложение будет выбрано системой во время выполнения.

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

Дополнительную информацию об универсальных ссылках и схемах настраиваемых URL-адресов см. в разделе Разрешение приложениям и веб-сайтам ссылаться на Страница документации «Ваш контент».

person Adil Hussain    schedule 02.10.2020
comment
Из текущих документов Apple, говоря, что схема URL-адресов также поддерживается строкой идентификатора приложения: Идентификатор, который вы предоставляете со своей схемой, отличает ваше приложение от других, которые заявляют о поддержке той же схемы. Чтобы обеспечить уникальность, укажите обратную строку DNS, которая включает домен вашей компании и имя приложения. Хотя использование обратной строки DNS является лучшей практикой, это не мешает другим приложениям регистрировать ту же схему и обрабатывать связанные ссылки. Используйте универсальные ссылки вместо пользовательских схем URL-адресов, чтобы определить ссылки, которые однозначно связаны с вашим веб-сайтом. - person Sorin Dolha; 07.10.2020
comment
@SorinDolha, из этой цитаты, которой вы поделились, и из страницы документации в целом неясно (т.е. на этой странице) как система использует идентификатор, чтобы различать несколько приложений, заявляющих о поддержке одной и той же схемы. Если вы можете дать объяснение, это было бы здорово. - person Adil Hussain; 08.10.2020
comment
Да, извините за это - в комментарии просто не хватило символов, чтобы включить ссылку. Вот оно: developer.apple.com/documentation/xcode/ . Но, к сожалению, я ничего не нашел о том, как система использует идентификатор, чтобы решить, какое приложение запускать, и использует ли она его для чего-либо. Однако в нескольких других темах по этой теме некоторые предполагают, говоря, что они пришли к выводу путем эксперимента, что будет вызываться первое установленное приложение, использующее ту же схему. - person Sorin Dolha; 08.10.2020