В чем разница между «отображаемым именем пакета» и «именем пакета» в информационном листе приложения какао

Ответы:

102

Я не думаю, что какой-либо другой ответ кратко отвечает на этот вопрос.

  • CFBundleDisplayName- отображается: значок ниже . Согласно документам, должно быть локализовано, но только если локализовано само приложение, иначе будет какой-то штраф (если это правда, на самом деле я не могу сказать)

  • CFBundleName- отображается: Понятия не имею . Документы предполагают, что он будет использоваться в списках, поэтому рекомендуется максимум 16 символов, но, например, Настройки → Общие → Список использования приложений CFBundleDisplayNameдействительно используются . На сегодняшний день я так и не понял, где именно этот используется.

О, это для приложений iOS, не могу говорить о других ОС.

Jonny
источник
7
CFBundleDisplayName также отображается как заголовок уведомлений (в Центре уведомлений, на экране блокировки и т. Д.).
Джастин Рассел
114
как ответ "я понятия не имею" получил галочку и проголосовал больше?
badweasel
14
Я хочу сказать, что никто не знает, где это используется, никто еще не ответил. Если вы знаете ответ, вы можете добавить его, нажав «Добавить другой ответ».
Джонни
2
CFBundleDisplayName также используется в функции общего доступа к файлам iTunes. Если оставить черный, приложение не будет отображаться в списке iTunes, даже если функция включена.
unom
1
Я предполагаю, что CFBundleName - это имя папки приложения или «пакета», где все хранится.
kelin
100

спасибо за ответ Wevah. вот описания для людей, которые перепутали с этими двумя константами.

CFBundleDisplayName

CFBundleDisplayName(String - iOS, Mac OS X) указывает отображаемое имя пакета. Если вы поддерживаете локализованные имена для своего пакета, включите этот ключ как в файл списка информационных свойств, так и в файлы InfoPlist.strings в подкаталогах вашего языка. Если вы локализуете этот ключ, вы также должны включить локализованную версию ключа CFBundleName.

Если вы не собираетесь локализовать пакет, не включайте этот ключ в файл Info.plist. Включение этого ключа не влияет на отображение имени пакета, но снижает производительность при поиске локализованных версий этого ключа.

Перед отображением локализованного имени для вашего пакета Finder сравнивает значение этого ключа с фактическим именем вашего пакета в файловой системе. Если два имени совпадают, Finder переходит к отображению локализованного имени из соответствующего файла InfoPlist.strings вашего пакета. Если имена не совпадают, Finder отображает имя файловой системы.

Для получения дополнительной информации об отображаемых именах в Mac OS X см. Обзор файловой системы.


CFBundleName

CFBundleName(Строка - iOS, Mac OS X) идентифицирует краткое имя пакета. Это имя должно быть менее 16 символов и подходить для отображения в строке меню и в информационном окне приложения. Вы можете включить этот ключ в файл InfoPlist.strings соответствующего подкаталога .lproj, чтобы предоставить ему локализованные значения. Если вы локализуете этот ключ, вы также должны включить ключCFBundleDisplayName.

xhan
источник
1
Что такое "строка меню и информационное окно приложения" ??? - Это относится к чему-то в Xcode, симуляторе или устройстве iOS? @xhan - есть помощь?
Итан Паркер
@BeemerFan это относится к строке меню OS X. xhan процитировал документацию Apple, и если вы заметите, там написано «iOS, Mac OS X», так что это применимо к обоим (и некоторые детали, очевидно, зависят от платформы).
Крис Пейдж,
Чтобы процитировать источник, вот информация о CFBundleDisplayName из документации Apple: developer.apple.com/library/ios/documentation/General/Reference/…
tylermilner
Неправильно говорить, что не включайте этот ключ, если не планируете локализацию. В документе Apple говорится, что вы должны включить этот ключ, потому что Siri его использует. developer.apple.com/library/archive/documentation/General/…
дерзкий
1
Похоже, что Apple теперь требует CFBundleDisplayName как минимум с 28 июня 2019 г. или где-то в последнее время. Теперь вы получаете недопустимое двоичное отклонение.
Дэйв Хаббард
29

занятой кот

Согласно Apple,

Отображаемое имя пакета:

Отображаемое имя приложения on the iPhone home screenпроисходит из записи CFBundleDisplayName (или «Отображаемое имя пакета» в виде удобочитаемой строки в Xcode) в Info.plist вашего приложения iOS.

Точно так же имя приложения, которое вы видите в своем WatchKit app's launch screen и notificationsпроисходит от CFBundleDisplayName в Info.plist вашего приложения WatchKit.

Название пакета:

The Apple Watch app on the iPhone в настоящее время использует имя пакета (а не отображаемое имя пакета) вашего приложения iOS, которое указывается в записи CFBundleName (или "Bundle name") в его Info.plist

Вы можете увидеть другие связанные снимки экрана и получить дополнительную информацию на странице Apple Developer, нажав здесь .

Сафа
источник
19
Я не могу не задаться вопросом: если вы собираетесь сделать снимок экрана, чтобы показать, как используются значения, не лучше ли было бы дать им разные значения, чтобы они выглядели по-разному?
Ричард Салай,
15

Из моего опыта:

  • CFBundleDisplayName используется в сетке приложений на устройствах iOS
  • CFBundleName используется в списке приложений, хранящихся в библиотеке iTunes.
wojked
источник
6
Просто Apple, чтобы сделать простую вещь сложной.
Duck
Это кажется правильным, у Google Hangouts короткое отображаемое имя и неприятно длинное имя библиотеки iTunes, похожее на спам.
1
CFBundleName также появляется, если вы получаете сообщение об ошибке при установке приложения, например «( CFBundleName ) не может быть установлен в данный момент».
saveknut
10

Только если отображаемое имя CFBundleDisplayNameпакета ( ) не указано, значение параметра Bundle Name ( CFBundleName) будет использоваться для отображения под значком приложения.

Обратите внимание, что CFBundleDisplayNameэто можно локализовать, и его следует использовать для установки имени приложения, отображаемого в меню iOS Springboard и приложениях Mac OS X / Mission Control.

Короче говоря, не трогать CFBundleNameи оставить его значение по умолчанию, то есть ${PRODUCT_NAME}.

Raptor
источник
0

Обратите внимание, что имя пакета также используется в качестве префикса для пользовательского агента HTTP.

awph
источник