2014-09-19 1 views
1

Dans mon extension aujourd'hui avec mon appareil déverrouillé, cette ligne de code fonctionne comme prévu, le retour des données à partir du chemin de l'image:Charger le fichier dans l'extension Aujourd'hui, lorsque l'appareil est verrouillé

let imageData = NSData(contentsOfFile: path) 

Toutefois, lorsque mon appareil est verrouillé avec un mot de passe, il renvoie zéro. Est-il possible d'accéder aux images dans le système de fichiers lorsque le périphérique est verrouillé? Je peux très bien accéder à UserDefaults, mais pas aux fichiers du répertoire de mon groupe partagé. Voici comment je crée le chemin, appelant imagePath, qui est correctement renseigné avec le chemin que je pense dans les deux cas:

func rootFilePath() -> String? { 
    let manager = NSFileManager() 
    let containerURL = manager.containerURLForSecurityApplicationGroupIdentifier(GROUP_ID) 
    if let unwrappedURL = containerURL { 
     return unwrappedURL.path 
    } 
    else { 
     return nil 
    } 
} 

func imagePath() -> String? { 
    let rootPath = rootFilePath() 
    if let uPath = rootPath { 
     return "\(uPath)/\(imageId).png" 
    } 
    else { 
     return nil 
    } 
} 
+0

Un mouvement à ce sujet? Je cours dans le même problème. –

+0

Non ... rien encore. Et le gars sur ce post prétend qu'il n'a pas du tout le problème, bien que je ne le crois pas, je me sens comme le système de fichiers est juste verrouillé avec un mot de passe - même si je n'ai pas encore récuré les docs . http://stackoverflow.com/a/25844434/431271 – ccwasden

Répondre

0

Je viens figured it out! Vous devez définir les autorisations de fichier en conséquence:

NSFileManager *fm = [[NSFileManager alloc] init]; 
NSDictionary *attribs = @{NSFileProtectionKey : NSFileProtectionNone}; 
NSError *unprotectError = nil; 

BOOL unprotectSuccess = [fm setAttributes:attribs 
          ofItemAtPath:[containerURL path] 
            error:&unprotectError]; 
if (!unprotectSuccess) { 
    NSLog(@"Unable to remove protection from file! %@", unprotectError); 
} 

Dans de nombreux cas, vous ne voudriez pas normalement à faire, mais parce que l'information est destinée à être vue depuis l'écran de verrouillage, je suis OK avec le fichier suppression protection.

+0

Pouvez-vous partager le code complet? Si 'containerURL' est nul, alors comment paramétrez-vous un attribut? – strangetimes

+0

@strangetimes Si c'est nul, alors vous avez un plus gros problème que d'essayer de déprotéger un fichier qui n'est pas là. Je recommande de poser une nouvelle question. –

+0

Désolé je pensais que vous avez dit ci-dessus que c'est en fait le retour de zéro? Est-ce que vous le déprotégiez quand il vous donne un zéro ou le faites-vous avant quand l'appareil n'est pas verrouillé? – strangetimes

Questions connexes