如何接收三方APP分享的文件和分享文件到其他APP

1、接收:在info.plist中保存相关设置

<key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeName</key>
            <string>OFFICE Document</string>
            <key>LSHandlerRank</key>
            <string>Owner</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.microsoft.word.doc</string>  
                <string>com.microsoft.powerpoint.ppt</string>
                <string>com.microsoft.excel.xls</string>
                <string>com.adobe.pdf</string>
            </array>
        </dict>
    </array>

并在AppDelegate中实现方法

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
    if ([url.scheme isEqualToString:@"file"]){
        NSString *fileNameStr = [url lastPathComponent];
        NSData *data = [NSData dataWithContentsOfURL:url];
    }
}

简单实现接收文件

2、只要其他APP完成以上info.plist设置,就可以分享文件到其他App
首先在info.plist中添加

<key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.data</string>
                <string>public.composite-content</string>
            </array>
            <key>UTTypeIdentifier</key>
            <string>com.adobe.pdf</string>
            <key>UTTypeDescription</key>
            <string>PDF文档</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.mime-type</key>
                <string>application/pdf</string>
                <key>public.filename-extension</key>
                <array>
                    <string>pdf</string>
                </array>
            </dict>
        </dict>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.data</string>
            </array>
            <key>UTTypeIdentifier</key>
            <string>com.microsoft.word.doc</string>
            <key>UTTypeDescription</key>
            <string>Word文档</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.mime-type</key>
                <string>application/msword</string>
                <key>public.filename-extension</key>
                <array>
                    <string>doc</string>
                    <string>docx</string>
                </array>
            </dict>
        </dict>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.data</string>
            </array>
            <key>UTTypeIdentifier</key>
            <string>com.microsoft.excel.xls</string>
            <key>UTTypeDescription</key>
            <string>Excel Document</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.mime-type</key>
                <string>application/vnd.ms-excel</string>
                <key>public.filename-extension</key>
                <array>
                    <string>xls</string>
                </array>
            </dict>
        </dict>
    </array>

弹出UIDocumentInteractionController分享

        UIDocumentInteractionController *documentController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:self.url.path]];
        documentController.delegate = self;
        documentController.UTI = [self getUTI];
        [documentController presentOpenInMenuFromRect:CGRectZero
                                                    inView:self.view
                                                  animated:YES];
- (NSString *)getUTI
{
    NSString *typeStr = [self getFileTypeStr:self.url.path];
    if ([typeStr isEqualToString:@"PDF"]) {
        return @"com.adobe.pdf";
    }
    if ([typeStr isEqualToString:@"Word"]){
        return @"com.microsoft.word.doc";
    }
    if ([typeStr isEqualToString:@"PowerPoint"]){
        return @"com.microsoft.powerpoint.ppt";
    }
    if ([typeStr isEqualToString:@"Excel"]){
        return @"com.microsoft.excel.xls";
    }
    return @"public.data";
}


- (NSString *)getFileTypeStr:(NSString *)pathExtension
{
    if ([pathExtension isEqualToString:@"pdf"] || [pathExtension isEqualToString:@"PDF"]) {
        return @"PDF";
    }
    if ([pathExtension isEqualToString:@"doc"] || [pathExtension isEqualToString:@"docx"] || [pathExtension isEqualToString:@"DOC"] || [pathExtension isEqualToString:@"DOCX"]) {
        return @"Word";
    }
    if ([pathExtension isEqualToString:@"ppt"] || [pathExtension isEqualToString:@"PPT"]) {
        return @"PowerPoint";
    }
    if ([pathExtension isEqualToString:@"xls"] || [pathExtension isEqualToString:@"XLS"]) {
        return @"Excel";
    }
    return @"其它";
}

11537254840_.pic_hd.jpg
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,342评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,515评论 2 59
  • 每年1月的时候,我总会提前把新年愿望想好,写下来。然后美美的期望着新的一年里我所有许下的美好愿望都能逐一实现。亲爱...
    疯批Queen阅读 3,122评论 0 1
  • 我分享一个小故事。 十一假期没过完,我早早6号晚上从老家坐火车赶回了北京。说是因为工作,其实,是心里很无力,想假期...
    锦鲤溪阅读 1,535评论 0 0
  • 在春的某个夜晚 我躲在厕所 正与远方的姑娘缠绵呢 她问我你的鸡鸡有多大啊 我答不上来 突然她又说 我觉得你挺好的
    唐晟艺阅读 3,021评论 2 1

友情链接更多精彩内容