不多说了,先描述使用场景,比如在邮件有附件,或其他 App 中有各种类型的文档, 长按文档标识系统会从底部弹出使用某某某打开,比如使用微信等等。
这种官方的说法是文档交互,需要这样编程处理 Document Interaction Programming Topics for iOS,简单点就是在 App 的 Info.plist 里面 添加以下就可以在系统弹出框里看到使用某某某打开了:
<dict>
<key>CFBundleTypeName</key>
<string>My File Format</string>
<key>CFBundleTypeIconFiles</key>
<array>
<string>MySmallIcon.png</string>
<string>MyLargeIcon.png</string>
</array>
<key>LSItemContentTypes</key>
<array>
<string>com.example.myformat</string>
</array>
<key>LSHandlerRank</key>
<string>Owner</string>
</dict>
这其实算是使用文件作为数据交换,需要指定 app 所支持的类型,这篇总览介绍 了阿婆是如何对待文件类型的 Uniform Type Identifiers Overview,系统定义的 UTI 有这些 System-Declared Uniform Type Identifiers。
在代码里面是在 Application Delegate 的 application:openURL:sourceApplication:annotation: 响应的,添加这个函数就 可以支持了,它会在 willFinishLaunchingWithOptions 以及 didFinishLaunchingWithOptions 之后运行。
参考自 StackOverflow 的 How do I associate file types with an iPhone application?,噢噢噢~~~