iOS 应用间数据共享

  1. Document Types
  2. UIActivityViewController & Share Extension
  3. UIFileSharingEnabled

Document Types

在Info.plist中声明可以处理的文件类型,其他应用在打开文件了,就可以选择自己的应用。

  1. 发起端

    UIDocumentInteractionController

  2. 接收端

    配置Info.plist,添加支持的Document Types

UIActivityViewController & Share Extension

Share Extension和Document Types是不同的机制,Share Extension和平时常用的社交分享是一个意思。

  1. 发起端

    NSString *textToShare = @"分享的标题。";
    UIImage *imageToShare = [UIImage imageNamed:@"loading_error"];
    NSURL *urlToShare = [NSURL URLWithString:@"http://www.baidu.com"];
    NSArray *activityItems = @[textToShare,imageToShare, urlToShare];
    UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
    //不出现在活动项目
    activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll];
    [self presentViewController:activityVC animated:YES completion:nil];
    // 分享之后的回调
    activityVC.completionWithItemsHandler = ^(UIActivityType  _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
        if (completed) {
            NSLog(@"completed");
            //分享 成功
        } else  {
            NSLog(@"cancled");
            //分享 取消
        }
    };
    
  2. 接收端

如果你的App想要接收其他App分享的数据,就需要创建一个Share Extension

UIFileSharingEnabled

UIFileSharingEnabled又是一个东西,设置为YES,可以通过iTunes或者Xcode访问应用沙盒下的Documents目录。

注意

  1. Document Types
  2. UIActivityViewController & Share Extension

以上两者在选择接收应用是,UI是一样的,但是机制是完全不同的。

你可能感兴趣的:(iOS 应用间数据共享)