2012-09-24 8 views
25

Apple ha introdotto nuove impostazioni di privacy per app, consentendo agli utenti di decidere se un'app è autorizzata ad accedere ai contatti, al calendario, alle foto e ai promemoria dell'utente. L'utente vedrà UIAlertView quando un'app tenta prima di accedere a una di queste risorse, in modo simile al meccanismo conosciuto quando un'app richiede l'accesso alla posizione.Come localizzare iOS 6 nuove stringhe di informazioni sulla privacy di Info.plist?

È anche possibile impostare stringhe di scopo, per consentire all'utente di sapere perché l'app vuole accedere. Tuttavia, questo viene ora eseguito tramite le chiavi in ​​Info.plist, ad es. "Privacy - Descrizione di utilizzo dei contatti" (NSContactsUsageDescription) per i contatti.

Ora mi chiedo come posso localizzare questi valori? Per il testo relativo allo scopo, ho utilizzato la proprietà purpose di un'istanza CLLocationManager con NSLocalizedString (...). Come faccio a fare qualcosa di simile con quei nuovi tasti in Info.plist?

Addendum: Le nuove chiavi di privacy sono elencati al seguente link, ma la colonna di riepilogo non li elencano come localizzabili: https://developer.apple.com/library/mac/#documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW14

risposta

44

Aggiungere la chiave allo InfoPlist.strings localizzato nei file di supporto. Dovrebbe assomigliare allo scopo:

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

Nel caso si stia ancora lavorando su un progetto creato originariamente con Xcode 3.x, non esiste un file "InfoPlist.strings". Quindi devi aggiungere il file manualmente al tuo progetto. – Tafkadasoh

+1

Trova qui le chiavi per il tuo scopo (ultimo aggiornamento febbraio 2014 - utilizza il valore ** chiave ** nel tuo file InfoPlist.strings o il ** nome Xcode ** nel tuo normale file Info.plist): [Elenco proprietà informazioni Riferimento chiave: Cocoa Keys] (https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html) – leanne

11

di localizzare il vostro Info.plist localizzando il file InfoPlist.strings.

+0

Non funziona per me. Dopo aver localizzato la build di Info.plist fallisce con il seguente messaggio "impossibile leggere i dati da '/home/username/Git/iOS/AppName/Resources/AppName-Info.plist': il file" AppName-Info.plist "non può essere aperto perché non esiste un file di questo tipo. " – Tafkadasoh

+0

Sembra che tu stia cercando di aprire il file Info.plist, non il file .strings. I file di stringhe si trovano nella rispettiva cartella localizzata. Dai un'occhiata a questo esempio https://github.com/Abizern/SimpleLocalisationTesting Nel progetto iOS puoi vedere come sto usando i file InfoPlist.strings nelle cartelle localizzate .lproj per usare nomi di app diversi per localizzazioni differenti. – Abizern

+0

Ok, questo funziona per CFBundleDisplayName, ma solo in parte. La schermata Home visualizza la stringa localizzata da InfoPlist.strings, ma se voglio interrogare il valore in modo programmatico con [[[NSBundle mainBundle] infoDictionary] objectForKey: @ "CFBundleDisplayName"] ', questo non funziona. Per quanto riguarda la localizzazione di NSContactsUsageDescription, non riesco a verificare se questo funziona, perché la finestra di dialogo viene visualizzata solo una volta. (motivo: l'eliminazione dell'app e la reinstallazione non consentono al sistema di dimenticare la decisione dell'utente se l'app è autorizzata ad accedere ai contatti.) – Tafkadasoh

Problemi correlati