Mas_Tan

Site blog for Tan

No Praise For Colorful


Welcome To My Blog

iOS 注册可分享文件类型

最近开发的 App 有个需求,需要获取本地的录音文件。找了半天没有找到好的解决方案,发现微信的方法是在 录音备忘录 中分享至微信。

苹果官方文档地址

注册可接受文件类型

因为我打开的是录音文件,这里就以 iOS 的录音文件为例 (*.m4a)

  • 打开 info.plist 文件,添加项 Document types
  • 展开 Document typesitem 0 选项
  • Document Type Name 自定义Name,自己可以随便填
  • CFBundleTypeIconFiles 指定分享时显示的 App Icon ,这里我没有填,会用默认的
  • Handler rank 定义优先级,Owner 的优先级最高,分享至 App 时,你的会靠前排列
  • item0 中添加 key Document Content Type UTIs 这边是指定你注册的可以接受的文件类型, 文件类型的对应关系如下图.

WX20171114-173628.png

这里我要接受 m4a 文件,所以 注册类型为 public.audiopublic.data 代表可以接受任何类型的文件。如果想注册多个类型,可以在 Document types 下面继续添加 itemWX20171115-110036.png

这时看你的工程文件 info 选项卡中的 Document types,应该有你刚才注册的类型.

WX20171115-110007.png

接受文件代码

当文件分享至 App 时会调用 Appdelegate 的如下函数. 文件地址会在参数 url 中传入。

#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_9_0
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation
{
	// dosomething
    return YES;
}
#else
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options
{
	// dosomething
    return YES;
}
#endif

效果图如下 WX20171115-113750.png

注意,这里分享是显示的是拷贝至,点击更多,打开微信的 switcher 之后,会像上图一样多一个 ‘微信’ 选项(没有’拷贝至’),它会在当前应用弹窗,给出分享逻辑。具体实现方法还不清楚,等有时间再研究。

WX20171115-113722.png

若有知道,还请赐教。

最近的文章

Hash 表实现

Hash 表、二叉树、链表是最常见的数据结构。 本文中用C++来实现一个简单的哈希表,帮助理解哈希表是怎样运作的。为了简化代码并突出逻辑,采用简单的除余数作为散列函数,用线性探测来处理碰撞。线性探查法是用开放定址法处理冲突的一种最简单的探查方法。 它从发生冲突的d单元起,依次探查下一个单元 当达到下标为m—l的表尾单元时,下一个探查的单元是下标为O的表首单元。 即把散列表看作为首尾相接的循环表,直到碰到一个空闲单元或探查完所有单元为止。 这种方法的探查序列为d,d+l,d+2,…,或表示...…

继续阅读
更早的文章

CentOS 下搭建 shadowsocks 服务

之前买的ss账号都不能用了,决定自己买一个海外服务器搭建ss服务。1. 选择服务器我这里服务器选的 DigitalOcean ,选它不是因为他家速度快,价格便宜,而是因为注册送了我 10 刀,可以免费先用两个月。配置是最低配的啦,完全足够用了。系统用的 centos6.9 .创建好vps (Droplet)后,root用户的密码会发到你邮箱你。2. 登录vps服务器选好了以后,登录到你的服务器。Linux/Unix 下面可以直接用ssh从终端登录ssh root@you_real_ip当然...…

继续阅读