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

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

(7.0的分享菜单)

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

设定应用支持的全局分享设置,在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的介绍。

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

iOS关于应用内分享的更多相关文章

  1. cassandra 公司内分享 ppt

    在公司内分享的cassandra ppt http://files.cnblogs.com/files/yuhan-TB/cassandra.pptx

  2. 域名在微信朋友圈内分享需要ICP备案 杜绝不良信息传播

    就在刚刚,腾讯微信团队发布公告表示域名在朋友圈内分享需要ICP备案,杜绝打击不良互联网信息的传播.公告称根据互联网管理相关规定,即日起在微信朋友圈内分享的域名,请在2014年12月31日前完成ICP备 ...

  3. Android原生APP内分享

    Android原生APP内分享,可实现数据分享以及assets文件夹分享及私有文件分享 项目地址:https://github.com/json-pu/AndroidAppShare.git

  4. iOS:苹果内购实践

    iOS 苹果的内购 一.介绍 苹果规定,凡是虚拟的物品(例如:QQ音乐的乐币)进行交易时,都必须走苹果的内购通道,苹果要收取大约30%的抽成,所以不允许接入第三方的支付方式(微信.支付宝等),当然开发 ...

  5. iOS开发苹果内购的介绍与实现

    1.iOS开发苹果内购的介绍 1.1 介绍 苹果规定,凡是虚拟的物品(例如:QQ音乐的乐币)进行交易时,都必须走苹果的内购通道,苹果要收取大约30%的抽成,所以不允许接入第三方的支付方式(微信.支付宝 ...

  6. ios调用Html内JS alert 不能点击关闭为甚?

    ios调用Html内JS alert 不能点击关闭为甚? This question gave me the most insight to the problem... Deadlock with ...

  7. IOS IAP APP内支付 Java服务端代码

    IOS IAP APP内支付 Java服务端代码   场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purcha ...

  8. <转>iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!

    原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新   获取"产品付费数量等于0 ...

  9. iOS开发-友盟分享(3)

    iOS 友盟分享 这个主要是提到如何通过友盟去自定义分享的步骤: 一.肯定要去友盟官网下载最新的SDK包,然后将SDK导入到你的工程文件夹里面去: 二.注册友盟账号,将你的APP添加到你的账号里面然后 ...

随机推荐

  1. MySQL汇总数据

    汇总数据 有时,数据本身是不上台面的操作数据表.但在摘要表中的数据.例如 数据的一列的平均值.极大值.至少值等一下. 对于这些频繁使用的数据的处理的概要,MySQL它提供了一个函数来处理. SQL聚集 ...

  2. python_小爬虫

    import urllib.request as request import urllib.parse as parse import string print(""" ...

  3. MD5处理图片加密算法

    Android MD5加密算与J2SE平台一模一样,由于Android 平台支持 java.security.MessageDigest这个包.实际上与J2SE平台一模一样. 首先: 输入一个Stri ...

  4. 文档流 css中间float clear和布局

    文档流 先说说什么是公文流转  什么流 它是一系列连续的东西 <div style="background-color:pink;width:40px;height:80px;&quo ...

  5. JavaWeb显示器

    本文研究的总结.欢迎转载,但请注明出处:http://blog.csdn.net/pistolove/article/details/44310967 A:监听器的定义      专门用于其它对象身上 ...

  6. EF结合SqlBulkCopy

    EF结合SqlBulkCopy在项目中的使用 这是我第一次写博客,由于水平有限,写不出什么好东西,还望见谅. 我现在参与的这个项目采用的是EF框架,方便了数据库的访问.但在实际中,发现项目中导入市县E ...

  7. 云server 性能测试web压力测试

    前言:如今,云server主流.它已成为许多中小型企业的首选server,但是云server它是一个虚拟机.所以性能是一个大问题,从这里开始介绍云server性能测试,云webserver压力测试. ...

  8. 如何将sqlserver表中的数据导出sql语句或生成insert into语句 [转]

    输入表名,生成插入语句 drop proc proc_insert //如果存在就删除 go create proc proc_insert (@tablename varchar(256)) as ...

  9. (UML两个汇总)九种图。

    最后总结UML关系,有明确的关系,现在让我们总结一下UML九图..图往往比文字要直观,因此,当我们开发软件.文件必须是不可或缺的人物,. 以下我将这九种图分了一下: 我们还能够将这九种图分为静态图和动 ...

  10. javascript 学习总结(六)RegExp对象

    1.正则表达式test方法 var text = "cat, bat, sat, fat"; var pattern = /.at/; if (pattern.test(text) ...