iOS关于应用内分享

 iOS7.0增加了AirDrop功能,可知在未来,手机信息资源的直接分享会越来越重要。而我们在iPhone系统短信点击照片会看到右上角的分享按钮,点击可以弹出一系列的应用菜单,允许用户把这张图片分享到其他应用。下面谈谈怎样让自己的应用出现在这个全局菜单。

当然,这要应用内部手动设置支持。如图:

7.0的分享菜单)

  iOS关于应用内分享

(在IOS6.0分别在messagesafari支持的全局分享调用)

 iOS关于应用内分享

设定应用支持的全局分享设置,在plist添加下面代码:

  

  <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。

具体可以看官方文档:http://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/DocumentInteraction_TopicsForIOS/DocumentInteraction_TopicsForIOS.pdf

 

当用户点击了所对应的分享应用图标,就会调起应用,并且回调这个函数:

- (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的介绍。

 iOS关于应用内分享

这是系统默认支持的分享菜单。Weibo很神奇地入选了。

 

 

你可能感兴趣的:(ios)