¿Cómo se puede lograr esto? Me gustaría obtener el nombre para que pueda mostrarlo dentro de una aplicación, sin tener que cambiarlo en el código cada vez que cambie un nombre, por supuesto.Obtener el nombre del producto de una aplicación de iPhone en tiempo de ejecución?
Respuesta
probar este
NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *info = [bundle infoDictionary];
NSString *prodName = [info objectForKey:@"CFBundleDisplayName"];
que tenía un problema cuando me localizo mi nombre de la aplicación mediante el uso de InfoPlist.strings, como
CFBundleDisplayName = "My Localized App Name";
no pude obtener el nombre aplicación localizada si uso infoDictionary.
En ese caso utilicé localizedInfoDirectory como a continuación.
NSDictionary *locinfo = [bundle localizedInfoDictionary];
Puede utilizar el enfoque directo,
NSString* appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];
buenas respuestas aquí.
Aunque agregaría una cosa.
En lugar de utilizar @ "CFBundleDisplayName", que tiene el potencial de cambiar en el futuro, lo mejor es echar la constante de cadena suministrada en CFBundle.h así:
[[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
este modo a prueba de futuro de su código.
Esta es una clave diferente y puede que no sea el nombre para mostrar en todos los casos. Sorprendentemente, una cadena literal es lo que [recomienda Apple] (http://developer.apple.com/library/mac/#qa/qa1544/_index.html) para este caso en particular. –
respuesta increíble ... – svmrajesh
Puede obtener todos los detalles de este diccionario "información". imprime este diccionario y obtén lo que quieras.
NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *info = [bundle infoDictionary];
Según Apple, usando - objectForInfoDictionaryKey:
directamente en el objeto NSBundle
se prefiere:
El uso de este método es preferido sobre otros métodos de acceso, ya que devuelve el valor localizada de una tecla cuando uno está disponible .
He aquí un ejemplo en Swift:
let appName = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName") as! String
// Or use key "CFBundleDisplayName"
Actualización para Swift 3 - gracias Jef.
let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String
Esto es solo una actualización rápida para esta muy vieja pregunta. Yo estaba en la necesidad de respuesta rápida y era un poco complicado (Desenvolviendo opcionales) en la sintaxis rápida lo que podrá compartir aquí
let productName = NSBundle.mainBundle().infoDictionary!["CFBundleName"]!
Para completar, Swift 3.0 sería;
let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as! String
¿Por qué votar sin ningún comentario? El código funciona y la respuesta no es un duplicado:/ – Patrick
Te daré un hombre de votos negativos - Te conseguí –
Esto realmente no responde la pregunta que está pidiendo el nombre del producto que se puede configurar de forma diferente a la pantalla del paquete Nombre. – awolf
Aquí es el enfoque más limpio que podría subir con el uso de Swift 3:
let productName = Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String
El siguiente código sería mejor.
NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *info = [bundle infoDictionary];
self.appName = [info objectForKey:@"CFBundleExecutable"];
Aquí está el Xamarin.Versión de iOS de la respuesta de @epatel:
var prodName = NSBundle.MainBundle.InfoDictionary.ObjectForKey(new NSString("CFBundleDisplayName")) as NSString;
- 1. Obtener el nombre del producto del archivo msi en C#
- 2. ¿Cómo obtener el nombre del caso de prueba en JUnit 4 en tiempo de ejecución?
- 3. Algoritmo de nombre del producto
- 4. obtener el nombre de la aplicación del nombre del paquete
- 5. Obtener el nombre del ensamblado de la aplicación web, independientemente del ensamblaje de ejecución actual
- 6. symfony2 - Obtener tiempo de ejecución
- 7. cómo obtener entrada del usuario en el tiempo de ejecución
- 8. verificación de iPhone para una constante en tiempo de ejecución en la aplicación universal
- 9. Simplemente cambie el nombre del archivo ejecutable de la aplicación para una aplicación para iPhone
- 10. ¿Cómo obtener el nombre del proceso de una aplicación?
- 11. Cambiar el nombre del producto con mage.exe
- 12. Eclipse para obtener el tiempo de ejecución del programa
- 13. Detectar en tiempo de ejecución de qué tienda de aplicaciones del país se descargó mi aplicación para iPhone?
- 14. iPhone y iPad: ¿está bien cambiar el nombre del producto en Xcode?
- 15. iPhone Cambiar el nombre de la aplicación
- 16. ¿Puede el GPS del iPhone proporcionar una velocidad precisa para una aplicación en ejecución?
- 17. Cambie el parámetro del atributo en el tiempo de ejecución
- 18. ¿Cómo obtener el nombre del método de prueba de la unidad en tiempo de ejecución dentro de la prueba unitaria?
- 19. Nombre del paquete, nombre del archivo ejecutable, nombre del producto ... ¿algo más?
- 20. Cómo cambiar el nombre de la aplicación de iPhone 100%!
- 21. Tiempo de ejecución del programa
- 22. Android: Obtener nombre de la aplicación (no Nombre del paquete)
- 23. JPA: ¿Cómo especifico el nombre de la tabla correspondiente a una clase en tiempo de ejecución?
- 24. Obtener una ruta de un proceso en ejecución por nombre
- 25. Obtener el nombre del programa Java
- 26. Obtener un tiempo de ejecución preciso de una instrucción MySQL
- 27. recuperando el nombre de una variable en python en tiempo de ejecución?
- 28. Cambie el parámetro del atributo personalizado en tiempo de ejecución
- 29. Obtener el tiempo de ejecución de la consulta de PostgreSQL
- 30. Contactos de iPhone - Obtener el nombre de la empresa
dulzura, gracias! –
CFBundleDisplayName devuelve el nombre de visualización del paquete. OP pidió el nombre del producto. Para este uso, CFBundleName. En la mayoría de los casos, los dos serán iguales, pero pueden ser diferentes si configura un nuevo nombre para mostrar (para algo que se muestra debajo del icono que no es adecuado como nombre de archivo). –
Apple analiza esto en un [artículo técnico.] (Http://developer.apple.com/library/mac/#qa/qa1544/_index.html). De particular interés es que no hay una constante para 'CFBundleDisplayName' - una cadena literal es lo correcto para usar. –