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

Вот хороший вопрос:

Имя пакета, исполняемое имя, название продукта … что-нибудь еще?

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

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

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

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

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

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

CFBundleDisplayName

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

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

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

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


CFBundleName

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

занятая кошка

По словам Apple,

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

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

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

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

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

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

По моему опыту:

  • CFBundleDisplayName используется в сетке приложений на устройствах iOS
  • CFBundleName используется в списке приложений, хранящихся в медиатеке iTunes

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

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

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

  • viewDidLoad в NSViewController?
  • strong / weak / keep / unsafe_unretained / assign
  • Если «a == b» является ложным при сравнении двух объектов NSString
  • Как обнаружить паузу во вводе для UISearchBar / UITextField?
  • Почему NSUserDefaults не удалось сохранить NSMutableDictionary в iPhone SDK?
  • UIWebView - Как определить последнее сообщение webViewDidFinishLoad?
  • Проблема UITableView при использовании отдельного делегата / источника данных
  • Аккордеонная ячейка таблицы - Как динамически расширять / сокращать uitableviewcell?
  • Ошибка с NSJSONSerialization - Недопустимый тип записи JSON (меню)
  • Как работает новый механизм автоматического подсчета ссылок?
  • 2D-массивы с использованием NSMutableArray
  • Давайте будем гением компьютера.