Где используется CFBundleName
Из этого старого вопроса: В чем разница между "отображаемым именем пакета" ? и "имя пакета" в cocoa информационной области приложения
Он указывает на официальные документы, в которых говорится:
CFBundleName
CFBundleName (String - iOS, OS X) идентифицирует короткое имя расслоение. Это имя должно быть менее 16 символов и должно быть подходит для отображения в строке меню и в окне сведений о приложениях. Вы может включать этот ключ в файле InfoPlist.strings соответствующего .lproj для предоставления локализованных значений для него. если ты локализовать этот ключ, вы должны также включить ключ "CFBundleDisplayName."
Может ли кто-нибудь сказать, как показать это имя в iOS?
Я никогда не мог показать это значение на своем iPhone.
Ответы
Ответ 1
Мне не кажется, что CFBundleName
показывает в любом месте для пользователя, на iOS. Я полагаю, что видел документацию для Mac OS X (которая, очевидно, iOS наследует много устаревшей инфраструктуры), которая говорит, что имя Bundle используется для чего-то еще... Я думаю, что это может быть было имя в верхней строке меню или нижней панели док-станции. Разумеется, в iOS ничего не существует.
Я также нашел этот ответ, который теперь довольно старый (но с довольно небольшим количеством оборотов). В этом ответе утверждается, что имя CFBundleName будет именем папки, в которой хранится приложение. Так, например, CFBundleName = HelloWorld
должен производить
+- HelloWorld.app
- HelloWorldApplication
Если для Исполняемое имя установлено значение HelloWorldApplication
. Тем не менее, я просто создал простую программу и запустил ее на iOS 5.0, а папка .app была не с именем равным CFBundleName
. Итак, если он когда-либо работал таким образом, он больше не выглядит.
Я видел довольно много ссылок, в которых говорится, что CFBundleName
следует оставить в ${PRODUCT_NAME}
в Xcode, что я всегда делаю. Не как техническое ограничение, но как критерий проверки Apple, я также видел, как люди утверждают, что CFBundleDisplayName
должен быть тесно связан с CFBundleName
. Например, это нормально, если это сокращенная версия CFBundleName
, но что они могут отклонить приложение, если оно не связано вообще.
Я также проверил список в Settings.app и в iTunes, и я не видел Bundle Name любого из этих мест.
Итак, чтобы ответить на ваш вопрос, я не верю, что эта переменная видна пользователю (на iOS).
Обновление: У меня не, но проверено, могут ли какие-либо функции доступности говорить это имя где угодно.
Кроме того, этот ответ SO утверждает, что CFBundleName
будет именем, используемым в URL-адресе iTunes App Store для вашего приложения. Но, см. @tc. комментарий/пример URL ниже...
Обновить 2: на комментарий @honus ниже, один необычный сценарий, где CFBundleName
может быть показан пользователю, - это если в вашем приложении нет для CFBundleDisplayName
в файле Info.plist. В этом случае CFBundleName
будет отображаться под значком приложения в SpringBoard.
Ответ 2
Вы можете получить доступ к этим клавишам.
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]
Где infoDicitonary
- A dictionary, constructed from the bundle Info.plist file
. Там вы можете найти такую информацию о своем приложении. NSBundle
Примечание. Вы можете проверить фактический ключ, открыв файл App-info.plist
и щелкнув правой кнопкой мыши в любом месте, затем выбрав опцию Show Raw Keys/Values
.
Ответ 3
CFBundleName используется при локализации приложения MacOS Cocoa в Mac OS MenuBar в качестве имени приложения (прямо из меню файла).
Так что это ОПРЕДЕЛЕННО имеет смысл.
Не знаю, если он используется и показан где-то в другом месте. Но лучше не оставлять это, когда локализуете свое приложение!
Ответ 4
В macOS это используется как средство для определения того, должно ли имя приложения быть локализовано в Finder. Если фактическое имя пакета (разумеется, расширенное с помощью ".app") совпадает с CFBundleName
, Finder покажет его локализованное отображаемое имя. Однако пользователь может переименовать приложение в то, что он посчитает более подходящим, и в этом случае macOS нужен способ узнать, было ли имя изменено.
Ответ 5
Если вы откроете свой файл info.plist, нажав его в дереве проекта и выбрав "Открыть как > Исходный код", вы увидите XML-представление plist. По умолчанию эти два ключа имеют одинаковое значение, поэтому вы можете получить доступ к одному из них.
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
Чтобы на самом деле захватить значения, вы можете использовать этот пост SO в качестве ориентира: Как отобразить текущую версию моего приложения для пользователя? Просто замените CFBundleVersion
с CFBundleDisplayName
.
По существу:
NSString *displayName = [[[NSBundle mainBundle] infoDictionary]
valueForKey:@"CFBundleDisplayName"];
Ответ 6
Имя пакета - это имя фактического пакета приложений в файловой системе.
Отображаемое имя пула - это заголовок значка приложения, который пользователь увидит на своем устройстве iOS или в заголовке значка на OSX.