Re: XPC Services & non-Sandboxed Applications
Re: XPC Services & non-Sandboxed Applications
- Subject: Re: XPC Services & non-Sandboxed Applications
- From: Kevin Meaney <email@hidden>
- Date: Sat, 18 Jul 2015 18:10:43 +0100
Hi
I would watch session Cocoa Interprocess Communication with XPC from WWDC 2012. https://developer.apple.com/videos/wwdc/2012/ <https://developer.apple.com/videos/wwdc/2012/>
I certainly found it very helpful. I’ve taken quite comprehensive notes from that session see:
http://blog.yvs.eu.com/2013/07/cocoa-interprocess-communication-with-xpc/ <http://blog.yvs.eu.com/2013/07/cocoa-interprocess-communication-with-xpc/>
But I think you will still get value from watching the video.
Kevin
Kevin Meaney
Zukini Ltd
Sheffield S2 3LN
Company no: 9491832
> On 18 Jul 2015, at 15:26, SevenBits <email@hidden> wrote:
>
> Hey all,
>
> I’m currently in the process of re-writing one of my old apps and I have decided to do so using modern Mac technology and APIs. The target is the Mac App Store and thus my app needs to be sandboxed.
>
> My app, for everyone's sake, is not document-based. The user can open files by dragging them onto my app, or they can open them with the Open menu item. What I’m looking to do is allow the user to press a button and have an external XPC service start which then reads the opened file(s) and deletes them off of the main thread (this is a simplification).
>
> Since XPC services cannot present UI, I need to find a way to give the XPC service access to the file(s) the user has selected. I know about security-scoped bookmarks, and I have used them before, but I’m not certain how to implement this. First off all:
>
> 1) Apple’s docs say that non-document based apps don’t get sandboxing support automatically handled for them, requiring the manual use of the NSFile* APIs. Although when the user opens the file that should give my app access, I can’t get this to translate into a working security-scoped bookmark.
>
> 2) Apple says that app-scoped bookmarks can only be used by apps with the same container as the app that created it. I don’t know if this means that security-scoped bookmark data based across XPC will remain valid inside of the XPC service. On the other hand, document-scoped bookmarks *can* be used by other apps, but can’t point to folders, which might be a deal-breaker for me.
>
> Can someone enlighten me as to the best way to handle this? Here’s some relevant code snippets:
>
> - (void)application:(NSApplication *)sender openFiles:(NSArray *)fileNames {
> NSLog(@"Files dragged on: %@", fileNames);
> IncinerationWindowController *controller = [[IncinerationWindowController alloc]
> initWithWindowNibName:@“IncinerationWindowController" andListOfFiles:fileNames];
> }
>
> - (instancetype)initWithWindowNibName:(NSString *)windowNibName andListOfFiles:(NSArray *)dcArray {
> self = [super initWithWindowNibName:windowNibName];
> if (self) {
> self->documentArray = dcArray;
> self->securityURLArray = [[NSMutableArray alloc] initWithCapacity:dcArray.count];
>
> self->isCurrentlyIncinerating = NO;
> [self createSecurityBookmarks];
> }
>
> return self;
> }
>
> - (void)createSecurityBookmarks {
> for (NSString *path in self->documentArray) {
> NSError *error = nil;
> NSURL *url = [[NSURL alloc] initFileURLWithPath:path];
>
> NSData *bookmarkData = [url bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope includingResourceValuesForKeys:nil relativeToURL:nil error:&error];
> if (!bookmarkData) {
> NSLog(@"Failed to create security scoped bookmark: %@", error);
> } else [securityURLArray addObject:bookmarkData];
> }
> }
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden