iOS_导入第3方APP内的文件

目标:

将第3方APP中的文件,使用咱自家的app打开查看

实质是: 将第3方的app中的文件  复制到了 自家app的  document/Inbox 文件夹内


核心概念:

UTI全称: 同一类型标识符 Uniform Type Identifier

UTI同一类型标识符
UTI同一类型标识符

其中:   public.data 代表 咱自家的app  可以打开处理任意文件

 

物理与功能映射关系图: 

UTI同一类型标识符物理与功能层级
UTI同一类型标识符物理与功能层级

具体步骤:

info.plist加入

<key>CFBundleDocumentTypes</key>
	<array>
		<dict>
			<key>CFBundleTypeIconFiles</key>
			<array>
				<string>icon_22x29</string>
				<string>icon_44x58</string>
				<string>icon_64x64</string>
				<string>icon_320x320</string>
			</array>
			<key>CFBundleTypeName</key>
			<string>allFiles</string>
			<key>LSHandlerRank</key>
			<string>Owner</string>
			<key>LSItemContentTypes</key>
			<array>
				<string>public.data</string>
			</array>
		</dict>
	</array>

显示时  文档图标  需要用到四张不同尺寸的png图片:

四张不同尺寸的Document Icons
四张不同尺寸的Document Icons

示例代码如下:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

/*外部文件访问本应用,会传递参数过来*/ 

    NSLog(@"application = %@",application);

    NSLog(@"url = %@",url);

    NSLog(@"sourceApplication = %@",sourceApplication);

    NSLog(@"annotation = %@",annotation);

}

打印结果:

// 在自家app的doc的Inbox目录中的文件路径

url = file://localhost/private/var/mobile/Applications/10A7BAB7-A437-4DE5-8A67-342AD74956EC/Documents/Inbox/1.jpeg


最终效果如下:

导入第3方app内的文件到自家的app里
导入第3方app内的文件到自家的app里

附录:

apple官方info.plist中各字段含义

 

 

 

未完待续,下一章节,つづく