Conflit Sandboxing et NSWorkspace

Bonjour,


 


La notice d'emploi de mon logiciel est un pdf que l'on ouvre avec la formule habituelle :



- (IBAction) alAide : (id) sender{
NSWorkspace *aideDemande = [NSWorkspace sharedWorkspace];
NSBundle *thisBundle = [NSBundle bundleForClass:[self class]];
[aideDemande openFile:[thisBundle pathForResource:NSLocalizedString(@FICHIER_AIDE, @"") ofType:@pdf]];
}

Avant, cela marchait très bien, mais là , l'application refuse d'ouvrir le pdf au prétexte que je n'ai pas les autorisations suffisantes. Je précise que si je supprime "sandbox", le pdf est ouvert. Je ne vois pas quoi autoriser de plus que les options dont j'ai besoin.


Auriez-vous une idée? Merci par avance...


Réponses

  • Beaucoup de questions ont déjà  été postées sur d'autres forums avec la même question, mais il n'y a de réponse nulle part!! Apple m'étonne beaucoup, avec de "Sandbox", pas moyen d'utiliser la technologie Apple au sein du MAS!! Ils m'avaient déjà  fait le coup avec les AudioUnit : pas moyen de laisser l'appli installer un AudioUnit sur le Mac pour une appli MAS. Allez comprendre...


     


    J'ai encore des problèmes avec PDFViewer, mais cela devrait pouvoir se faire ainsi.


  • MalaMala Membre, Modérateur

    Moi je tenterais en recopiant le fichier d'aide dans NSTemporaryDirectory() qui est automatiquement sandboxé et ensuite je ferais mon openFile dessus.


  • C'est certainement due au fait que l'application Aperçu étant sandboxé, elle ne peut ouvrir un document sans action de l'utilisateur.


     


    Je te recommande de faire un sample code et d'utiliser un de tes coupon du DTS (Developer Technical Support) qui te permettra de demander au support développeur de t'expliquer comment faire marcher ça.


  • HerveHerve Membre
    février 2014 modifié #5

    Merci Mala et Yoann pour vos réponses. J'ai déjà  créé une classe PDFViewer dans une sous-fenêtre de l'appli, cela restera comme cela pour cette fois-si, mais je note vos idées pour la prochaine fois. Merci!


  • MalaMala Membre, Modérateur

    Etrange tout de même. Je viens de faire le test suivant qui marche parfaitement en sandboxé:



    [[NSWorkspace sharedWorkspace] openFile:[[NSBundle mainBundle] pathForResource:@marscaper-hdr-en ofType:@pdf]];

  • MalaMala Membre, Modérateur

    Question qui me vient, le bundle qui contient la doc est bien signé?


  • merci pour ces post. A vrai dire, le problème se pose aussi pour une appli plus ancienne. 


     


    Les Target et Application (en haut) sont bien signées avec mon certificat de développeur. Je pense que cela signe le bundle avec... Il me semble que l'objet du sand boxing est justement d'isoler les applis les unes des autres pour éviter les spams, etc.


     


    A t-on le droit d'envoyer une appli au Mac Apple Store sans sandboxer? Je crois que non.


  • MalaMala Membre, Modérateur
    février 2014 modifié #9

    Non ce que je voulais dire c'est est-ce que ta doc est bien dans le main bundle et non dans un bundle privé embarqué dans l'appli? Par exemple un bundle de plugin ou un framework privé. Je pose la question car j'ai rencontré le problème en passant à  Mavericks/Xcode 5. Il faut maintenant impérativement signer les librairies ou autre binaires embarquées alors que ce n'était pas le cas avant apparement.


Connectez-vous ou Inscrivez-vous pour répondre.