Зачем нужно поле plist ID (CFBundleURLName) для использования специальной схемы URL в iOS?
Я использую настраиваемую схему URL, чтобы открыть приложение iOS, когда эта веб-ссылка используется на устройстве: Demo77://someurl
Чтобы настроить его, я добавил Demo77 в качестве элемента массива Схемы URL (CFBundleURLSchemes) в Info.plist.
Документация Apple говорит, что мне также нужно включить строковый ключ идентификатор URL (CFBundleURLName) в Info.plist. Этот ключ содержит "абстрактное имя схемы URL".
Я использовал не ключ идентификатор URL, и ссылки по-прежнему открывают мое приложение. Все работает без идентификатора URL.
Вопрос: действительно ли нужно включить ключ идентификатор URL в plist? И если да - почему?
![введите описание изображения здесь]()
Update
Этот вопрос отличается от идентификатора URL-адреса и схемы URL, где задается вопрос о том, для чего используется ключ URL-идентификатора. Я не спрашиваю, для чего он используется. Я спрашиваю, нужно ли вообще использовать "Идентификатор URL"? Схемы URL в моем приложении прекрасно работают без него. Обратите внимание, что ответы на вопрос идентификатор URL-адреса и схемы URL не затрагивают мой вопрос вообще. Извините, если мой первоначальный вопрос был недостаточно ясным.
Ответы
Ответ 1
Согласно Apple Docs
Идентификатор вы поставляете с вашей схемой отличает приложение от других, которые декларируют поддержку одной и той же схеме.
Хотя использование обратной строки DNS является оптимальной практикой, это не мешает другим приложениям регистрировать ту же схему и обрабатывать связанные ссылки. Используйте универсальные ссылки вместо пользовательских схем URL для определения ссылок, которые уникальным образом связаны с вашим сайтом.
Таким образом, чтобы ответить на ваш вопрос, добавление идентификатора URL не сильно изменится, но лучше включить его, как указано Apple.
Ответ 2
Если у вас установлено 2 приложения с одинаковой схемой URL, например:
yourscheme://
тогда у вас есть 2 конфликтующих приложения.
Как система решит открыть, какое приложение запустить?
Согласно документации Inter-App Communication
Если более одного стороннего приложения регистрируется для обработки одной и той же схемы URL-адреса, в настоящее время не существует процесса определения того, какому приложению будет присвоена эта схема
Пожалуйста, проверьте этот ответ для пользователя, который столкнулся с проблемой:
Кроме того, насколько я тестировал и испытывал, если у вас есть 2 конфликтующих приложения, то, по-видимому, это первое установленное приложение, которое используется, а когда это приложение удаляется, второе приложение, которое теперь является единственным приложением, поддерживающим конкретную схему URL-адресов. до сих пор не используется
Надеюсь, поможет.
Ответ 3
Идентификатор URL - это обратный доменный адрес, который должен быть таким же, как ваш идентификатор Bundle, например. com.companyname.appname
Схемы URL - это начало URL, например, 'appname'. Когда вы вызываете это как URL-адрес, он нацеливается на идентификатор пакета, который запускает приложение.
Ссылка: Идентификатор URL-адреса и схемы URL