剪贴箱V1.1 版本上线了

剪贴箱V1.1 版本上线了,这个版本主要新增了一个 直达应用,在解锁图案加密显示密码 跟 清除剪贴板 这三个功能。

而直达应用这个功能受启发于一个朋友在微博中的反馈

@Rex-Wanted:回复@夏小蛋:看了简介,有些建议不知道可不可以实现,比如说进去后可以添加应用列表,然后直接在软件里打开需要用的应用,同时已经复制好应该复制的东西这样,而不需手工切换…

一看到这个意见,有点豁然开朗的感觉,我一直在思考怎么简化这个流程:用户在别的应用中需要一个常用内容 -> 进入剪贴箱复制 -> 切换回之前的应用 -> 粘贴内容。由于苹果在 iOS 中的沙箱限制,第一步与第四步我都无法触及,第一个版本中我主要优化第二步,现在听了朋友的这个建议后,发现,第二步也是有优化空间的:在剪贴箱中复制完内容后,可以让用户方便的跳去别的应用,可以省去用户手动切换应用这一繁琐的步骤。

直达应用

实现方案

需求有了,但是在 iOS 中应用是无法获取到用户所有安装的应用的,不过可以通过 URL Scheme 的方式检查当前设备是否有安装这个 URL Scheme 的应用,所以我的做法是通过内置一些应用的信息(包括应用名、图标、URL Scheme等),只有有安装的应用才会显示在直达应用列表中,用户点击了一个应用的图标,就通过 URL Scheme 打开这个应用。

获取应用的URL Scheme的方法

  1. 上这个网站 URL Schemes 查一下相应的 app 的 URL Scheme 是否有被收录;
  2. 第一种方法没找到的话,把相应的 app 的 ipa 安装文件下载下来,把文件 .ipa 的后缀改成 .zip,然后解压,打开 Payload/xxx.app/Info.plist 这个文件,找到 URL types 下的 URL Schemes 下的数组对应的值就是这个 app 的 URL Scheme 了。

简单验证应用URL Scheme是否正确的方法

在真机设备(此设备要安装了待验证的 app)里面打开 Safari,然后在地址栏中键入应用的 URL Scheme,注意后面要带 ://,比如 Gmail 的,在地址栏中键入googlegmail://,然后点击确定,如果能正常调出 Gmail,即代表这个 URL Scheme 正确可用。

麻烦的苹果自家应用

苹果自家的应用, App Store、Mail 跟 Safari 这三款应用用到复制内容的可能性比较大,所以我就想在剪贴箱中内置这三款应用。这三款应用虽然都可以使用 URL Scheme 打开这些应用,但是官方文档中提到的都是定义了具体行为的 URL Scheme,比如 Mail 应用的 URL Scheme 是 mailto:,在用户设置了邮箱账号的情况下打开这个 URL Scheme,就调出了发邮件的界面了。但是我应用需要的跳转到一个应用时,还原到应用最小化前的界面。最后这三个应用的处理方案都是不完美的。

App Store

App Store 这个应用的 URL Scheme 是 itms-apps://,通过这个 URL Scheme 能打开 App Store,但是却无法还原回用户最小化前的界面。此 URL Scheme 一般被用来打开 App Store 中某一个具体的应用的详情页,或者搜索某个关键字的结果页等等这种有具体行为的操作,如果直接使用itms-apps://或者其他非法的地址打开的话,在 App Store 中会报无法连接到iTunes Store的错误。
关于这个问题,查了很多资料,都无法找到解决办法,就一直乱试,终于试到在 iOS 6.0 下使用itms-apps://itunes.apple.com打开时,App Store 能正常打开了,但是只是能打开首页,而且是 tab 没选中下的首页。用户要再点一次 tab 才可以回还原到上次的界面。比如用户在搜索 tab 中搜了一个关键字,并打开了一个应用A的详情,用户再通过剪贴箱打开 App Store 时,会到 App Store 的首页,而用户要点一下搜索这个 tab 才能回到之前应用A相详情的界面。
这个效果比报错效果好,找不到其他办法的情况下,就直接用了这种方法了。但是某天在 iOS 5.0.1 的系统下面使用这个itms-apps://itunes.apple.com打开时,先打开了 App Store,载入了一下,又调用出了 iTunes。崩溃了阿!!找来了 iOS 5.1.1 的版本测试了一下,发现又可以跳到 App Store 首页,所以就对 iOS 5.0.1及以下的版本做了处理,直接用 itms-apps:// 打开,所以会报一个错误。
处理起来没有完美的方案,所以只能先这样处理了,后续想到好的再改进。

Mail

Mail 这个使用mailto:打开,如果用户设备中没设置邮箱账号,那么就会跳到 Mail 最小化前的界面;如果用户设备已经设置了邮箱账号,会直接调用出 Mail 到达发邮箱界面。考虑到用户大部分是在设置邮箱账号的情况下需要剪贴箱的概率大一点,所以就采用这种方式了。

Safari

Safari 一定要在http://后面跟上地址,如果不跟的话,直接就会到达一个新建的空白标签页,麻烦,直接把 Safari 去掉,不内置了。

写在最后

至于其他第三方的应用我只是简单测试了一下而已,没细测,如果发现有问题可联系我,或者直接在意见反馈里面反馈给我就可以了。
这个版本要特别感谢@Rex-Wanted@bang@Mr大表 提的产品建议,特别给力。
对了,在解锁图案界面,右滑剪贴板内容,可以清除剪贴板哦,怕剪贴板泄露了你的密码可以把剪贴板清除。