Где используется 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.