<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>ShareImage</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>public.image</string>
</array>
</dict>
</array>
简单说明一下,CFBundleDocumentTypes是必须添加的一个key,LSItemContentTypes指定所支持的分享类型,如上面的public.image就是指定图片的分享。CFBundleTypeRole和LSHandlerRank就是指定应用对这个资源的权限,例如viewer或者owner。
当用户点击了所对应的分享应用图标,就会调起应用,并且回调这个函数:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {}
从url就能取出对应的资源,例如图片或者视频。至于下面的流程就得客户端自己定制。
而在6.0以后,系统已经允许我们调用这个分享菜单界面,以把应用内的资源分享到其他应用。主要用的几个类如下:
UIActivity:(用来定制上面分享的item)
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems{}
- (void)prepareWithActivityItems:(NSArray *)activityItems{}
- (void)performActivity{}
UIActivityViewController:(用来显示分享菜单的controller)
- (id)initWithActivityItems:(NSArray *)activityItems applicationActivities:(NSArray *)applicationActivities;
这是测试调用这个菜单的一个示例,系统提供的控件,效果还是不错的。iOS7.0就更好看点。具体可以详细看看UIActivityViewController的介绍。
这是系统默认支持的分享菜单。Weibo很神奇地入选了。