当前位置: 首页 > news >正文

iOS 其他应用的文件如何在分享中使用自己的应用打开

废话少说
一、第一步:先配置好plist文件
右击info.plist如下图文件打开

根据自己需要配置支持的文件类型,也可使用property List中配置,一样的
其他的文件可是参考文档:System-Declared Uniform Type Identifiers

可复制的代码:↓

	<key>CFBundleDocumentTypes</key><array><dict><key>CFBundleTypeName</key><string>Audio File</string><key>LSHandlerRank</key><string>Alternate</string><key>LSItemContentTypes</key><array><string>com.apple.m4a-audio</string><string>public.mpeg-4-audio</string><string>public.aac-audio</string><string>org.xiph.flac</string><string>com.microsoft.waveform-audio</string><string>public.mp3</string></array></dict><dict><key>CFBundleTypeName</key><string> Video File</string><key>LSHandlerRank</key><string>Alternate</string><key>LSItemContentTypes</key><array><string>public.mpeg-4</string><string>public.mp4</string><string>public.mov</string></array></dict></array>

 这样就可以在其他应用中的文件分享列表中看见自己的应用。只有你配置文件中支持的文件分享时才能在应用列表中找到自己的应用,如果打开的不是你配置中支持的文件,在列表是找不到应用的。

二、第二步如何去获取到分享到本应用的文件呢?
如果有从其他应用分享应用过来的话,会调用SceneDelegate中的方法

- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts{for (UIOpenURLContext *urlContext in URLContexts) {NSURL *url = urlContext.URL;if ([url.scheme isEqualToString:@"file"]) {[self addShareFileWithUrl:url];}}
}- (void)addShareFileWithUrl:(NSURL*)url{AVAsset *asset = [AVAsset assetWithURL:url];CMTime duration = asset.duration;float durationInSeconds = CMTimeGetSeconds(duration);if (durationInSeconds > 1.0) {//导入文件后需要的操作}else{[PopuView showTipTextNoMask:LocalizedString(@"导入的音频时长应大于1秒", nil) withTimeInterval:1.0];}
}

如果需要判断分享过来的文件是什么类型的文件,可以使用标识符UTI做判断。
 

NSString *fileUTI = (__bridge_transfer NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)[newURL pathExtension], NULL);// 判断文件的UTI是否是音频类型
if (UTTypeConformsTo((__bridge CFStringRef)fileUTI, kUTTypeAudio)) {NSLog(@"文件是音频类型");} else if (UTTypeConformsTo((__bridge CFStringRef)fileUTI, kUTTypeVideo) || UTTypeConformsTo((__bridge CFStringRef)fileUTI, kUTTypeMovie)){NSLog(@"文件是视频类型");}


三、分享文件给其他应用:
​​​​​​​

NSURL *fileURL = [NSURL fileURLWithPath:path];
NSArray *items = @[fileURL];
// 创建分享控制器
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeAirDrop];
[self presentViewController:activityViewController animated:YES completion:nil];

http://www.lryc.cn/news/385202.html

相关文章:

  • 【编译原理必考大题】 推导构建语法树,写出语法树的短语,简单短语和句柄
  • redis服务介绍
  • nodepad 中换行符、tab替换
  • 常见的字符串函数(包含头文件string.h)和字符函数(2)
  • Python | Leetcode Python题解之第187题重复的DNA序列
  • SpringCloud分布式微服务链路追踪方案:Skywalking
  • 首次线下联合亮相!灵途科技携手AEye、ATI亮相2024 EAC 易贸汽车产业大会
  • 一文入门CMake
  • 【LeetCode面试经典150题】117. 填充每个节点的下一个右侧节点指针 II
  • RTDETR更换优化器——Lion
  • Spring Boot中最佳实践:数据源配置详解
  • 第1章 物联网模式简介---独特要求和体系结构原则
  • 数据挖掘概览
  • 【学习】软件测试中常见的文档类型及其作用
  • electron的托盘Tray
  • Harmony OS UI框架探索笔记
  • transformers evaluate
  • 【ONLYOFFICE深度探索】:ONLYOFFICE桌面编辑器8.1震撼发布,打造高效办公新境界
  • C++系统相关操作4 - 获取CPU(指令集)架构类型
  • whisper 实现语音转文字
  • 使用VLLM部署llama3量化版
  • 计算机缺失OpenCL.dll怎么办,OpenCL.dll丢失的多种解决方法
  • git 本地代码管理
  • Docker(九)-Docker运行redis6.0.8容器实例
  • 似然 与 概率
  • Tableau数据可视化与仪表盘搭建
  • web前端——HTML
  • C++的模板(九):模板的实例化问题
  • Clickhouse Projection
  • 放烟花短视频素材去哪里找?去哪里下载?烟花素材网分享