ios - quedan - icloud
Obtener el nombre del producto de una aplicaciĆ³n de iPhone en tiempo de ejecuciĆ³n? (12)
¿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.
Aquí está la versión de Xamarin.iOS de la respuesta de @epatel:
var prodName = NSBundle.MainBundle.InfoDictionary.ObjectForKey(new NSString("CFBundleDisplayName")) as NSString;
El siguiente código sería mejor.
NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *info = [bundle infoDictionary];
self.appName = [info objectForKey:@"CFBundleExecutable"];
Esta es solo una actualización rápida para esta vieja pregunta. Necesitaba una respuesta rápida y fue algo complicado (desempaquetar opcionales) con una sintaxis rápida, así que compartirlo aquí
let productName = NSBundle.mainBundle().infoDictionary!["CFBundleName"]!
Este es el enfoque más limpio que pude utilizar con Swift 3:
let productName = Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String
Para completar, Swift 3.0 sería;
let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as! String
Prueba esto
NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *info = [bundle infoDictionary];
NSString *prodName = [info objectForKey:@"CFBundleDisplayName"];
Puede tener todos los detalles del paquete de este diccionario "información". imprime este diccionario y obtén lo que quieras.
NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *info = [bundle infoDictionary];
Puedes usar el enfoque directo,
NSString* appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];
Según Apple, el uso de - objectForInfoDictionaryKey:
directamente en el objeto NSBundle
es preferido:
El uso de este método es preferible a otros métodos de acceso porque devuelve el valor localizado de una clave cuando hay una disponible.
Aquí hay 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
Tuve un problema cuando localicé el nombre de mi aplicación usando InfoPlist.strings, como
CFBundleDisplayName = "My Localized App Name";
No podría obtener el nombre de la aplicación localizada si uso infoDictionary.
En ese caso, utilicé localizedInfoDirectory como a continuación.
NSDictionary *locinfo = [bundle localizedInfoDictionary];
Buenas respuestas aquí.
Sin embargo, agregaría una cosa.
En lugar de usar @ "CFBundleDisplayName", que tiene el potencial de cambiar en el futuro, lo mejor es convertir la constante de cadena suministrada en CFBundle.h de la siguiente manera:
[[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
Por lo tanto, a prueba de futuro su código.