系统分享中AirDrop分享图片和链接, 提示不能同时接收...

系统分享中的AirDrop不能同时包含图片和链接, 否则报错”不能同时接收...”, 但是其他系统分享可以同时分享图片和链接

解决方法:

创建UIActivityItemProvider的子类, 在子类中实现代理方法

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType;

判断activityType是否为AirDrop类型 UIActivityTypeAirDrop
如果是, 返回nil; 不是, 返回传入的图片路径

将创建的子类添加到ActivityItems中即可

UIActivityViewController *activityViewController =[[UIActivityViewController alloc] initWithActivityItems:activityItems
                                                                                            applicationActivities:nil];

PS:

如果需要适配iPad, 需要处理UIActivityViewController的弹出方式
UIActivityViewController包裹在UIPopoverController

[[UIPopoverController alloc] initWithContentViewController:activityViewController];

需要设置弹出的位置,方向等

[self.popup presentPopoverFromRect:CGRectMake(VC.view.frame.size.width/2, VC.view.frame.size.height/4, 0, 0) inView:VC.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

iPhone直接presentViewController即可

代码如下:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    self.popup = [[UIPopoverController alloc] initWithContentViewController:activityViewController];
    [self.popup presentPopoverFromRect:CGRectMake(VC.view.frame.size.width/2, VC.view.frame.size.height/4, 0, 0) inView:VC.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
 }else {
    [VC presentViewController:activityViewController animated:YES completion:nil];
}

你可能感兴趣的:(系统分享中AirDrop分享图片和链接, 提示不能同时接收...)