意思就是在其他app點擊分享之類的按鈕時會出現(xiàn) '用xxxx(你的app名字)導入' 然后你就可以吧這個文件導入你的app的沙盒當中.
- 修改 info.plist(這里
public.data
是允許所有文件類型,如果要特定某種類型的文件,如只允許導入PPT, 或者Word文檔, 那么就得添加多個CFBundleTypeName CFBundleTypeRole LSHandlerRank LSItemContentTypes 具體見蘋果API文檔)
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>data</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>LSItemContentTypes</key>
<array>
<string>public.data</string>
</array>
</dict>
</array>
- APPDelegate.h
獲取到根控制器,執(zhí)行復制到Document文件夾方法
源路徑:url.path
@property (strong, nonatomic) NSURL *sharedURL;
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)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];
}
}
}
}
- 根控制器方法(頭文件需要聲明方法)
- (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) {
}];
}