在我的应用中,我允许用户通过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 :(得分:2)
据我所知,你不能。我也需要禁用此选项。但是在UIDocumentInteractionController上它是完全无法访问的。我书中的API经验非常糟糕。
如果用户在列表中选择了应用,则应用会获得回调
-(void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application
-(void)documentInteractionController: (UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application
如果用户选择AirDrop,则根本不会收到通知。
答案 1 :(得分:0)
这是无法删除的,苹果仍然试图让空投在任何地方都可以访问,因此我们可能必须在未来的几个地方看到它。从7.1更新开始,它肯定会进入UIDocumentInteractionController而不管空投状态(设备开启或关闭)
另外还有一件坏事就是空投没有回调,这意味着你的应用永远不会知道共享状态。以下2名代表将无法分享。
-(void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application
-(void)documentInteractionController: (UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application
我希望苹果会公开一些委托方法,以便在未来版本中实现这一目标。