5 Stimmen

Mac App-Sandbox-Gruppencontainer-Probleme

Ich habe Probleme mit zwei Sandbox-Anwendungen in einer Anwendunggruppe. In meiner Berechtigungsdatei habe ich folgendes:

     com.apple.security.app-sandbox

     com.apple.security.application-groups

          TEAM_ID.com.Company.AppName

Wo 'Company' und 'AppName' durch meinen Unternehmensnamen und den App-Namen ersetzt sind und TEAM_ID durch die ID meines Teams. Beide Anwendungen haben genau die gleichen Berechtigungen.

Wenn ich beide Apps erstelle und starte, scheint alles gut zu funktionieren. Außer der Tatsache, dass kein 'Group Containers'-Ordner in meinem ~/Library-Ordner zu finden ist... Es gibt einen 'Containers'-Ordner mit einem Ordner für beide Apps. Aber kein Group Containers-Ordner.

Ich arbeite mit 10.8.2 und das Bereitstellungsziel meiner App ist 10.8.

Der Developer Library zufolge sollte er ab 10.7.4 verfügbar sein. Ich habe diese Quelle verwendet: https://developer.apple.com/library/mac/#documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW19 zum Erstellen meiner Berechtigungen.

Was mache ich falsch?

Vielen Dank,

3voto

jeppeb Punkte 528

Jemand in den offiziellen Apple Developer Foren hat vorgeschlagen, den Ordner programmgesteuert zu erstellen, was die Lösung für mein Problem war!

NSString *groupContainer = [@"~/../../../Group Containers/TEAM_ID.com.Company.AppName" stringByExpandingTildeInPath];

[[NSFileManager defaultManager] createDirectoryAtPath:groupContainer withIntermediateDirectories:YES attributes:nil error:NULL]]

Ich habe den Gruppencontainer-Ordner für eine plist-Datei verwendet, in der meine Hauptanwendung Einstellungen schreiben kann, die meine Helferanwendung (Daemon) lesen kann (mit den Methoden initWithContentsOfFile: und writeToFile: von NSMutableDictionary). Dies funktioniert jetzt perfekt :)

0voto

Todd Punkte 1682

Als Update zu @jeppeb musste ich auch manuell die Ordner erstellen. In Swift, Mac OSX 10.14, fand ich die Verwendung von:

let appSupport: String = NSString(string: "~/Library/Group Containers/com.myCo.myAppName/Library/Application Support").expandingTildeInPath
try fileMan.createDirectory(atPath: appSupport, withIntermediateDirectories: true, attributes: nil)

let caches: String = NSString(string: "~/Library/Group Containers/com.myCo.myAppName/Library/Caches/myCacheFolder").expandingTildeInPath
try fileMan.createDirectory(atPath: caches, withIntermediateDirectories: true, attributes: nil)

let prefs: String = NSString(string: "~/Library/Group Containers/com.myCo.myAppName/Library/Preferences").expandingTildeInPath
try fileMan.createDirectory(atPath: prefs, withIntermediateDirectories: true, attributes: nil)

Ich kann nicht glauben, dass dies der richtige Weg ist, um die Dinge zu tun, aber in Abwesenheit einer anderen Antwort, die ich bisher gefunden habe, ist dies, was ich tun musste, um einen Gruppencontainerordner sowie einen Vorliebenordner zu erstellen, um alle Suite-Vorlieben zu speichern, die ich verwendet habe....

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X