Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UIDocumentInteractionController prevent Airdrop in the 'Open in' sheet

enter image description here

In my app, I'm allowing users to share photos via Instagram, which requires the use of UIDocumentInteractionController. Airdrop is automatically detected if the phone supports it. How do I remove it from this ‘Open in’ action sheet?

Even if I begin the sharing process with a UIActivityViewController and call setExcludedActivityTypes:, eventually I must use a UIDocumentInteractionController, and when I do, Airdrop appears again. Here is the code when the share button gets tapped:

NSURL *instagramURL = [NSURL URLWithString:@"instagram://location?id=1"];

if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
    NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"Image.igo"];

    NSData *imageData = UIImagePNGRepresentation(imageToShare);
    [imageData writeToFile:savedImagePath atomically:YES];
    NSURL *imageUrl = [NSURL fileURLWithPath:savedImagePath];
    docController = [[UIDocumentInteractionController alloc] init];
    docController.UTI = @"com.instagram.exclusivegram";
    docController.URL = imageUrl;
    [docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];

}
else
{
    NSLog(@"no insta");
}
like image 619
EHNole Avatar asked Oct 02 '13 21:10

EHNole


1 Answers

As far as I can tell you can't. I need to disable this option also. But on UIDocumentInteractionController it is completely inaccessible. Pretty bad API experience in my book.

If the user selects an App in the list your App gets the callbacks

-(void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application

-(void)documentInteractionController: (UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application

If the user selects AirDrop you don't get notified at all.

like image 171
Tim LeMaster Avatar answered Sep 30 '22 19:09

Tim LeMaster