9

在此处输入图像描述

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

即使我使用 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");
}
4

2 回答 2

2

据我所知,你不能。我还需要禁用此选项。但是在 UIDocumentInteractionController 上它是完全无法访问的。在我的书中,API 体验非常糟糕。

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

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

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

如果用户选择 AirDrop,您根本不会收到通知。

于 2013-10-03T18:28:40.590 回答
0

这不能被删除,苹果仍在努力让空投无处不在,所以我们将来可能不得不在更多的地方看到这一点。从 7.1 更新开始,它肯定会出现在 UIDocumentInteractionController 中,无论空投状态如何(在设备上打开或关闭)

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

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

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

我希望苹果会公开一些委托方法,以便在未来的版本中实现这一点。

于 2014-04-30T15:21:02.787 回答