Где используется CFBundleName

отсюда вопрос: в чем разница между "отображаемым именем пакета" и "именем пакета" в info plist приложения cocoa

Это указывает на официальные документы, которые говорят:

CFBundleName

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

может ли кто-нибудь сказать, как показать это имя в iOS?

Я никогда не мог показать это значение в моем iPhone.

5 ответов


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

я нашел этот ответ переполнения стека, который теперь довольно старый (но с довольно большим количеством upvotes). В этом ответе утверждается, что CFBundleName будет именем папки, в которой хранится приложение. Так, например, CFBundleName = HelloWorld должно производить

+- HelloWorld.app
    - HelloWorldApplication

если Имя Исполняемого Файла был HelloWorldApplication. Тем не менее, я просто построил простую программу и запустил ее на iOS 5.0 и .папку приложение не имя равно CFBundleName. Итак, если это когда-нибудь работал таким образом, это не кажется никому больше.

я видел довольно много ссылок, которые говорят, что CFBundleName следует оставить значение ${PRODUCT_NAME} в Xcode, что я всегда делаю. Не как технические ограничение, но в качестве критерия обзора Apple я также видел, как люди утверждают, что CFBundleDisplayName должно быть близко по теме to CFBundleName. Например, это нормально, если это сокращенная версия CFBundleName, но они могут отклонить приложение, если оно не связано вообще.

я также проверил листинг в настройки.app, и в iTunes, и я не видел Имя Пакета в любом из этих мест.

Итак, чтобы ответить на ваш вопрос, я не считаю, что эта переменная видна пользователю (на iOS).


обновление: я не, однако, проверил, могут ли какие-либо функции доступности говорить это имя где угодно.

и это так ответ утверждает, что CFBundleName будет имя, используемое в URL-адресе iTunes App Store для вашего приложения. Но, см. @ТК.'s комментарий / пример URL ниже ...


обновление 2: в комментарии @honus ниже, один необычно сценарий CFBundleName можете будет показано Пользователю, если ваше приложение имеет нет запись CFBundleDisplayName в его Инфо.plist файл. В таком случае ...--1--> будет отображаться под значком приложения в SpringBoard.


вы можете получить доступ к этим ключам, как это.

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]

здесь infoDicitonary is A dictionary, constructed from the bundle's Info.plist file. Там вы можете найти такую информацию о своем приложении. NSBundle

Примечание: Вы можете проверить фактический ключ, открыв App-info.plist файл и щелкните правой кнопкой мыши в любом месте, затем выберите опцию Show Raw Keys/Values.


CFBundleName используется при локализации приложения macOS Cocoa в меню Mac OS в качестве имени приложения (справа от меню Файл). Так что это определенно имеет смысл. Не знаю, используется ли он и показан где-то еще. Но лучше не оставлять его, при локализации вашего приложения!


если вы откроете свои данные.plist файл контекстом щелкнув его в дереве проекта и выбрав "открыть как > исходный код", вы увидите XML-представление plist. По умолчанию эти два ключа имеют одинаковое значение, поэтому вы можете получить доступ к любому из них.

<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>

чтобы фактически захватить значения, вы можете использовать это сообщение SO в качестве руководства:как отобразить текущую версию проекта моего приложения для пользователя? просто заменить CFBundleVersion ключ CFBundleDisplayName.

In сущность:

NSString *displayName = [[[NSBundle mainBundle] infoDictionary] 
                                          valueForKey:@"CFBundleDisplayName"];

имя пакета имя пакета приложения в файловой системе.

Bundle display name-это заголовок значка приложения, который пользователь увидит на своем устройстве iOS или заголовок значка на OSX.