2012-09-24 14 views
25

Apple presentó la nueva configuración de privacidad por aplicación, lo que permite a los usuarios decidir si una aplicación puede acceder a los contactos, el calendario, las fotos y los recordatorios del usuario. El usuario verá un UIAlertView cuando una aplicación intente primero acceder a uno de estos recursos, similar al mecanismo conocido cuando una aplicación quiere acceso a la ubicación.Cómo localizar iOS 6 nuevas cadenas de propósito de privacidad Info.plist?

También es posible establecer cadenas de propósito, para que el usuario sepa por qué la aplicación quiere acceder. Sin embargo, esto ahora se hace a través de las claves en Info.plist, p. "Privacidad - Descripción de uso de contactos" (NSContactsUsageDescription) para contactos.

Ahora me pregunto cómo puedo localizar estos valores? Para el texto de propósito de ubicación, solía establecer la propiedad de propósito de una instancia de CLLocationManager con NSLocalizedString (...). ¿Cómo hago algo similar con esas nuevas claves en Info.plist?

Adición: Las nuevas claves de privacidad se enumeran en el siguiente enlace, pero la columna de resumen no los enumera como siendo localizable: https://developer.apple.com/library/mac/#documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW14

Respuesta

44

Agregue la clave al InfoPlist.strings localizado en los archivos auxiliares. Debe verse así para el propósito:

/* Localized version of location services purpose for Info.plist */ 
NSLocationUsageDescription = "here is your purpose to use location service"; 
+0

En caso de que todavía esté trabajando en un proyecto que se creó originalmente con Xcode 3.x, no hay ningún archivo "InfoPlist.strings". Entonces debe agregar el archivo manualmente a su proyecto. – Tafkadasoh

+1

Encuentre aquí las claves para su propósito (última actualización en febrero de 2014 - use el valor ** clave ** en su archivo InfoPlist.strings o el ** nombre Xcode ** en su archivo regular Info.plist): [Lista de propiedades de información Referencia clave: Cocoa Keys] (https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html) – leanne

11

para localizar las Info.plist localizando el archivo InfoPlist.strings.

+0

No funciona para mí. Después de localizar la creación de Info.plist falla con el siguiente mensaje "no se pudieron leer los datos de '/home/username/Git/iOS/AppName/Resources/AppName-Info.plist': el archivo" AppName-Info.plist "no pudo leer ser abierto porque no hay tal archivo ". – Tafkadasoh

+0

Parece que está intentando abrir el archivo Info.plist, no el archivo .strings. Los archivos de cadenas están en sus respectivas carpetas localizadas. Eche un vistazo a este ejemplo https://github.com/Abizern/SimpleLocalisationTesting En el proyecto iOS, puede ver cómo estoy usando los archivos InfoPlist.strings en las carpetas localizadas .lproj para usar diferentes nombres de aplicaciones para diferentes localizaciones. – Abizern

+0

De acuerdo, esto funciona para CFBundleDisplayName, pero solo en parte. La pantalla de Inicio muestra la cadena localizada de InfoPlist.strings, pero si deseo consultar el valor de forma programática con '[[[NSBundle mainBundle] infoDictionary] objectForKey: @ "CFBundleDisplayName"]', esto no funciona. En cuanto a la localización de NSContactsUsageDescription, no puedo probar si esto está funcionando, porque el diálogo solo se muestra una vez. (razón: la eliminación de la aplicación y la reinstalación no permitirán que el sistema olvide la decisión del usuario si la aplicación tiene acceso a Contactos.) – Tafkadasoh