给 APP添加外部文件导入功能

意思就是在其他app点击分享之类的按钮时会出现 '用xxxx(你的app名字)导入' 然后你就可以吧这个文件导入你的app的沙盒当中.

给 APP添加外部文件导入功能_第1张图片
  1. 修改 info.plist(这里public.data是允许所有文件类型,如果要特定某种类型的文件,如只允许导入PPT, 或者Word文档, 那么就得添加多个CFBundleTypeName CFBundleTypeRole LSHandlerRank LSItemContentTypes 具体见苹果API文档)
 CFBundleDocumentTypes
    
        
            CFBundleTypeIconFiles
            
            CFBundleTypeName
            data
            CFBundleTypeRole
            Viewer
            LSHandlerRank
            Default
            LSItemContentTypes
            
                public.data
            
        
    
    
  1. APPDelegate.h

获取到根控制器,执行复制到Document文件夹方法
源路径:url.path

@property (strong, nonatomic) NSURL *sharedURL;

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options
{
    if(url.fileURL){
        self.sharedURL = url;
        UIViewController *vc = self.window.rootViewController;
        if ([vc isKindOfClass:[UINavigationController class]]) {
            UINavigationController * nav = (UINavigationController *)self.window.rootViewController;
            UIViewController *topVC = nav.childViewControllers.firstObject;
            if ([topVC respondsToSelector:@selector(handleSharedFile)]) {
                [topVC performSelectorOnMainThread:@selector(handleSharedFile) withObject:nil waitUntilDone:NO];
            }
        } else {
            if ([vc respondsToSelector:@selector(handleSharedFile)]) {
                [vc performSelectorOnMainThread:@selector(handleSharedFile) withObject:nil waitUntilDone:NO];
            }
        }
    }
}
  1. 根控制器方法(头文件需要声明方法)
- (void)handleSharedFile {
    AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
    if (app.sharedURL != nil) {
        self.sharedURL = [app.sharedURL copy];
        app.sharedURL = nil;
        [self saveSharedFile:self.sharedURL];
    }
}
- (void)saveSharedFile:(NSURL *)url {
    MBProgressHUD *hud = [MBProgressHUD showButtonHUDAddedTo:self.view animated:YES];
    DKFile *file = [[DKFile alloc] init];
    file.fullPath = url.path;
    file.fileName = url.path.lastPathComponent;
    [[DKFileManager sharedInstance] copyItemsOfSelectFiles:@[file] fromStorage:DKFileStorageTypeInternal toStorage:DKFileStorageTypeInternal toPath:[DKFileManager defaultPath:kShareDirectory storage:DKFileStorageTypeInternal] progressHUD:hud complete:^{
        [SVProgressHUD showSuccessWithStatus:@"已保存到 iPhone -> SharedFiles"];
    } failure:^(NSError *errors) {
        
    }];
}

你可能感兴趣的:(给 APP添加外部文件导入功能)