Hallo zusammen!
Ich würde euch gern mein Programm "start" vorstellen. Zugegeben, das Programm ist aktuell bereits in der Version 2.x - also nimmer ganz taufrisch - aber ich habe auch erst vor kurzem dieses Forum hier entdeckt
Bei "start" handelt es sich um einen Programmlauncher. Hier gibt es zwar bereits einige aber ich wollte sehr gern ein wenig mehr Ordnung in meine Programme reinbringen und so meine Programme mittels Tags gruppieren (mittels Tags/Schlagworten sind selten benutzte Programme einfach schneller zu finden )
Weitere Infos findet Ihr auf meiner Webseite start.innovative-bytes.net
"start" ist mein erstes Programm welches ich unter macOS entwickelt habe - die Jahre zuvor habe ich mich hauptsächlich mit der Programmierung unter Windows beschäftigt und nachdem ich nun privat vollständig auf macOS gewechselt bin fand ich es sehr spannend wie die Interna von macOS so funktionieren
Schwierig gestaltete sich die Integration der Apple Sandbox. So lange der User nur Programme starten möchte die im Applications-Folder liegen ist der Zugriff kein Problem. Außerhalb der "Standardverzeichnisse" wird das ganze dann kniffliger und der User muss den Zugriff explizit erlauben. Hierbei verwende ich die Standard-Klassen PermissionManager sowie zum speichern der erlaubten Zugriffe BookmarkManager. Die Gradwanderung auf der einen Seite die Usability für den Anwender so angenehm wie möglich zu gestalten (Programme, Verzeichnisse und Dateien systemweit öffnen zu können) und dennoch die Sandbox zu verwenden ist dabei schwierig (falls jemand eine Idee hat wie dies besser gestaltet werden kann freue ich mich über einen Tipp )
Für die nächste Version möchte ich die Möglichkeit implementieren die zuletzt (systemweit) verwendeten Programme anzuzeigen. Prinzipiell relativ einfach - wenn nicht auch hier die Sandbox den Zugriff auf die systeminternen Infos verhindern würde (com.apple.recentitems.plist bzw. Abfrage der Launchservices). Das ganze wird nun mittels Abfrage der Spotlight-Datenbank realisiert (NSPredicate(format: "kMDItemContentType == 'com.apple.application-bundle' AND kMDItemLastUsedDate >= %@", argumentArray: [startDate])). Das ganze scheint gut zu funktionieren und stört auch die Sandbox nicht - zur finalen Implementierung sind aber noch einige weitere Tests notwendig
Ich würde euch gern mein Programm "start" vorstellen. Zugegeben, das Programm ist aktuell bereits in der Version 2.x - also nimmer ganz taufrisch - aber ich habe auch erst vor kurzem dieses Forum hier entdeckt
Bei "start" handelt es sich um einen Programmlauncher. Hier gibt es zwar bereits einige aber ich wollte sehr gern ein wenig mehr Ordnung in meine Programme reinbringen und so meine Programme mittels Tags gruppieren (mittels Tags/Schlagworten sind selten benutzte Programme einfach schneller zu finden )
Weitere Infos findet Ihr auf meiner Webseite start.innovative-bytes.net
"start" ist mein erstes Programm welches ich unter macOS entwickelt habe - die Jahre zuvor habe ich mich hauptsächlich mit der Programmierung unter Windows beschäftigt und nachdem ich nun privat vollständig auf macOS gewechselt bin fand ich es sehr spannend wie die Interna von macOS so funktionieren
Schwierig gestaltete sich die Integration der Apple Sandbox. So lange der User nur Programme starten möchte die im Applications-Folder liegen ist der Zugriff kein Problem. Außerhalb der "Standardverzeichnisse" wird das ganze dann kniffliger und der User muss den Zugriff explizit erlauben. Hierbei verwende ich die Standard-Klassen PermissionManager sowie zum speichern der erlaubten Zugriffe BookmarkManager. Die Gradwanderung auf der einen Seite die Usability für den Anwender so angenehm wie möglich zu gestalten (Programme, Verzeichnisse und Dateien systemweit öffnen zu können) und dennoch die Sandbox zu verwenden ist dabei schwierig (falls jemand eine Idee hat wie dies besser gestaltet werden kann freue ich mich über einen Tipp )
Für die nächste Version möchte ich die Möglichkeit implementieren die zuletzt (systemweit) verwendeten Programme anzuzeigen. Prinzipiell relativ einfach - wenn nicht auch hier die Sandbox den Zugriff auf die systeminternen Infos verhindern würde (com.apple.recentitems.plist bzw. Abfrage der Launchservices). Das ganze wird nun mittels Abfrage der Spotlight-Datenbank realisiert (NSPredicate(format: "kMDItemContentType == 'com.apple.application-bundle' AND kMDItemLastUsedDate >= %@", argumentArray: [startDate])). Das ganze scheint gut zu funktionieren und stört auch die Sandbox nicht - zur finalen Implementierung sind aber noch einige weitere Tests notwendig