2013-10-02 44 views
9

enter image description hereUIDocumentInteractionController防止空投在“打开的”片

在我的应用程序,我允许用户通过Instagram的,这就需要使用UIDocumentInteractionController的分享照片。如果手机支持Airdrop,它会自动检测到。我如何从这个'打开'操作表中删除它?

即使我开始与UIActivityViewController共享进程并调用setExcludedActivityTypes:,最终我必须使用UIDocumentInteractionController,而当我这样做时,Airdrop再次出现。下面是当分享按钮被点击时的代码:

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"); 
} 
+0

有同样的问题。 – n13

回答

2

据我可以告诉你不能。我也需要禁用这个选项。但在UIDocumentInteractionController上它是完全无法访问的。在我的书中很糟糕的API体验。

如果用户在列表中选择一个应用程序您的应用得到回调

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

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

如果用户选择空投你就不会在所有通知。

+0

我注意到的一件事是,即使我自己和房间里的某个人打开了AirDrop,也经常不会打开AirDrop。 – EHNole

0

这不能被删除,苹果公司仍然试图让airdrop在任何地方都可以使用,所以我们可能不得不在未来的几个地方看到这一点。从7.1更新开始,无论空投状态如何(设备开启或关闭),它都可以进入UIDocumentInteractionController

还有一件坏事是空投分享没有回调,这意味着你的应用永远不知道共享状态。下面的2名代表将无法共享。

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

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

我希望苹果公开一些委托方法,使其在未来的版本中成为可能。