<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/rss.xsl" type="text/xsl"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><generator>Typlog 3.1 (https://typlog.com)</generator><title><![CDATA[ JBguide | 越狱指南 ]]></title><description><![CDATA[ 旨在让您真正地了解和使用越狱，及越狱后的设备。 ]]></description><link>https://jbguide.me/</link><copyright><![CDATA[ Copyright 2018 JBguide | 越狱指南 ]]></copyright><atom:link href="https://jbguide.me/feed.xml" rel="self" type="application/rss+xml"/><atom:link href="https://pubsubhubbub.appspot.com/" rel="hub"/><pubDate>Tue, 05 Apr 2022 07:29:23 +0000</pubDate><item><title><![CDATA[ 【图解】如何解决 /var/lib/dpkg/status 错误 ]]></title><guid>https://jbguide.me/2016/how-to-solve-cydia-var-lib-dpkg-status-issue</guid><link>https://jbguide.me/2016/how-to-solve-cydia-var-lib-dpkg-status-issue</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Tue, 06 Sep 2016 04:19:00 +0000</pubDate><content:encoded><![CDATA[ <div class="photo"><figure><img src="https://cdn.jbguide.me/37p-fi9/6/2016252/2016/09/1.jpg" alt="" /></figure></div><h3 id="toc_1">错误及成因</h3>
<div class="block-html"><p>9.3.3 的越狱机制改变解决了一些此前的越狱禁区，比如在此前<code>抹掉所有内容和设置</code>是不可点的，会导致设备永久性卡在启动动画，而现在即便点了也不会出现这样的问题。有的人可能会觉得这是个平级恢复的好办法，但实际上如果你点了<code>抹掉所有内容和设置</code>再重新越狱，会发现 Cydia 会持续报错：</p></div>
<div class="block-html"><pre><code>Could not open file /var/lib/dpkg/status - open (2: No such file or directory)
The package lists or status file could not be parsed or opened
</code></pre></div>
<div class="block-html"><p>出现这样的错误是因为<code>抹掉所有内容和设置</code>也会清除 Cydia 的文件路径，但盘古越狱工具在重新越狱时很明显没有将这些路径安装回来，导致出现了这一情况。</p></div>
<div class="block-html"><p>这个情况非常棘手，因为当你在 Cydia 看到这个错误，就代表着你不能搜索插件，而且当你想手动添加路径，你也会发现因为没装 <a href="https://jbguide.me/2014/07/01/about-afc2add/">Apple File Conduit 2</a> 所以无法在 PC 端用文件管理软件打开 Root 路径。好像除了升级别无他法，但现在升级却又会丧失越狱，陷入很尴尬的情况。</p></div>
<div class="block-html"><p>好在，<a href="https://www.reddit.com/r/jailbreak/comments/506ysd/tutorial_how_to_fix_erase_all_content_settings/">Reddit 有篇帖子</a>详述了整个问题的解决办法。</p></div>
<h3 id="toc_2">问题解决</h3>
<div class="block-html"><p>这个解决办法的原理是：通过 Cydia Impactor 在设备中安装（sideload）终端（MobileTerminal），然后在 iOS 端通过终端执行命令，将应有的目录添加到设备中。</p></div>
<h4 id="toc_3">准备工作：</h4>
<div class="block-html"><p>在 PC 上下载这几样东西：</p></div>
<div class="block-html"><ul>
<li>一会要装到 iOS 设备的终端软件(<a href="https://cdn.hbang.ws/dl/debs/ws.hbang.newterm_1.0~beta1_iphoneos-arm.deb">MobileTerminal</a>)</li>
<li>将 MobileTerminal 从 deb 转换成 ipa 的应用 iOS App Signer (<a href="https://dantheman827.github.io/ios-app-signer/">Mac</a>)</li>
<li>简化 Sideload 步骤的 <a href="http://www.cydiaimpactor.com/">Cydia Impactor</a></li>
<li>在 PC 端可以读取 iOS 系统文件路径的软件（比如 <a href="http://www.i-funbox.com/">iFunbox</a>，我文章里用的是 <a href="https://imazing.com/cn">iMazing</a>，工具无所谓）</li>
<li><a href="http://www.mediafire.com/download/k0ad6gm28927lam/lib.zip">lib 文件夹压缩包</a></li>
</ul></div>
<div class="block-html"><p><strong>第一步：将 lib 文件夹拖到 /var/mobile/Media/Books 这个文件夹中</strong></p></div>
<div class="photo"><figure><img src="https://cdn.jbguide.me/37p-fi9/6/2016234/2016/09/2.png" alt="" /></figure></div><div class="block-html"><p><strong>第二步：用 iOS App Signer 将 MobileTerminal 的 deb 文件转化为 ipa 文件</strong></p></div>
<div class="photo"><figure><img src="https://cdn.jbguide.me/37p-fi9/6/2016220/2016/09/4.gif" alt="" /></figure></div><div class="block-html"><p><strong>第三步：用 Cydia Impactor 把 ipa 文件装到设备里</strong>（需要输入 Apple ID 账户密码，建议临时注册一个）</p></div>
<div class="photo"><figure><img src="https://cdn.jbguide.me/37p-fi9/6/2016240/2016/09/3.gif" alt="" /></figure></div><div class="block-html"><p><strong>第四步：在 iOS 上打开终端输入命令：</strong></p></div>
<div class="block-html"><ul>
<li>输入：<code>su</code></li>
<li>然后会要你输入密码，如果你之前没改过，默认的是：<code>alpine</code></li>
<li>安全起见这个密码事后是需要改的，教程见<a href="https://jbguide.me/2013/02/12/how-to-change-root-password-of-ios-devices/">视频</a></li>
<li>输入：<code>cp -R /var/mobile/Media/Books/lib /var</code></li>
</ul></div>
<div class="block-html"><p>这样就解决了 Cydia 刷新时出现 <code>/var/lib/dpkg/status</code> 的问题，如果你还出现了 <code>missing var/log/apt</code> 错误，还需要在终端里操作：</p></div>
<div class="block-html"><ul>
<li>输入：<code>su</code></li>
<li>输入：<code>mkdir /var/log/apt</code></li>
</ul></div>
<div class="block-html"><p>至此 Cydia 就能够正常运作了，如果不行你可以装 Cydia Eraser 这款插件来移除 Cydia 然后重新使用盘古工具来越狱。</p></div>
<div class="block-html"><p>能够解决这个问题以后，其实我倒觉得结果还不坏，这相当是一种平级恢复的过程，先清理所有内容，然后再把出错的部分剔掉，然后回归越狱状态。只不过过程麻烦了点。</p></div>
 ]]></content:encoded></item><item><title><![CDATA[ iOS 9.2~9.3.3 64bit 设备越狱教程【全平台】 ]]></title><guid>https://jbguide.me/2016/ios-9-3-3-jailbreak-tutorial</guid><link>https://jbguide.me/2016/ios-9-3-3-jailbreak-tutorial</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Fri, 29 Jul 2016 07:18:06 +0000</pubDate><content:encoded><![CDATA[ <p>盘古团队刚刚发布了的 iOS 9.2~9.3.3 64bit 设备的英文版越狱工具，这个工具就是我们<a href="(http://weibo.com/2569291082/E0FdEy66c?type=repost#_rnd1469790998170)">之前在微博提到的</a>出自 Saurik 的 Cydia Impactor。这个工具支持 Windows、Mac 以及 Linux，所以至此 iOS 9.2~9.3.3 64bit 设备已经可以说能在全平台上进行越狱了。以下是 Mac 系统下的使用教程：</p>
<p>首先，下载 Cydia Impactor：</p>
<div class="block-list"><ul>
<li><a href="https://cydia.saurik.com/api/latest/2">Windows</a></li>
<li><a href="https://cydia.saurik.com/api/latest/1">Mac</a></li>
<li><a href="https://cydia.saurik.com/api/latest/4">Linux (32-bit)</a></li>
<li><a href="https://cydia.saurik.com/api/latest/5">Linux (64-bit)</a></li>
</ul>
</div><p>连接上自己的设备（注意还是要 64bit 的设备），等 Impactor 识别出设备后将<a href="http://dl.pangu.25pp.com/jb/NvwaStone_1.0.ipa">这个 .ipa 文件</a>拖到软件界面上：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/31p-fi7/29/201658/2016/07/1.gif" alt="" /></figure></div><p>最末出现的提示是：</p>
<div class="blockquote"><blockquote><p>Warning: This action will revoke and replace any existing Apple Developer certificate associated with your account, which may(or may not: I honestly don't know much about offical Apple development work) have some complicated effect on your workflow if you are an Apple Developer.</p>
</blockquote></div>
<p>简单来说，如果是开发者账户的话最好别这么做，<a href="http://en.pangu.io/help.html">盘古英文官网</a>也建议大家申请新的 Apple ID 来进行越狱。</p>
<p>选择提示的对话框中的 OK 后会让你输入 Apple ID和密码：</p>
<div class="gallery"><div class="gallery_column"><figure><img src="https://cdn.jbguide.me/31p-fi7/29/2016526/2016/07/2.png" alt="" /></figure></div><div class="gallery_column"><figure><img src="https://cdn.jbguide.me/31p-fi7/29/2016531/2016/07/3.png" alt="" /></figure></div></div>
<p>最好注册一个新的帐户，最好输入以后修改密码（虽然 Saurik 在帖子里保证通过他的工具不会收集大家的邮箱和密码）。</p>
<p>接着就会很快地在你的设备上装上“PP盘古越狱”，剩下的就是用手机上的“PP盘古越狱”来进行越狱了。</p>
<h3 id="toc_1">7 天限制</h3>
<p>这个越狱工具和“PP助手”有一个本质的区别就是它不会把你的账户转化为企业证书，也就是说，这个越狱有所谓的 7 天限制。所谓的 7 天限制是指：当我们用新的 Apple ID 安装“PP盘古越狱”的时候，我们是免费个人开发者账户，这时当我们信任证书，安装“PP盘古越狱” 7 天后，证书将被取消，“PP盘古越狱”将不能被打开。</p>
<p>所以每隔 7 天，如果我们不小心重启了设备，就需要连接电脑，重新执行前文的步骤，来安装“PP盘古越狱”，重新进行越狱。</p>
<p>而此前的“PP助手”可以打破 7 天限制是因为它会在一段时间后自动将你的个人证书转化为来自“Beijing Hong Yuan Online Technology Development Co., Ltd.”的企业级应用。</p>
<p>哪个好呢？从安心的角度来说，我更信任 Saurik 的这个工具，从省事的角度来说，能打破 7 天限制当然更好。看您的选择了。</p>
 ]]></content:encoded></item><item><title><![CDATA[ iOS 9.2~9.3.3 64 位设备越狱指南 ]]></title><guid>https://jbguide.me/2016/ios-9-3-3-jailbreak</guid><link>https://jbguide.me/2016/ios-9-3-3-jailbreak</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Mon, 25 Jul 2016 04:49:46 +0000</pubDate><content:encoded><![CDATA[ <h2 id="toc_1">什么设备能越狱</h2>
<p>在英文的官网上写明了 <code>64-bit devices only</code> 的字样，并且公布了可越狱设备的列表如下：</p>
<div class="block-list"><ul>
<li><p>可越狱的 iPhone 有: iPhone 5s、iPhone 6、iPhone 6 Plus、iPhone 6s、iPhone 6s Plus、iPhone SE</p>
</li>
<li><p>可越狱的 iPod Touch 有: iPod Touch 6G</p>
</li>
<li><p>可越狱的 iPad 有: iPad mini 2、iPad mini 3、iPad mini 4、iPad Air、iPad Air 2、iPad Pro</p>
</li>
</ul>
</div><h2 id="toc_2">这次的越狱模式</h2>
<p>“一言以蔽之，是 Semi-Tethered Jailbreak 的升级版。”</p>
<p>这次的越狱模式和历来的越狱模式都有一定的区别，盘古网站美其名曰“按需越狱”，我们来看看它到底是什么。</p>
<h3 id="toc_3">历史上的三种越狱方式</h3>
<p>首先我们需要熟悉一下以往出现过的越狱的模式，长期以来越狱只分为两种模式：Untethered Jailbreak 和 Tethered Jailbreak，字面意思翻译是需要连线和不需要连线的越狱，俗称完美越狱和非完美越狱，越狱指南的叫法是：正常越狱和需引导越狱<sup class="footnote-ref" id="fnref-2"><a href="#fn-2">2</a></sup>。主要区别是前者可以正常重启并维持越狱状态；而后者则会导致手机不能正常重启，停留在启动状态，除非使用数据线连接电脑通过越狱软件引导重启。这样就很不方便，这意味着手机低电关机后就无法脱离电脑重启了，容易误事。后来实现了一种办法，介于两者之间，做到的是在设备重启之后将设备临时还原为非越狱状态，满足临时使用需要，在有电脑的时候可以用越狱软件引导重启，重新回到越狱状态。这种方法英文原名为 Semi-Tethered Jailbreak，俗称“半完美越狱”，指南的叫法是：半引导越狱。</p>
<p>所以简单来说，Untethered Jailbreak 是最理想的状态，尤其是在安装个别插件的时候都需要你重启设备（注意是重启而不是 Respring 注销），所以如果能够重启后保持越狱状态是最理想的。而 Tethered Jailbreak 是最妥协的办法，一旦关机必须引导重启，容易误事。而 Semi-Tethered Jailbreak 也是一个妥协的办法，它实际上是 Tethered Jailbreak 的一个升级版，获取的好处是可以重启，妥协是临时失去越狱状态。</p>
<h3 id="toc_4">“按需越狱<sup class="footnote-ref" id="fnref-3"><a href="#fn-3">3</a></sup>”</h3>
<p>首先我个人很庆幸这次越狱模式的命名没有再延续“完美越狱”这个宣传翻译，硬生生地制造“完美越狱”系列名了。</p>
<p>那么这次的所谓的“按需越狱”是怎么一回事？一言以蔽之，我认为它是 Semi-Tethered Jailbreak 的升级版。</p>
<p>Semi-Tethered Jailbreak 的特征是：可重启，但临时失去越狱状态，需要电脑引导重启才能恢复越狱状态。</p>
<p>而此次的“按需越狱”与 Semi-Tethered Jailbreak 一样，可以重启，重启后也会临时失去越狱状态。但不同的是，不需要连接电脑，而是重新使用在设备上的越狱软件就可以再次恢复越狱状态。</p>
<h2 id="toc_5">越狱过程</h2>
<p>这次越狱的方式和传统的方法虽然有区别，但操作起来也不麻烦。</p>
<p>首先你要在你的 PC 上，下载一个 <a href="http://pro.25pp.com/download/25pp_00119/8005">PP 助手</a>：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/31p-fi7/25/2016135/2016/07/1.png" alt="" /></figure></div><p>下载后打开，很快就能看到以下界面：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/31p-fi7/25/2016142/2016/07/2.png" alt="" /></figure></div><p>接着按步骤提示操作，很快你会看到本次<strong>最有特色</strong>的一个界面，要求你输入一组 Apple ID：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/31p-fi7/25/2016159/2016/07/3.png" alt="" /></figure></div><p><em>请一定重新注册一个 Apple ID，如果你心大用主 ID，最起码要对你的账户开启<a href="http://sspai.com/26902">二步验证</a>。</em></p>
<p>下面操作将会转到 iOS 上，它会跳转到证书验证的界面，你需要信任这个开发者证书：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/31p-fi7/25/2016152/2016/07/4.png" alt="" /></figure></div><p>信任过后打开你设备上新出现的 “PP盘古越狱” App，根据提示完成越狱。有两个注意：</p>
<div class="block-list"><ol>
<li>越狱 App 主界面有一行小字“安装PP助手”，你不用的话就把它取消勾选。</li>
<li>期间需要你允许 “PP盘古越狱” 对你进行通知，我试过不允许，于是那次就失败了，但也有人不允许通知却成功了，所以结果似乎不一定。</li>
</ol>
</div><div class="photo"><figure><img src="https://cdn.jbguide.me/31p-fi7/25/2016157/2016/07/5.png" alt="" /></figure></div><p>本质上，前面几步都是为了安装开发商证书，从而可以在你的设备上运行 “PP盘古越狱” 这个 App。所以如果本人是开发者或者会折腾的人可以就可以绕过这些步骤，<a href="http://download.25pp.com/ipa/jailbreak/inv_ent_final_0155.ipa">直接下载这个 .ipa 文件</a>自己来授权签名，安装到自己的设备上来进行越狱。</p>
<p>所以这次越狱本质上用 Mac 通过 Xcode 也可以执行，具体操作办法可见<a href="https://www.reddit.com/r/jailbreak/comments/4udpm5/tutorial_jailbreak_933_on_mac_os_x_no_vm/">此 Reddit 帖子</a>。通过这种办法你当然也不再需要提交新的 Apple ID。</p>
<h2 id="toc_6">插件支持情况</h2>
<p>和历年一样，Reddit 用户再次发起了一个 <a href="https://docs.google.com/spreadsheets/d/1wsviKfrj_9pVWmPhVWl8ZEF4UkDHEk7SvvtnFWYaHsA/">Google Sheet</a>，供玩家填写 iOS 9.3.3 的插件支持情况，现已收录超过 160 个插件。想要看自己想用的插件是否支持 iOS 9.3.3 可以直接去<a href="https://docs.google.com/spreadsheets/d/1wsviKfrj_9pVWmPhVWl8ZEF4UkDHEk7SvvtnFWYaHsA/">查看表格</a>。</p>
<h2 id="toc_7">关于本次越狱的问题</h2>
<p><strong>一、为什么要这次越狱要用 Apple ID</strong></p>
<p>因为这次需要开发商证书来安装“PP盘古越狱”这个 App，有能力的可以选择自己安装 .ipa 文件，这样就不用提交 Apple ID。再次提醒如果你要用 Apple ID，不论是新注册的还是老的，开启二步验证并改密码。</p>
<p><strong>二、32 位是否支持</strong></p>
<p>根据 <a href="http://twitter.com/qwertyruiop">@qwertyruiop</a> 的推文，技术上是可以的。根据传闻，盘古团队会在要求特别强烈的时候开发 32 位设备的越狱：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/31p-fi7/25/2016118/2016/07/6.png" alt="" /></figure></div><p><strong>三、7 天失效说</strong></p>
<p>所谓 7 天失效说，是说这次越狱基于个人开发者证书这件事，通过免费的个人开发者证书署名的 App 过了 7 天就会失效，需要再次通过电脑安装此 App 并验证证书。如果这个问题真实存在，那么这次越狱的情况就会变成 7 天后重启不能再通过设备上的 “PP盘古越狱” App 来越狱，而必须得把这个 App 删了，重新装一次 “PP盘古越狱”。</p>
<p>我首次看到这个问题是插件开发者 <a href="http://cydia.ichitaso.com">@ichitaso</a> 提出的：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/31p-fi7/25/2016139/2016/07/7.png" alt="" /></figure></div><p>Reddit 也有不少人在讨论<a href="https://www.reddit.com/r/jailbreak/comments/4udlnf/question_what_will_happen_after_7_days/">这个话题</a>，其中有人发现，这个担忧似乎不必成立，因为这个开发商应用似乎会在安装后自动转换成来自“Beijing Hong Yuan Online Technology Development Co., Ltd.”的企业级应用，因为企业级应用没有时间限制，所以这个担心似乎也不必要了。</p>
<p><strong>四、Mac 能不能越狱</strong></p>
<p>可以，而且不需要提交 Apple ID，具体办法见<a href="https://www.reddit.com/r/jailbreak/comments/4udpm5/tutorial_jailbreak_933_on_mac_os_x_no_vm/">此帖</a>（来自 Reddit，可能需翻墙）。而且实际上，因为本次是要用 ipa 文件越狱，所以按理说完全可以脱离电脑来安装 ipa 文件，比如 Pocket 或者 Readdle 这些厂商的测试 App 都是通过浏览器直接下载的。也已经有一些网站提供这样的服务了，只是基于信任的问题，我没有进行尝试，也不好推荐。</p>
<p><strong>五、还原所有设置/抹掉所有内容不再是禁区</strong></p>
<p>根据越狱开发者以及插件开发者 <a href="http://twitter.com/angelxwind">@angelXwind</a>的推文，历来越狱后不可点的还原所有设置/抹掉所有内容将不再是禁区：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/31p-fi7/25/201614/2016/07/8.png" alt="" /></figure></div><p><strong>六、其它关于越狱的消息</strong></p>
<p>1.本次越狱所用的漏洞已在 iOS 10 beta 2 中被封堵</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/31p-fi7/25/2016115/2016/07/9.png" alt="" /></figure></div><p>2.从此需引导越狱和半引导越狱才是常态？</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/31p-fi7/25/201612/2016/07/10.png" alt="" /></figure></div><section class="footnotes">
<ol>
<li id="fn-1"><p>官方这次没给正式的英文名，而是使用了“Jailbreak on the demand”这样的说法。英文社区的网友很快就认识到这是 Tethered Jailbreak 的一种变体。<a href="#fnref-1" class="footnote">&#8617;</a></p></li>
<li id="fn-2"><p>完美越狱和非完美越狱这种叫法是一种附带了营销意味的叫法。完美越狱只是正常完成了越狱需要的功能，没有任何符合“完美”的含义，所以我们提倡称之为“正常越狱”。而为了和“完美越狱”对应而生出的“非完美越狱”这种叫法的问题更是引起了严重歧义，阻碍了越狱的推广，让许多小白认为非完美代表着问题多，所以排斥。实际上两者的区别只在于是否需要用数据线连接电脑引导设备重启，所以我们提倡称“非完美越狱”为“需引导越狱”。后来的 Semi-Tethered Jailbreak 被“完美越狱”使用者们硬生生地翻译为了“半完美越狱”，更造成了理解上的困难。我们建议称之为“半引导越狱”。<a href="#fnref-2" class="footnote">&#8617;</a></p></li>
<li id="fn-3"><p>官方这次没给正式的英文名，而是使用了“Jailbreak on the demand”这样的说法。英文社区的网友很快就认识到这是 Tethered Jailbreak 的一种变体。<a href="#fnref-3" class="footnote">&#8617;</a></p></li>
</ol>
</section>
 ]]></content:encoded></item><item><title><![CDATA[ 越狱后的 URL Schemes 使用详解 ]]></title><guid>https://jbguide.me/2016/url-schemes-after-jailbreak</guid><link>https://jbguide.me/2016/url-schemes-after-jailbreak</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 23 Jan 2016 01:47:19 +0000</pubDate><content:encoded><![CDATA[ <p>在 Activator 的 1.9.3 版本里，Activator 加入了通过 URL Schemes 来触发所有 Activator 动作的功能。而 Activator 想必大家都清楚，它的动作涵盖面非常广，有些可以直接模拟 iOS 设备的按键；有些可以打开或关闭某个系统功能的开关；有些可以打开 App 还有些可以打开 App 的具体某个功能……而且作为基石级别的插件，它也会随着系统不断进化，比如现在 Activator 可以在非 6S 系的设备上，将 3D Touch 呼出的菜单里的项目作为动作。</p>
<p>对于关注效率的人们来说，越狱后使用 Activator 带来的这套 URL Schemes 的意义在于，它可以填补非越狱状态下 iOS 的 URL Schemes 所不能做的一些空档。</p>
<p>文章内容较多，请根据需要选择相应的部分查看：</p>
<div class="block-list"><ul>
<li><a href="http://jbguide.me/2016/01/23/url-schemes-after-jailbreak/#1">引子</a></li>
<li><a href="http://jbguide.me/2016/01/23/url-schemes-after-jailbreak/#2">具体使用情境</a></li>
<li><a href="http://jbguide.me/2016/01/23/url-schemes-after-jailbreak/#3">获取 Activator 动作的 ID</a></li>
<li><a href="http://jbguide.me/2016/01/23/url-schemes-after-jailbreak/#4">进阶插件搭配</a></li>
<li><a href="http://jbguide.me/2016/01/23/url-schemes-after-jailbreak/#5">结语</a></li>
</ul>
</div><div class="block-html"><h2 id="1">引子</h2></div>
<p><em>&quot;Home 键的 URL Schemes 是什么？&quot;</em></p>
<p>Workflow 估计是这两年评价最高的 App，我也写了它的测评以及一整套的 Workflow 的原创教程。文章首发在指南，后来受少数派邀稿写了教程的最后一篇，并且将之前的教程也都转手放在那，他们把这些教程<a href="http://sspai.com/tag/Workflow">整理在了一起</a>。</p>
<p>教程这样的东西，不同基础的人看完会有各种问题，但我被问到最多的问题大概是这两个问题：</p>
<div class="block-list"><ul>
<li>可不可以运行完某个动作以后返回主界面？</li>
<li>可不可以运行完某个动作以后锁屏？</li>
</ul>
</div><p>在《<a href="http://sspai.com/31500">URL Schemes 使用详解</a>》这篇文章的评论里，也有一条评论，问的就是：</p>
<div class="blockquote"><blockquote><p>Home 键的 URL Schemes 是什么？</p>
</blockquote></div>
<p>其实一定程度上懂 iOS 的机制的人大概不会问出这样的问题，因为我们已经习惯了别人画的边界，习惯于在这个框架里思考问题和解决方案。但是实际上，一旦出了这个圈，原来束缚着我们的框架也就不再存在。</p>
<p>不了解一个东西机制的人自然不在这个圈里面，所以我一直以来对所谓小白们的提出的问题抱着很复杂的感情，一方面有的问题确实很欠考虑，也就是所谓的伸手党，答案靠搜一下就能出来却拿起嘴就问。另一方面，有一些问题也很有价值，那是所谓已经入门了的人会忽视的问题，但忽视并非因为了解，反而更多是因为“这点记住就行了”这样的原因，所以这种问题一旦被问出来，很难答出所以然。</p>
<p>这篇文章本来只是为了回答 Home 键的 URL Schemes 而写的，但随着深入了解，却让我发现了一片新天地。</p>
<div class="block-html"><h2 id="2">具体使用情景</h2></div>
<p><em>做到不越狱的 iOS 设备用 URL Schemes 不能做的事；优雅地做到某些不越狱的 iOS 设备用 URL Schemes 做得很难看的事。</em></p>
<p>如果不越狱的话，前文中提到的那几个需求是不太容易满足的。Laucnher 这个 App 想了个办法模拟 Home 键——让自己闪退！</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/2016619/2016/01/1.jpg" alt="" /></figure></div><p>然而实际使用后的感受非常别扭，它的过程是这样的：</p>
<div class="blockquote"><blockquote><p>（在任何界面）拉出通知中心－选择&quot;主屏幕&quot;这个动作－先打开 Launcher－再将自己强行闪退…</p>
</blockquote></div>
<p>所以有些事情，如果不越狱，就只有这种很不体面的解决方案；如果越狱了，情况就大不相同。</p>
<h3 id="toc_1">执行系统操作</h3>
<p>比如说，文首提到的几件事，有了 Activator 提供的 URL Schemes 就可以轻松做到：</p>
<div class="block-list"><ul>
<li>模拟按一下 Home 键的 URL Schemes 是：<code>activator://send/libactivator.system.homebutton</code></li>
<li>模拟按一下 Power 键的 URL Schemes 是：<code>activator://send/libactivator.system.sleepbutton</code></li>
</ul>
</div><p>如果你现在是越狱状态并安装了 Activator，你可以直接按下面者两个链接试试：</p>
<p>&lt;center&gt;<a href="activator://send/libactivator.system.homebutton">Home 键</a> &amp; <a href="activator://send/libactivator.system.sleepbutton">Power 键</a> &lt;/center&gt;</p>
<p>在 Workflow 使用这些 URL Schemes 就跟正常使用其它 URL Schemes 是一样的，放一个 <code>URLs</code>，接一个 <code>Open URLs</code>。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/2016625/2016/01/2.jpg" alt="" /></figure></div><p>而且，除了 Workflow，这些 URL 可以在各个 URL Schemes 启动器里使用，像 Launcher、Launch Center Pro 还有 Drafts 这些都可以。</p>
<h3 id="toc_2">运行插件</h3>
<p>除了文首的两个问题，我还被问到过一个问题——如何在 Workflow 执行过动作后返回上一个 App？</p>
<p>虽然我不太理解为什么这么做，不过确实有执行它的办法，前提是除了 Activator，你还要装一个叫做 Lastapp 的插件。</p>
<p>执行这个插件的 URL Schemes 是 <code>activator://send/jp.ashikase.lastapp</code></p>
<p>像上面执行 Home 键的操作一样，只要在你 Workflow 的最后接上一组 URL 的动作，就能够在运行完动作后回到上一个 App。<em>注意：如果上一个 App 为空，也就是你是从 Home Screen 启动的 Workflow 然后运行的动作，Activator 的 URL 会跳转到 Activator 的动作界面。</em></p>
<p>同理，其它支持用 Activator 开启的插件，都可以用同样的办法来执行，只要找到它们的 <code>Activator Listener ID</code> 即可，而这个东西怎么找会在后文详细介绍。</p>
<h3 id="toc_3">启动 App</h3>
<p>我在 <a href="http://sspai.com/31500">URL Schemes 使用详解</a>里面提到过不是所有 App 都有基本 URL Schemes，所以不越狱想要用 URL Schemes 启动所有 App 是不可能的。但是，所有 App 都必须有 Bundle ID，通过 Bundle ID，利用 Activator 的 URL Schemes 可以直接打开所有应用！而且格式也非常简单：<code>activator://send/Bundle ID</code></p>
<p>和 URL Schemes 一样，App 的 Bundle ID 放在 <code>info.plist</code> 中。在 <code>info.plist</code> 里搜 <code>CFBundleIdentifier</code>，一般来说下一行就是：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/2016637/2016/01/3.jpg" alt="" /></figure></div><p>如果你不知道 <code>info.plist</code> 上哪找，你需要看 <a href="http://sspai.com/31500">URL Schemes 使用详解</a>这篇文章的<a href="http://sspai.com/31500#09">相关部分</a>。</p>
<h3 id="toc_4">启动 App 的 3D Touch 动作</h3>
<p>3D Touch 的动作是 6S 的特权，当然，越狱后也已经有了像 revealMenu 和 Peek-a-Boo 这样的插件来实现 3D Touch 的功能。不过，有趣的是，有不少 3D Touch 的快速操作动作不支持 URL Schemes，比如 Dropbox 的&quot;搜索&quot;，Safari 的&quot;新无痕浏览标签页&quot;等等。</p>
<p>通过 Activator 的动作 ID，你就可以用 URL Schemes 打开这些 App 的暗藏在快速操作菜单中的动作。</p>
<p>下面我们就来看如何获取 Activator 的动作 ID。</p>
<div class="block-html"><h2 id="3">获取 Activator 动作的 ID</h2></div>
<p>看过前面的内容你会察觉到 Activator 动作相关的 URL Schemes 都是以 <code>activator://send/</code> 开头，后面接动作的 Identifier（后简称 ID）。</p>
<p>这其实非常聪明：</p>
<div class="block-list"><ol>
<li>足够简单，它变量只有一个就是 ID，没有乱七八糟的格式，比不越狱状态下 iOS 的 URL Schemes 规范多了，容易让新手比葫芦画瓢。</li>
<li>更加精准，ID 不允许重复，不会出现此前的<a href="http://drops.wooyun.org/papers/5309">安全事件</a>。</li>
<li>相对易读，因为 Activator 的 ID 的格式和 iOS App 的 Bundle ID 一样，如果开发者不是特别个性，你都应该能直接从这个 Bundle ID 里读出来这是什么 App。Activator 动作的 ID 也一样，你看上面提到过的模拟 Home 键或是 Power 键的动作，一看就知道是干什么的。</li>
<li>你可以一次性找到所有你设备支持的 Activator 动作的 ID。传统的 URL Schemes 需要到每个 App 里去找，这一点真是太方便了。</li>
</ol>
</div><h3 id="toc_5">第一步：获取列表</h3>
<p>你可以直接在 Cydia 搜索 <code>Terminal</code> 来查找自己想用的终端类的 App。好像支持 iOS 9 的只有 <a href="http://twitter.com/ichitaso">@ichitaso</a> 的 <a href="cydia://package/com.ichitaso.mobiletermina">MobileTerminal</a>。然后输入 <code>activator listeners</code> 就会刷刷出现你所有的 Activator 动作的 ID。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/2016646/2016/01/4.jpg" alt="" /></figure></div><p>本来，通过 <code>pbcopy</code> 是很容易做到把上面这一堆东西直接按格式复制下来的。但是因为 iOS 的 /usr/bin 下并没有 <code>pbcopy</code> 的二进制文件，所以无法做到直接复制。</p>
<p>通过 MobileTermina 本身，也无法使用传统的办法进行全选结果然后复制。所以我们需要绕下远路，通过其它 App 用 SSH 的办法来用其它设备获取我们的动作列表。</p>
<p>实际上办法有几个，这里介绍最简单的一种，你可以用 PC、Mac 或另一台 iOS 设备完成。</p>
<div class="block-list"><ol>
<li>在装有 Activaror 的设备上下载 OpenSSH</li>
<li>在这台设备的<code>设置选项</code>里，查看自己使用的 Wi-Fi 名后面的 <code>i</code> 标签后的界面，里面有你设备的 <code>IP 地址</code>。</li>
<li>把另一台设备也接入同样的 Wi-Fi</li>
<li>在另一台设备打开 SSH 软件（此处例子为 Mac，可以直接用 Terminal），输入 <code>ssh root@你的 IP 地址</code></li>
<li>然后会让你输密码，初始密码是 <code>alpine</code>。</li>
<li>密码对的话就会登录成功</li>
<li>登陆成功第一件事先改密码，输入 <code>passwd</code>，然后输入新密码即可。</li>
<li>输入 <code>activator listeners</code>，你就能看到你链接的那个设备上能够执行的动作的 ID 了。</li>
</ol>
</div><p>如果对上述步骤的文字版有恐慌，可以看指南曾经出过的<a href="http://jbguide.me/2013/02/12/how-to-change-root-password-of-ios-devices/">相关视频</a>。</p>
<p>获取列表后，在设备上全选，然后粘贴到一个你 iOS 设备随时能使用到的地方，它最好能支持搜索，并且对搜索结果高亮。</p>
<h3 id="toc_6">第二步：认识这些 ID</h3>
<p>你看到的这些 ID 大概可以分为以下几个类别：</p>
<div class="block-html"><table>
<colgroup>
<col style="text-align:left;"/>
<col style="text-align:left;"/>
<col style="text-align:left;"/>
<col style="text-align:left;"/>
</colgroup></div>
<div class="block-html"><thead>
<tr>
<th style="text-align:left;"></th>
<th style="text-align:left;">形式</th>
<th style="text-align:left;">例子</th>
<th style="text-align:left;">含义</th>
</tr>
</thead></div>
<div class="block-html"><tbody>
<tr>
<td style="text-align:left;">1</td>
<td style="text-align:left;">系统设置选项</td>
<td style="text-align:left;"><code>libactivator.settings.wifi </code></td>
<td style="text-align:left;">系统设置中的 Wi-Fi 选项</td>
</tr>
<tr>
<td style="text-align:left;">2</td>
<td style="text-align:left;">系统功能开关</td>
<td style="text-align:left;"><code>switch-on.com.a3tweaks.switch.wifi </code></td>
<td style="text-align:left;">打开 Wi-Fi</td>
</tr>
<tr>
<td style="text-align:left;">3</td>
<td style="text-align:left;">系统事件</td>
<td style="text-align:left;"><code>libactivator.system.homebutton </code></td>
<td style="text-align:left;">模拟 Home 键</td>
</tr>
<tr>
<td style="text-align:left;">4</td>
<td style="text-align:left;">插件功能</td>
<td style="text-align:left;"><code>jp.ashikase.lastapp</code></td>
<td style="text-align:left;">Lastapp</td>
</tr>
<tr>
<td style="text-align:left;">5</td>
<td style="text-align:left;">App 名称</td>
<td style="text-align:left;"><code>com.ifttt.ifttt</code></td>
<td style="text-align:left;">com.ifttt.ifttt</td>
</tr>
<tr>
<td style="text-align:left;">6</td>
<td style="text-align:left;">3D Touch 菜单项</td>
<td style="text-align:left;"><code>libactivator.shortcut:com.apple.AppStore:Redeem </code></td>
<td style="text-align:left;">App Store 兑换界面</td>
</tr>
<tr>
<td style="text-align:left;">7</td>
<td style="text-align:left;">电话/邮件/信息</td>
<td style="text-align:left;"><code>libactivator.call/mail </code></td>
<td style="text-align:left;">给某个号码打电话/发信息/发邮件</td>
</tr>
</tbody>
</table></div>
<p>所有动作大概就是这几类，主要的几类上面已经介绍过了。这些动作的 ID 具有高度的规律性。比如说系统设置选项，都是以 <code>libactivator.settings</code> 开头的。如果你想建立打开系统设置选项的动作，直接就可以搜 <code>libactivator.settings</code> 来找自己需要的动作 ID，其它种类同理。</p>
<p>认识了 ID 以后，为了方便你日后分类使用，这里有一个分类查询的技巧：你可以用 <code>grep -i</code> 这个命令去单独匹配你想要的 Activator Listeners，比如说，你想获取关机、Home 键等系统动作，你可以使用命令 <code>activator listeners | grep -i r.system</code>，这样就会出现下图中的 Activator Listeners：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/201660/2016/01/5.jpg" alt="" /></figure></div><p>另外这里用 <code>r.system</code> 而不直接用 <code>system</code> 的原因是，直接用后者会匹配到一堆系统铃声相关的 Activator Listeners，这些不属于系统动作。</p>
<div class="block-html"><h2 id="4">进阶插件搭配</h2></div>
<p>在这介绍两款免费强大的插件：</p>
<div class="block-list"><ul>
<li><a href="cydia://package/com.bolencki13.customft">Traverse</a>: 给任一 App 增加 3D Touch 的快捷操作。</li>
<li><a href="cydia://package/org.rdharris.activatecommand">Activate Command</a>: 串连 Activator 的动作。</li>
</ul>
</div><h3 id="toc_7">给任意 App 增加 3D Touch 选项</h3>
<p>由于这篇文章主要说的就是 Bundle ID 跟 URL Schemes，所以正好可以把 <a href="cydia://package/com.bolencki13.customft">Traverse</a> 这个插件推荐给大家。 它是款能够给任意一个 App 增加 3D Touch 快捷操作的插件，利用的就是 App 的 Bundle ID 来确定功能、URL Schemes 来制定动作。</p>
<p>装完 Traverse 后，设置选项的 3D Touch 快捷操作就会出现一个 Respring 的动作：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/2016640/2016/01/5.5.jpg" alt="" /></figure></div><p>我们就以这个为例子来看看 Traverse 的动作是如何编写的：</p>
<p><strong>第一步：在设置选项找到 Traverse</strong></p>
<p><em>诀窍：<code>T</code> 这个字母排列靠后，往下翻。</em></p>
<p><strong>第二部：编辑或新建动作</strong></p>
<p>编辑的话直接点动作即可，新建的话，先点右上角的 Edit，然后再点左上角的加号：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/2016649/2016/01/6.jpg" alt="" /></figure></div><p><strong>第三步：动作内容</strong></p>
<p>按完加号你会看到一个比较陌生的界面，通过这个界面你将为指定的 App 自定义任何一个 3D Touch 的快捷动作：</p>
<div class="block-list"><ul>
<li><code>Title</code>: 动作标题</li>
<li><code>Sub-title</code>: 动作副标题</li>
<li><code>Bundle ID</code>: App 的 <code>Bundle ID</code></li>
<li><code>URL Schemes</code>：你想要加的动作的 <code>URL Schemes</code>（这一步需要用到前面讲的东西了）</li>
</ul>
</div><p><strong>第四步：动作图标</strong></p>
<p>动作图标指的是快捷操作前的图标，比如前面 Respring 的动作前，有个菊花的图标。不过那个是特制的，目前 Traverse 只支持以下几种图标样式：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/2016658/2016/01/7.jpg" alt="" /></figure></div><p>这个插件的应用场景很多：比如说在不支持 3D Touch 的设备中，Launch Center Pro 是没有调节快捷操作的选项的，也就是说就算你装了插件，也不能使用 Launch Center Pro 的快捷操作。通过 Traverse，就能实现这样的功能。</p>
<p>Traverse 内部有个 Database，是一些别人做好的动作，大家有兴趣的话也可以自己尝试。</p>
<p>当然我还是觉得自己学会了原理去做适合自己的动作更好。</p>
<h3 id="toc_8">串联多个系统动作</h3>
<p>这里的例子是使用 Activator 的 Listener ID 加上 Activate Command 这个插件，做到<strong>让你的 iOS 设备连上蓝牙音箱就自动播音乐</strong>。</p>
<p>这个动作可以只使用 Activator 内置的动作来完成：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/2016637/2016/01/8.jpg" alt="" /></figure></div><p>但是内置的动作流的问题是没有调整音量这个能力。这个细节其实很重要，因为当接上蓝牙音箱的时候，iOS 会自动调整到上次我们使用音箱时的那个音量。但这个音量未必是你现在想要的，你不希望太大也不希望太小，更不希望很酷地做了一个自动化动作，结果音量炸裂最后还蠢蠢地要去调整音量……</p>
<p>所以，音量很重要，而要加入音量预设，就只能用命令行来解决：</p>
<div class="blockquote"><blockquote><p>activator send libactivator.audio.volume.media.10</p>
</blockquote></div>
<p>我们来看这句：</p>
<div class="block-list"><ul>
<li><code>activator send</code>：还是和以前的 activator://send/ 一样，只是没了符号（没有符号很重要！）。记得每个 Activator Listeners 之前都要加上它。</li>
<li><code>libactivator.audio.volume.media.10</code>： 这句来控制音量，数字代表百分比，100 就是最大音量。</li>
</ul>
</div><p>然后你需要把这段命令粘贴到你的 Activate Command 中：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/2016644/2016/01/9.jpg" alt="" /></figure></div><p>最后再把这个步骤添加到 Activator 中：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/2016655/2016/01/10.jpg" alt="" /></figure></div><p>如果你怕误操作，还可以让设备再自动锁屏一下，把锁屏这个动作接到降低音量下面。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/4p-fi1/23/201663/2016/01/11.jpg" alt="" /></figure></div><p>整个命令完成的任务是：</p>
<div class="blockquote"><blockquote><p>打开音响——自动播放音乐——并调节到你想要的音量——锁屏</p>
</blockquote></div>
<p>所以意思就是，你手机都不用掏出裤兜，除了按下蓝牙音箱以后音乐自动想起以外，其它没有任何变化。MAGIC！</p>
<p>这只是我个人使用的一个例子，希望你可以结合自己的需求做出来更符合自己使用情景的东西。</p>
<div class="block-html"><h2 id="5">结语</h2></div>
<p><em>越狱失去意义？My ass.</em></p>
<p>iOS 4 是越狱的鼎盛时期，我记得 iOS 5 的时候越狱出现还上了微博热门话题。当时越狱盛行的原因是，iPhone 已经普及到了一定地步，但人们关于使用 iOS 的知识和消费习惯都还没有培养出来，消费渠道也很局限。除此之外，iOS 还有不少事情做得让人不够满意，尤其对于国人来说，用惯了九宫输入法和来电归属地黑名单的人太希望自己的设备能做到这些。但 iOS 4 以后，每一次 iOS 的大版本更新，都会有人出来说越狱已死。因为我们会看到那些主流需求一个又一个地在 iOS 内部被实现。</p>
<p>但是越狱这样的事的意义不仅是刚需，它还有很多其它的意义，其中一个就是探索 iOS 能力边界。狱中有 Workflow 这样的 App 在 iOS 的边界上游走，而越狱让我们出了这个边界我们可以做到更多的事。苹果可以把越狱后满足的主流需求融入到 iOS 之中，但是越狱反过来也可以利用这些新的特性做出更巧妙的事：iOS 有了通知中心，越狱就有了通知中心插件；iOS 有了控制中心越狱了就能自定义这个控制中心；iOS 有了 3D Touch，越狱后我们可以修改或者在其它地方利用 3D Touch 的快速操作……</p>
<p>就像盆和水，盆每年都会大一些深一些，但是水还是每年都能溢出来。</p>
 ]]></content:encoded></item><item><title><![CDATA[ 两款提升 iOS 输入效率的插件 ]]></title><guid>https://jbguide.me/2015/2-tweaks-to-improve-input-efficiency</guid><link>https://jbguide.me/2015/2-tweaks-to-improve-input-efficiency</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 28 Nov 2015 12:12:45 +0000</pubDate><content:encoded><![CDATA[ <p>不论是聊天还是写文章，相信大家在 iOS 设备上输入的频率和总量都渐渐超赶 PC。而我本人从很早开始就是主要使用 iPad 来写文章的，所以 iOS 设备上的输入效率一直是我——相信也是大家——关心的问题之一。</p>
<p>输入法效率，简单来说就是<strong>在最短的时间最精确地输入我们需要输入的内容</strong>。这个标准具体到每个人的话可能会出现不同的需求，对我来说，其中比较重要的部分是：文本替换[^1]和表情输入。在这两个方面，我分别使用 Keyboard Accio 和 EmojiKey 两个插件来提高输入效率和体验。</p>
<h3 id="toc_1">用 Keyboard Accio + TextExpander 改善文本替换</h3>
<p>文本替换和表情输入的一些基础需求都可以使用 iOS 原生的文本替换来做到，但是如 iOS 的大部分原生效率功能一样，它们只能满足基本需求，但不如专精该领域的第三方 App[^2]。而在文本替换方面，专精于此且登陆 iOS 的代表毫无疑问是 <a href="https://smilesoftware.com/textexpander">TextExpander</a>。</p>
<p>然而，虽然 iOS 8 以后允许第三方输入法上架 App Store，但是第三方输入法在很多方面却没有和 iOS 原生输入法一样的地位。从效率方面来说，最典型的是输入法切换的问题——第三方输入法在使用后必须切换到下个输入法，而不能切换到上个使用的输入法。</p>
<p>比如我有三个输入法：中文拼音、英文、表情。中文先输入一些内容，然后切换英文输入一些内容，这时候如果我再轻触地球图标，它不会切换到表情，而是会切换到原来的中文拼音。这是符合我们的需求的，Mac 上一般也是如此。但如果把三个输入法中的英文换成 Textexpander，轻触地球图标无论如何都会切换到下一个表情键盘。三个键盘还好，如果键盘更多的话，这种输入方式更不效率。</p>
<p>解决这个问题可以用到 Keyboard Accio 这款插件。它出自台湾开发者<a href="https://twitter.com/hirakujira">@hirakujira</a> 之手，我们之前对它进行过介绍。它的概念很简单却很实用：预设输入法界面中最上方的两个输入法为默认输入法，单次触碰切换输入法的地球图标时将仅在这两个默认的输入法中切换，无论它是第三方输入法还是原生输入法。</p>
<p>这样一来，可以直接把 TextExpander 的输入法放到中文输入法的下面，做到每次按地球只在中文拼音和 TextExpander 两个输入法之间切换。于是我终于可以用 TextExpander 来代替原生的英文输入法了。你也可以把自己惯用的第三方输入法放到输入法编辑界面的顶端，来做一个自己习惯的组合。</p>
<h3 id="toc_2">用 EmojiKey 改善表情输入</h3>
<p>下一步是解决表情输入问题，表情也可以用原生的文本替换来解决，比如可以给表情`</p>
 ]]></content:encoded></item><item><title><![CDATA[ 关于 iOS9 越狱的百万美金悬赏 ]]></title><guid>https://jbguide.me/2015/one-million-ios9-bounty</guid><link>https://jbguide.me/2015/one-million-ios9-bounty</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Thu, 05 Nov 2015 07:11:27 +0000</pubDate><content:encoded><![CDATA[ <p>9 月末有家公司悬赏百万美元要求做到 iPhone 5s 以后的全设备正常越狱，而且，手段必须是通过浏览器或者短信。10 月 31 日是悬赏的截止日期，这事儿现在也已有了结果……</p>
<h2 id="toc_1">百万悬赏</h2>
<p>9 月 21 日 <a href="https://www.zerodium.com">ZERODIUM</a> 在其 <a href="https://www.zerodium.com/ios9.html">iOS 9 悬赏页</a>上发布了悬赏公告，在公告上 ZERODIUM 自称是零日漏洞<sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup>的收购平台。</p>
<p>期限是 10 月 31 日，奖金上限 $3,000,000 ，每人或团队的奖金 $1,000,000 。</p>
<p>ZERODIUM 提出以下条件：</p>
<div class="block-list"><ul>
<li>必须包括未知、未发布和未被报告的漏洞，可以绕过所有 iOS 9 漏洞预防措施包括： ASLR<sup class="footnote-ref" id="fnref-2"><a href="#fn-2">2</a></sup>, sandboxed<sup class="footnote-ref" id="fnref-3"><a href="#fn-3">3</a></sup>, rootless<sup class="footnote-ref" id="fnref-4"><a href="#fn-4">4</a></sup>, code signing<sup class="footnote-ref" id="fnref-5"><a href="#fn-5">5</a></sup>, and bootchain<sup class="footnote-ref" id="fnref-6"><a href="#fn-6">6</a></sup>.</li>
<li>必须允许对任意 App（比如 Cydia）远程的匿名的强制的安装行为。</li>
<li>必须通过以下途径越狱：</li>
<li>移动浏览器（Safari 或 Chrome）的初始配置下的网页；或</li>
<li>通过应用打开网页后越狱；或</li>
<li>接受短信或彩信通过其中的文本或媒体越狱。</li>
<li>除访问网页和阅读信息以外，整个越狱过程必须可以实现远程、可靠、低调，不需要用户进行任何交互。（通过物理媒介和蓝牙等非远程方式越狱则失去领奖资格）</li>
<li>越狱必须支持以下设备：</li>
<li>iPhone 6s / iPhone 6s Plus / iPhone 6 / iPhone 6 Plus<ul>
<li>iPhone 5 / iPhone 5c / iPhone 5s</li>
<li>iPad Air 2 / iPad Air / iPad (4rd generation) / iPad (3th generation) / iPad mini 4 / iPad mini 2</li>
</ul>
</li>
<li>部分或不完整的越狱将没有资格领取奖金，ZERODIUM 有权决定给这种局部漏洞多少酬金。</li>
<li>漏洞/越狱的完整代码由 ZERODIUM 公司单独拥有，提交者需提供对漏洞以及越狱的详细的技术文档。</li>
<li>通信或漏洞提交都要经过加密的邮件来实现，ZERODIUM 保留决定权。</li>
<li>百万美元支付后所有相关情报由 ZERODIUM 独有。</li>
</ul>
</div><h2 id="toc_2">结果及解读</h2>
<p>很明显期限已到，所以首先说结果，有没有人拿到头筹呢？有。
ZERODIUM 公司在推特表示：</p>
<div class="blockquote"><blockquote><p>Our iOS #0day bounty has expired &amp; we have one winning team who made a remote browser-based iOS 9.1/9.2b #jailbreak (untethered). Congrats!</p>
</blockquote></div>
<div class="blockquote"><blockquote><p>我们的零日漏洞悬赏已到期，有一支取胜队伍做到了通过浏览器越狱了 iOS 9.1 和 9.2 beta，而且是不需要连接电脑重启的。恭喜！</p>
</blockquote></div>
<p>看来是有人做到了，但目前是谁尚未可知。</p>
<p>另一方面，这个漏洞会被如何利用是值得担心的，这么大的投入总要以某种方式赚回来，我个人不太倾向于认为这一百万悬赏只是为了刺激黑客加速开发越狱。首先，它是不是会被恶意利用，你看它的理由里有：1. 远程；2. 短信或浏览器；3. 极少交互；4. 可以安装任意软件……其次，如果不被恶意利用（而且鉴于现在 iOS 不用越狱安全情况也不太乐观），这个越狱工具的发布会不会一如既往是免费的也被人们怀疑。就我个人来说，如果非得上述两种二选一的话，我情愿花钱买安心。</p>
<p>当然，这些都是臆想，他人的动机和做法都是要等到最后结果出来才能见分晓。希望最后是个皆大欢喜的结局。</p>
<section class="footnotes">
<ol>
<li id="fn-1"><p><a href="https://zh.wikipedia.org/wiki/%E9%9B%B6%E6%97%A5%E6%94%BB%E5%87%BB">Wiki 解释</a>：零日漏洞或零时差漏洞（英语：Zero-day exploit）通常是指还没有补丁的安全漏洞。<a href="#fnref-1" class="footnote">&#8617;</a></p></li>
<li id="fn-2"><p><a href="https://zh.wikipedia.org/wiki/%E4%BD%8D%E5%9D%80%E7%A9%BA%E9%96%93%E9%85%8D%E7%BD%AE%E9%9A%A8%E6%A9%9F%E8%BC%89%E5%85%A5">Wiki 解释</a>：在計算機科學中，位址空間配置隨機載入（英语：Address space layout randomization (ASLR)），又稱為位址空間布局隨機化，是指利用隨機方式配置資料位址。一般現代作業系統中都加設這一機制，以防範惡意程式對已知位址進行攻擊。<a href="#fnref-2" class="footnote">&#8617;</a></p></li>
<li id="fn-3"><p>就是沙盒啦。<a href="#fnref-3" class="footnote">&#8617;</a></p></li>
<li id="fn-4"><p><a href="https://www.quora.com/Can-someone-elaborate-on-the-OS-X-10-11-feature-called-Rootless">Quora 上这篇答案</a>把 Rootless 解释得很清楚，有心人可以把它翻译成中文。简而言之，即以前我们输入 Root 账户和密码或者授权其它第三方应用就可以修改系统的所有底层内容，现在不可以了。<a href="#fnref-4" class="footnote">&#8617;</a></p></li>
<li id="fn-5"><p><a href="https://en.wikipedia.org/wiki/Code_signing">Wiki 解释</a>：代码签名是确保软件作者身份和保证代码不被恶意篡改的方法。<a href="#fnref-5" class="footnote">&#8617;</a></p></li>
<li id="fn-6"><p><a href="https://www.theiphonewiki.com/wiki/Bootchain">Wiki 解释</a>：Bootchain 是苹果确保 iOS 设备只运行被签名的或值得信赖的代码的方法。<a href="#fnref-6" class="footnote">&#8617;</a></p></li>
</ol>
</section>
 ]]></content:encoded></item><item><title><![CDATA[ 关于 iOS 9 越狱消息汇总 ]]></title><guid>https://jbguide.me/2015/ios9-jailbreak</guid><link>https://jbguide.me/2015/ios9-jailbreak</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sun, 18 Oct 2015 03:42:11 +0000</pubDate><content:encoded><![CDATA[ <h3 id="toc_1">此次越狱的主要风险</h3>
<p>俗称的“完美越狱”是指越狱后的设备可以正常的关机和重启，盘古团队这次越狱却无法 100% 的做到这点。以下内容主要节选自 <a href="https://twitter.com/angelxwind">@angelXwind</a> 在 <a href="https://www.reddit.com/r/jailbreak/comments/3owd3h/discussion_stability_of_pangus_ios_90x_untether/">Reddit 上的发帖</a>：</p>
<p>目前为止通过盘古工具会出现 kernel panic 的情况，表现为重启循环和蓝屏。盘古工具与此前的工具很不一样，每次重启都有 20%~25% 的可能性失败，然后它会主动再尝试重启，直到成功。实际上 TaiG iOS 8 的越狱也使用了类似方法。但是盘古 iOS 9 越狱目前有很小的机率造成“死亡重启（Boot Loop of Death，简称 BLoD）”</p>
<p>死亡重启不是前面提到的那种可以再尝试重启的重启失败，也不是你装了不适配的插件以后疯狂重启（这种可以通过重启时长按音量键进入安全模式来解决）而是一旦出现这种情况，设备会卡死几个小时甚至不会再成功重启。这意味着你必须得恢复你的设备。</p>
<p><a href="https://twitter.com/saurik">@Saurik</a> 做了测试并将结果发布在了 Twitter 上：</p>
<div class="blockquote"><blockquote><p>I rebooted an iPhone 6S running iOS 9.0.2 jailbroken with Pangu9 almost 1100 times today: 85% of boots worked, 0.4% took 10 minutes to fail.</p>
</blockquote></div>
<div class="blockquote"><blockquote><p>译文：iPhone 6S，iOS 9.0.2，盘古越狱。重启 1100 次，85% 重启成功，0.4% 在 10 分钟后失败了。</p>
</blockquote></div>
<p>后面 <a href="https://twitter.com/angelxwind">@angelXwind</a> 贴出了一些 Reddit 用户的测试成果，一些用户硬关机（用长按 Home + Power 键关）数次以后会进入死亡重启，还有些每次都会。</p>
<p>所以目前为止，死亡重启的原因以及对策并不清楚，网友分享的方法可能是现象解但不会是代码解，也就是不会是真正的解决方案。BTW，我一直都不赞成“完美越狱”这种失实夸大且宣传深意浓厚的叫法，这次看来本次的“完美越狱”更配不上这名字了。</p>
<p>但是也不是说要大家不要越狱了，如果你对越狱的某个插件和功能有硬需求，那你并没有太多的选择，但是为了炫机为了上论坛发帖晒图地去越狱的朋友还是慎重考虑。如果必须要越狱，目前只有尽量<strong>避免重启</strong>。</p>
<h3 id="toc_2">不越狱的风险</h3>
<p>为什么说不越狱也有风险呢？其实这个问题的背后有个问题是，盘古为什么这次处理得这么粗糙就发布了越狱？原因是 iOS 9.1 中，此次使用的越狱漏洞已被修复。</p>
<p>Saurik 在 Reddit <a href="https://www.reddit.com/r/jailbreak/comments/3oonos/discussion_pangu9_supports_ios_91/cvz4jh0">发帖</a>，称：</p>
<div class="blockquote"><blockquote><p>I believe one of the exploits in this jailbreak was fixed in iOS 9.1b, and as 9.1b4 started having &quot;Apple could release this at any time&quot; build numbering associated with it, Pangu pushed to release ASAP.</p>
</blockquote></div>
<div class="blockquote"><blockquote><p>译文：我相信盘古所使用的一个漏洞<strong>已经在 iOS 9.1 的测试版被苹果封堵</strong>，苹果可能在任何时间发布 iOS 9.1，所以盘古才被迫尽快发布越狱工具。</p>
</blockquote></div>
<p>所以我们这次真的是夹在了两难之间，越狱，则会有很小的机率出现死亡重启。但又已知 iOS 9.1 已经封上了漏洞，时间剩下的不多。</p>
<h3 id="toc_3">插件的支持情况</h3>
<p>大部分人越狱是为了插件，所以我们来看看插件的支持情况。</p>
<p>和往常一样，每次 iOS 大版本更新后的越狱，<a href="https://www.reddit.com/r/jailbreak/">Reddit 的 Jailbreak 板块</a>都会发起一个插件支持情况的列表，群策群力第一时间更新插件的支持情况。本次列表的地址是：<a href="https://docs.google.com/spreadsheets/d/1p9OQynohk7bOZVnSmmvYj4w98w7S7YlHoMr02P1WEcw/htmlview?usp=sharing&amp;sle=true">iOS 9 Jailbreak Compatibility : iOS 9 Tweak Compatibility</a>，也许要翻墙才能查看。</p>
<p>不过截至到目前位置，600 多个插件超过一般已经适配到了 iOS 9，知名的插件如 Springtomize/Taig/Seng/IDbox/iFile/DataMeter/iKeywi 等都已适配或在抓紧时间进行更新，还有一些知名插件如 Activator 等作者拥有自己个人源的，可以去查查作者是否在个人源发布了 Beta 版本，这些作者一般会在个人源先发布 Beta 版本来进行测试。作者们的个人源请自行搜索，能力不足的朋友不建议尝试。</p>
<p>这部分我的结论是，插件一般都不是阻挡越狱的主要原因，重要的插件早晚都会更新的，而你总不会为了玩票的插件留到某个 iOS 版本迟迟不动吧？</p>
<h3 id="toc_4">关于 iOS 8.4.1 越狱</h3>
<p>iOS 8 的最后一个版本是 iOS 8.4.1，在这方面努力的开发者已知的是 Luca Todesco(<a href="https://twitter.com/qwertyoruiop">@qwertyoruiop</a>。他将自己的越狱源码公布在了 GitHub 上，<a href="https://github.com/kpwn/yalu">代号 yalu</a>，有兴趣有能力的朋友可以围观使用。</p>
<p>同时，如果你在等待越狱工具发布的话，这里有一个好消息。作者在 Twitter 上公布</p>
<div class="blockquote"><blockquote><p>arm64 amfi patcher ROP chain now works! untethered jailbeak for 8.4.1 is done.</p>
</blockquote></div>
<p>意思即 8.4.1 全设备的越狱已经开发完成，现在要等的只是打包成工具了。</p>
<h3 id="toc_5">iOS 9 越狱注意事项</h3>
<p>最后，如果你决定要越狱，请看以下注意事项：</p>
<div class="block-list"><ul>
<li>适配设备：所有</li>
<li>版本：iOS 9 ~  iOS 9.0.2</li>
<li><strong>越狱前</strong>使用 iTunes 备份设备。</li>
<li><strong>越狱前</strong>将设备使用新固件恢复为新设备。</li>
<li><strong>越狱时</strong>遵守工具提示，关闭密码及查找我的设备等功能。</li>
<li><strong>越狱时</strong>使用官方数据线。</li>
<li><strong>越狱时</strong>最好不要连接多个设备。</li>
<li><strong>越狱后</strong>使用 iTunes 将此前的备份恢复。</li>
</ul>
</div><p>如果越狱失败，请恢复为新设备后再次越狱，注意做到以上注意事项。</p>
<p>以上就是此次 iOS 9 越狱的消息的汇总，如果有其它的问题，可以通过 <a href="mailto:hum@jbguide.me">hum@jbguide.me</a> 来问我。我会收集一下问题集中作答。</p>
 ]]></content:encoded></item><item><title><![CDATA[ 盗版应用与插件泄露 iCloud ID 等机密信息 ]]></title><guid>https://jbguide.me/2015/dont-us-pirated-tweaks-and-apps</guid><link>https://jbguide.me/2015/dont-us-pirated-tweaks-and-apps</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Thu, 27 Aug 2015 10:11:05 +0000</pubDate><content:encoded><![CDATA[ <p>乌云平台 8 月 25 日提交了一份关于 iOS 的漏洞，标题为：<a href="http://www.wooyun.org/bugs/wooyun-2015-0136806">22万iCloud账号及机密信息被多款内置后门越狱插件窃取并泄露（越狱iPhone手机真实窃密案例）</a>。</p>
<p>看来现如今越狱在第三方应用平台的竞争下已经称为了一块新的市场，以前我们以为这块市场的盈利方式只是通过用户占有率，从而通过“装机必备应用”这样坑骗小白用户的方式来获取推广费用。</p>
<p>但看起来助手变得贪婪的时候用户也在日益变得聪明，不会太去选择那些自己根本不需要的应用或游戏。那么助手怎么赚钱呢？盗刷。</p>
<p>所谓盗刷就是前些日子大家反应的“App Store 的’已购’中莫名其妙地增加了自己没有下载过的应用”，或者直接有自己没购买或下载的 App 直接出现在主屏幕上的情况。</p>
<p>知道用户的 iCloud ID 对用户的影响是十分巨大的：盗刷相对只是小事，除此之外对方还可以锁定你的机器要挟你，又或者在偷盗了你的手机后解锁。</p>
<p>乌云对此漏洞的警告是：</p>
<div class="blockquote"><blockquote><p>越狱以后千万不要安装来历不明的应用和插件，被获取到 iCloud 账号以后可以锁定机器，解开激活锁，这些都够受的……</p>
</blockquote></div>
<p>所以看来，乌云认为此次事件的原因是：越狱后来历不明的应用和插件。</p>
<p>这里的“来历不明”非常重要，它所指的主要是盗版的应用及插件。盗版插件多数存在于盗版源，而大的盗版源会在 Cydia 添加的时候显示提示。而也有一些名气不大的小的盗版源没有被 Cydia 所识别，对这些源，判断方法是，首先看是不是作者的个人源，如果不是个人源却聚集了大量的插件嫌疑就很大，然后你再查看是否和官方源的插件有重合即可。现如今使用盗版插件的风险已经不止是不稳定，而且还有着重大的安全风险。所以请你在贪小便宜和设备的安全与稳定之间再次权衡。</p>
<p>同时，实际上，那些提交到几大官方源中的插件也未必全部可靠，但是首先，这样的漏网之鱼并不多，很多年可能就出几个。同时，可以保证的是一经发现一定会获得处理。一部分的免费插件作者为了表示清白也会把自己的插件的源代码发布到 Github 上，这点也是一个区分插件是否干净的标志。</p>
<p>希望你在享受越狱的同时尊重开发者的权益，并且，就算你不尊重开发者的权益，还是好好考虑下你自己的隐私。</p>
<p>最后再重申一下盗版源的鉴别方法：</p>
<p>大的盗版源会在 Cydia 添加的时候显示提示。</p>
<p>名气不大的小的盗版源有可能没被 Cydia 所识别，对这些源，判断方法是，首先看是不是作者的个人源，如果不是个人源却聚集了大量的插件嫌疑就很大，然后你再查看是否和官方源或作者个人源的插件有重合即可。你多留个脑子，想想，如果这个东西本来就是免费，它为什么还把费劲它扒过来放到自己源上？</p>
 ]]></content:encoded></item><item><title><![CDATA[ TalkJB 第50期: 这样的越狱是用户想要的？ ]]></title><guid>https://jbguide.me/2015/talkjb-50</guid><link>https://jbguide.me/2015/talkjb-50</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sun, 28 Jun 2015 09:40:55 +0000</pubDate><content:encoded><![CDATA[ <p>iOS 有条不紊地加入越狱功能，国内团队开发的越狱工具在初始阶段质量差问题多。也就是说，人们本来就已经对越狱需求在减少的今天，国内开发团队还在为了拼速度发布初期出错率和学习成本都很高的越狱工具。就算你是为了抢盗版市场，赢了对手输了大局最后大家都没得玩，有谁想见到这样的结果？一家先出越狱工具另一家就改皮肤然后挨骂，你扒我我扒你，难道没有良性竞争的方式？</p>
<h2 id="toc_1">本期出来讲话的人：</h2>
<div class="block-list"><ul>
<li><a href="http://www.weibo.com/jailbreakhum">@JailbreakHum</a></li>
</ul>
</div><h2 id="toc_2">本期提到的文章/软件：</h2>
<div class="block-list"><ul>
<li><a href="https://docs.google.com/spreadsheets/d/1lLlBNzGC78ETjzcSaTpkugLUBqB2wQa2__gxDc10Yl0/edit#gid=0">iOS 8.3 插件适配列表</a>(要翻墙)</li>
<li><a href="http://evasi0n.com/l2.html">Evad3rs团队的声明</a></li>
<li><a href="http://jbguide.me/2015/02/07/priority-hub/">Priority Hub 测评</a></li>
</ul>
</div><h2 id="toc_3">订阅TalkJB：</h2>
<div class="block-list"><ul>
<li><a href="https://jbguide-static.b0.upaiyun.com/media/talkjb/TalkJB-050.m4a">本期节目下载</a></li>
<li><a href="http://talkjb.jbguide.me/feed">通过播客源订阅</a></li>
<li><a href="http://www.lizhi.fm/#/141551">通过荔枝FM</a></li>
</ul>
</div><h2 id="toc_4">联系我们：</h2>
<div class="block-list"><ul>
<li>微博<a href="http://www.weibo.com/talkjb">@TalkJB</a></li>
</ul>
</div><div class="block-html"><div class="powerpress_player" id="powerpress_player_7546">[![Play](http://jbguide.me/wp-content/plugins/powerpress/play_video_default.jpg "Play")](http://media.blubrry.com/talkjb/p/cdn2.jbguide.me/media/talkjb/TalkJB-050.m4a "Play")</div>Subscribe: [iTunes](itpc://jbguide.me/feed/podcast/ "Subscribe on iTunes") | [Android](http://subscribeonandroid.com/jbguide.me/feed/podcast/ "Subscribe on Android") | [RSS](http://jbguide.me/feed/podcast/ "Subscribe via RSS")</div>
 ]]></content:encoded></item><item><title><![CDATA[ 墨客更新支持 URL Schemes，这里有一些有趣的玩法 ]]></title><guid>https://jbguide.me/2015/moke-and-url-schemes</guid><link>https://jbguide.me/2015/moke-and-url-schemes</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Mon, 25 May 2015 07:56:35 +0000</pubDate><content:encoded><![CDATA[ <h3 id="toc_1">墨客和第三方微博客户端</h3>
<p>墨客出现之前的时代大概算是“微博第三方客户端 1.0 时代”，如果你从那时候就开始玩 App 的话，你脑子里大概会出现<code>Weico</code>、<code>随享</code>、<code>微博物语</code>以及<code>微格</code>等第三方微博客户端。但是这个时期的微博客户端做得都很“不完整”，比如评论转发、转发评论、评论并转发这些很基本的“刚需”类功能都不能很好地支持。虽然已经有客户端开始发展“个性”功能，但是因为雪中送炭没有搞好，锦上添花反而就显得多余。</p>
<p>而墨客的出现大概可以算作微博第三方客户端 2.0 时代的起始，这个时代也大概可以算是个第三方客户端的黄金时代，因为当时微博还没有爆发性地搞出来各种功能和表情，像“赞”这样的东西还没有出现，微博的一切都还像是一个 Microblog 的“社交”平台。在这个时期的微博客户端都有了完整的功能，并在此基础上开始拼一些各自的创意。而且从这个时期开始，微博客户端已经成了我个人认为“没法写测评和教学”的那类 App 了。因为它们首先并不难用、很好上手，其次是微博的功能实在太杂，我曾经是打算写墨客测评的，而且专门列了张表来统计有多少需要写的功能，列完表格发现任务太重直接放弃。有兴趣你可以看看<a href="https://www.dropbox.com/sh/t0xarnx3rx3usfo/AADUUeiN_ymRZgPNld0FUCDXa?dl=0">这张表</a>（现在可能要往上列的东西可能更多）。</p>
<p>在 1.0 时代，我的设备上常会有多个微博第三方客户端，而从有了墨客开始，虽然陆续有一些新兴的微博客户端的起起落落，但个人认为，第三方微博客户端墨客一直都是领跑者。所以我手机里的微博客户端长期以来只有墨客一个。偶尔在微博上看到的其它客户端的尾巴大多是测试用。</p>
<p>在今天墨客发布了它的 2.9 版更新，最亮眼的功能是支持了丰富的 URL Schemes，墨客也因此成为了一款对 URL Schemes 提供<strong>丰富</strong>支持微博客户端 App（包括官方客户端）。我个人一直认为是否支持 URL Schemes 跟 x-callback-URL 是评判 iOS 平台上同类 App 的作者是否用心、是否追求效率以及作品是否优秀的重要标准之一。换句话说，如果两个 App 你<strong>感觉</strong>差不多，那你就看谁支持 URL Schemes，支持得越细越好。因为用 Launch Center Pro 这样的 App，URL Schemes 可以为你的操作减少干扰提高效率。</p>
<p>在墨客官网大家可以看<a href="http://moke.com/moke/url_schemes.html">官方的 URL Schemes 介绍</a>，但是不懂的大概还是不懂，所以下文主要为大家说明各 URL 的用法和使用思路。</p>
<h2 id="toc_2">墨客的 URL Schemes</h2>
<p>抛去打开墨客这个单一功能以外，墨客提供的 URL Schemes 大概分为三项：查看、搜索和发布。</p>
<h3 id="toc_3">查看部分</h3>
<p><em>比方说你下班的路上用墨客刷微博，看到了个想做的菜谱。有了这部分的 URL，你就可以做到在准备做饭的那个时间点被 Due 提醒，点开提醒后直接跳转到墨客打开这条微博。</em></p>
<p>查看部分分两个方面：<strong>查看某条微博</strong>和<strong>查看某个用户</strong>。</p>
<p>注意这里都是<strong>查看</strong>而不是查找，它打开的不是搜索界面而直接是目标界面，所以需要你给出非常精确的数据。比如说你要看 <a href="http://weibo.com/jbguide/">@越狱指南</a> 的主页，通过这部分的 URL 你可以直达 <a href="http://weibo.com/jbguide/">@越狱指南</a> 的主页，而不是先给你出一个页面上面列了一些和越狱指南有关无关的用户，让你来挑选。</p>
<p>下面我们分别来介绍查看部分的这两个方面。</p>
<h4 id="toc_4">查看某条微博</h4>
<p>我们先说查看微博部分，微博有三种方式来定位某条具体的微博：通过这条微博的 MID、ID 还有链接，在墨客里对应的 URL 分别为：</p>
<div class="block-list"><ul>
<li>通过微博的 MID 查看微博：<code>moke:///status?mid=</code>微博MID</li>
<li>通过微博的 ID 查看微博：<code>moke:///status?id=</code>微博ID</li>
<li>通过微博的链接查看微博：<code>moke:///link?url=</code>微博正文页面链接</li>
</ul>
</div><p>其中前两项，也就是微博的 <code>MID</code> 和 <code>ID</code> 对普通用户并没有太大的作用。<code>MID</code> 是网页 URL 路径的最后一部分，比如一条微博的 URL 是 <code>http://www.weibo.com/2208752785/CjadX3vUY</code> 它的 <code>MID</code> 就是 <code>CjadX3vUY</code> 这部分。而这条微博的 ID 就是通过一定的格式对微博 MID 进行转换。</p>
<p>对于开发者来说搞清楚这些区别是重要的，但对普通用户来说，它们不仅没啥用，而且很难通过日常操作去获取。所以如果你想要查找某条微博，通过这条微博的链接来找是最简单的。在墨客上对应的 URL 就是 <code>moke:///link?url=</code> ，你只要在这个 URL 的等号后面放上微博链接，就可以直接在墨客打开这条微博。</p>
<p>如果你使用 Launch Center Pro，你可以把等号后面直接设置为剪切板，也就是 <code>moke:///link?url=[clipboard]</code> 。这样，你复制好一条微博的链接，再直接在 Launch Center Pro 里打开这个动作就可以在墨客查看这条微博。</p>
<h5 id="toc_5">使用情境</h5>
<p>通过这条微博的 URL，结合 <a href="http://www.dueapp.com/">Due</a>，可以做到定时查看这条微博，换句话说，是提醒自己查看这条微博。</p>
<p>打开你的微博收藏看看，大概里面有很多条微博，但是你却没看过。这个时代就是这样，你认为你要“稍后读”的东西你稍后就会看，但是实际上，因为你当下却总有读不完的东西，而且你存起来的东西你慢慢会忘记，这导致你要稍后读的东西越来越多，最后稍后读变成永不读<sup><a href="#fn:1" title="see footnote">1</a></sup>。</p>
<p>那么有了这个功能，我们收藏微博的时候就不要单独点那个<code>✭</code>，而可以是设置一个 <a href="http://jbguide.me/tag/workflow/">Workflow</a>，把你收藏的这条微博设定个特定的时间去读它。比如说你下半路上的路上用墨客刷微博，看到了个想做的菜谱。有了这部分的 URL，你就可以做到在准备做饭的那个时间点被 Due 提醒，点开提醒后直接跳转到墨客打开这条微博。</p>
<h5 id="toc_6">具体做法</h5>
<p>整体的思路是通过 Workflow。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/05/1.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/05/1.png" alt="1" /></a></p>
<p>这个 Workflow 的思路是：</p>
<p>首先从墨客获取微博链接，比如说微博链接是：<code>http://www.weibo.com/2208752785/CjadX3vUY</code>。</p>
<p>然后为了我们是在墨客打开的，我们要在这段链接之前加上<code>moke:///link?url=</code>，变成<code>moke:///link?url=http://www.weibo.com/2208752785/CjadX3vUY</code>。</p>
<p>最后再在这之后加上 Due 添加新任务的 URL：<code>due://add?title=</code>，变成<code>due://add?title=moke:///link?url=http://www.weibo.com/2208752785/CjadX3vUY</code>。</p>
<p>最后 Open URLs 就解决问题了。</p>
<p><a href="https://workflow.is/workflows/77b7b7060a5d4ccdb09bc75958e58b80">下载该 Workflow</a></p>
<p>为什么要用墨客打开这个链接而不直接用 Due 打开网页？</p>
<div class="block-list"><ul>
<li>第一，我们的前提是你是在墨客看到的微博，然后直接在墨客里用 Workflow 进行保存，这样你再在墨客里直接打开原微博的话，因为内容是已缓存的，所以<strong>不需要加载</strong>，而网页是需要重新读取一遍内容的，等待时间偏长；</li>
<li>第二，客户端的阅读体验还是要好过 Web 端的吧；</li>
<li>第三，Web 端有广告。</li>
</ul>
</div><h4 id="toc_7">查看某位用户</h4>
<p><em>如果你有一些微博用户你<del>需要视奸</del>不能错过他们发布的任何消息，你经常要单独地查看他们的首页以及 Timeline，那么你会需要这个功能。</em></p>
<p>墨客对<del>视奸</del>单独查看某个用户的方法提供了 4 种 URL：</p>
<div class="block-list"><ul>
<li><code>moke:///user?id=</code>用户ID</li>
<li><code>moke:///user?screen_name=</code>用户昵称</li>
<li><code>moke:///user?domain=</code>用户个性域名</li>
<li><code>moke:///link?url=</code>用户主页链接</li>
</ul>
</div><p>我们看得出作者也是把能用的办法都用了。在这四种方式里，我们平时可能更惯用<code>用户昵称</code>，但是用户昵称这个东西它其实是可变的，改了以前的就失效了，所以用它其实最不稳妥。最稳妥的大概是<code>用户ID</code>，因为你注册完以后这玩意是不会变的。</p>
<p>有的人改了个性域名以后不能直接在他的主页看到他的 ID，但是还是有别的办法来查看<code>用户ID</code> 的。最简单的办法应该是右键一个人的头像，然后选择<code>在新窗口打开图片</code>，这样你会在新窗口看到 <code>http://tp3.sinaimg.cn/2569291082/180/40010956703/1</code> 这样的链接，而第一串数字，也就是 <code>2569291082</code> 就是这个人的用户 ID。</p>
<h5 id="toc_8">使用情境</h5>
<p>这个功能我感觉也不像是临时用的，也就是说，这功能不是你临时想要看谁了，就使用这个 URL Schemes 跳到那个用户的页面。</p>
<p>我感觉它更适合<del>视奸</del>“特别”关注，比如有些你悄悄关注的，或者出现在你的 Timeline 里被别人看见会引起尴尬的用户，你都可以<del>在需要的时候</del>使用这个功能来查看这个（些）人的微博。</p>
<h5 id="toc_9">具体做法</h5>
<p>在 Launch Center Pro 里设置以表格的形式设定一个动作，比如你想对我（<a href="https://weibo.com/jailbreakhum">@JailbreakHum</a>）和 <a href="http://weibo.com/jbguide/">@越狱指南</a> 特别关注，那么这条动作的 URL 应该是：</p>
<div class="blockquote"><blockquote><p>moke:///user?id=[list|@JailbreakHum=2208752785|@越狱指南=2569291082]<sup><a href="#fn:2" title="see footnote">2</a></sup></p>
</blockquote></div>
<p>这样每次你在 Launch Center Pro 里选择这个动作，就会弹出你之前设定好的列表，你就可以选择你想<del>视奸、</del><del>翻牌</del>“特别”关注的对象了。</p>
<h3 id="toc_10">搜索部分</h3>
<p>搜索我们都太熟悉，而且与查看部分不同，搜索时我们不用给出特别准确的内容，只要给出<strong>关键字</strong>即可。</p>
<p>墨客在搜索部分提供了两个 URL 分别用来搜索用户和搜索微博：</p>
<div class="block-list"><ul>
<li><code>moke:///search/statuses?query=</code>关键字</li>
<li><code>moke:///search/users?query=</code>关键字</li>
</ul>
</div><p>你把这两条 URL 放到 Launch Center Pro 里，把<code>关键字</code>替换成<code>[prompt]</code>，就可以在每次打开动作时只输入关键字，就跳转到墨客进行搜索了。</p>
<p>For 懒人和理解能力差的人（把下面的 URL 直接粘贴到 Launch Center Pro 的 URL 栏即可）：</p>
<div class="block-list"><ul>
<li><code>moke:///search/statuses?query=[prompt]</code></li>
<li><code>moke:///search/users?query=[prompt]</code></li>
</ul>
</div><h3 id="toc_11">发布部分</h3>
<p>对日常使用来说最有用的大概是发布的部分，可玩的点也比较多。</p>
<p>墨客对发布部分提供的 URL 是：</p>
<div class="block-list"><ul>
<li><code>moke://</code>账号昵称或ID(缺省使用当前账号)<code>/post?text=</code>微博内容</li>
</ul>
</div><p>它的意思是，如果你一般只使用一个微博账户，那么你只要在 Launch Centre Pro 里用<code>moke:///post?text=[prompt]</code>这个 URL 就可以了，这个 URL 将默认使用你墨客当前使用的帐号。</p>
<h4 id="toc_12">多账户发微博</h4>
<p>从这个 URL 我们也可以看出来，我们可以用 Launch Center Pro 进行不同账户发微博的操作。比如说我想在 Launch Center Pro 里选择使用 <a href="http://weibo.com/jbguide/">@越狱指南</a> 发微博还是用 <a href="https://weibo.com/jailbreakhum">@JailbreakHum</a> 发微博，可以用下面的这条 URL：</p>
<div class="blockquote"><blockquote><p>moke://[list|@JailbreakHum=2208752785|@越狱指南=2569291082]/post?text=[prompt]</p>
</blockquote></div>
<p><em>注意，里面我使用的是 ID（关于 ID 我之前已经讲过了，是新浪给你提供的数字，是不变的），（如果你不常改昵称的话）你也可以直接使用昵称。</em></p>
<p>这样每次选择这个动作，我们会看到一个列表，让我们选择发布微博的账户：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/05/2.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/05/2.png" alt="2" /></a></p>
<p><strong>不管你墨客当前使用的是哪个账户</strong>，只要你登录了这个列表里的账户，你就能够选择其中的任意账户，并在墨客里直接使用你选择的账户发送微博或继续编辑微博。</p>
<h4 id="toc_13">分享文摘</h4>
<p>我们常会在微博上分享在网上看到的文章，内容大概不外乎包括<code>标题</code>、<code>链接</code>、<code>文中金句</code>。结合 Workflow 和墨客的 URL Schemes，我做了一个 Workflow 的动作<sup><a href="#fn:3" title="see footnote">3</a></sup>，可以直接把网上看到的文章通过墨客分享出来，格式为：</p>
<div class="block-code"><pre><code>“选中部分”——`标题`：`链接`</code></pre></div>
<p><a href="https://workflow.is/workflows/76ef557bd96d424daf3536cde4062fa7">点此下载这个 Workflow</a></p>
<p>但是如果你只是想发布微博而不是必须用“墨客”来发布的话，最后可能改成分享，使用 iOS 内置的微博分享功能体验会更好，因为会减少 App 的跳转。</p>
<h4 id="toc_14">定时发送微博</h4>
<p>这一条其实和“定时阅读微博”一样，都是利用了 Due，但是定时发送微博使用 Launch Center Pro 个人感觉实用性很差，所以在这里不详述具体做法。权当给不太熟悉 URL Schemes 的朋友留个小练习，参照“定时阅读微博”的 URL，做个“定时发送微博”的动作吧。</p>
<h2 id="toc_15">墨客的 x-callback-URL</h2>
<p><em>本文重点不是介绍 x-callback-URL，所以这里对它的介绍比较简略。</em></p>
<p>虽然文档中并未提及，但是墨客本身支持一部分 x-callback-URL 的语法，即只有 x-success 的部分。</p>
<p>x-callback-URL 出自 Drafts 的开发者 Agile Tortoise，是 URL Schemes 的延展和发挥。抽象地说，一个 App 只支持 URL Schemes 的话，它只能作为一个单独的动作，或者一连串动作的起始。但当一个 App 支持 x-callback-URL，那么它就可以一连串动作的任何一个部分，使用场景更为灵活。</p>
<p>具体地说 x-callback-URL 的灵活在于，在你进行了一个设定好的操作以后，App 会根据这个操作的结果——成功、失败或者是被取消——来进行下一步的选择。它基于的语法是：</p>
<div class="block-list"><ul>
<li><code>x-success:</code>当成功时……</li>
<li><code>x-error:</code>当失败时……</li>
<li><code>x-cancel:</code>当被取消时……</li>
</ul>
</div><p>墨客对 x-callback-URL 的支持如前文所说只支持了 x-success 部分，也就是说你可以在一个动作执行<strong>成功</strong>以后默认设定执行下一个动作，使用情境我临时想了一个——来抛砖引玉——查看某人的主页成功以后跳转到扇贝单词去背单词。我来解释一下我的思路：微博这种东西属于精神零食，也就是说吃起来没饱容易失控，看一条搞笑微博用几秒，看一张搞笑 Gif 用几十秒，看完觉得不过瘾一直看看看看看不完，最后一抬头看表，过了一个半小时。这对于 Fo 了一堆段子手的人来说更是如此。所以如果你想悄悄地看一个人的状况，看完就离开微博去干正事儿，墨客的这个 x-callback-URL 就可以做到：</p>
<div class="blockquote"><blockquote><p>moke:///url?id=<code>对方的微博 ID[^ID 并非昵称，前文有写如何获取 ID。]</code>&amp;x-success={{shanbay://}}</p>
</blockquote></div>
<p>对失败(error)和取消(cancel)的情况，墨客似乎并没有涉及。虽然对于微博客户端来说，“失败”和“取消”这样的操作情境不会有很多。但是如果是支持了 x-callback-URL 的话，全套支持还是好的，不一定谁就能想出有意思的用法。我临时想了两个分别关于失败和取消两个情形的用法：</p>
<h3 id="toc_16">用户定位失败后搜索带有用户昵称的微博</h3>
<p>在 Launch Center Pro 里我们设定通过输入微博昵称来跳转到某人的主页，结果这个人改昵称了。这时候就出现了失败（error）。当这时候我们要再找这个人，最好的方法是搜索带有他/她原始昵称的微博，如果有人 at 过他/她，而他/她曾经在微博里评论过，就能在评论里找到他/她的新昵称。所以如果墨客支持 <code>x-error</code>，就能把查看用户和搜索微博的 URL 联合起来，在 Launch Center Pro 里调用剪切板，做到先查看，如果成功就直接看，如果失败就搜索微博这么个功能。</p>
<h3 id="toc_17">取消发布微博后返回 Safari</h3>
<p>前文介绍了一个在 Safari 中利用 Share sheet 从墨客分享读到的文章的 Workflow。但有时候，如果你选取的文字加上文章的题目最后超过了 140 字，你要么修改一下，要么重新找另外一句短一点的有代表性的文字。如果你希望做后者的话，就需要墨客支持 <code>x-cancel:</code>。如果墨客支持 <code>x-cancel:</code> 的话，你就可以设定让墨客在取消发布微博后跳转到 Safari——而这时候 Safari 里应该是你想要分享的那篇文章——然后重新选择一段文字。</p>
<h2 id="toc_18">图标及结语</h2>
<p>一般这种“选择触发型”的 URL Schemes 我建议使用 Launch Center Pro 而不是 Drafts 来作为启动器，Launch Center Pro 里的话有个不得不解决的问题就是图标显示。使用墨客目前在 Launch Center Pro 里是没有图标显示的，下面将给出一些解决办法。</p>
<h3 id="toc_19">如何在 Launch Center Pro 中显示墨客的图标</h3>
<p>下载墨客图标的图片然后添加到 Launch Center Pro 中：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/05/31.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/05/31.jpg" alt="3" /></a></p>
<p>获取墨客图标可以使用<a href="http://cl.ly/aqb2">这个 Workflow</a>，在 App Store 中任意软件界面通过 Share Sheet 激活这个动作，就能够获得该软件的图标。</p>
<h3 id="toc_20">结语</h3>
<p>墨客这一批的 URL Schemes 格式非常规范，规范的 URL 可玩性才高，可调教性才强。从这里也可以看出来墨客作者确实是个认真对待作品的人。</p>
<p>不过虽然这波 URL 涉及比较广泛但还是不够全面，比如（发布或查看）私信、收藏、转发、评论、列表等功能还没有支持 URL Schemes，期待日后这些部分的 URL Schemes 加入。</p>
<hr />
<div class="block-list"><ol>
<li>我也陷入过一段这个阶段，但找到了一个比较适合自己的办法跳出了这循环，日后整理了会分享出来 <a href="#fnref:1" title="return to article">↩</a></li>
<li>出现了 Launch Center Pro 里列表的用法，如果你不太清楚，正好可以使用这条 URL Schemes 来好好琢磨一下，到底是怎么个意思。由于本文不是专门写 Launch Center Pro 教程的，就不具体展开了。 <a href="#fnref:2" title="return to article">↩</a></li>
<li>该 Workflow 改编自 <a href="http://www.weibo.com/dofine">@do-fine</a> 的 Excerpt。 <a href="#fnref:3" title="return to article">↩</a></li>
</ol>
</div> ]]></content:encoded></item><item><title><![CDATA[ TalkJB 第49期: The Apple Watch ]]></title><guid>https://jbguide.me/2015/talkjb-049-the-apple-watch</guid><link>https://jbguide.me/2015/talkjb-049-the-apple-watch</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Mon, 04 May 2015 12:51:00 +0000</pubDate><content:encoded><![CDATA[ <h2 id="toc_1">本期出来讲话的人：</h2>
<div class="block-list"><ul>
<li><a href="http://www.weibo.com/jailbreakhum">@JailbreakHum</a></li>
<li><a href="http://www.weibo.com/tushyface">@geekdada</a></li>
</ul>
</div><h2 id="toc_2">关于本期播客：</h2>
<p>这期播客的未修剪原料达到了 90 分钟，我和大大讨论到了关于 Watch 我们关心的方方面面，从购买之前的心理活动，到上手的体验、心得、和已发觉的使用技巧，再到第三方 App 的简单评价。在最后我们也说了关于防水、划痕、防摔以及如何把表喷成金色……而其中最核心的一个话题可能就是，对于在智能设备上不爱折腾的人来说， 要不要买 Watch ？</p>
<h2 id="toc_3">本期提到的文章/软件：</h2>
<p>请将截图发送至 dada@jbguide.me 注明邮件标题用”Apple Watch 首屏”</p>
<h3 id="toc_4">文章部分</h3>
<div class="block-list"><ul>
<li><a href="http://www.weibo.com/3309665243/Cf6sW6UWk?type=repost#_rnd1430731743402">360 儿童卫士手表</a>……</li>
<li><a href="https://youtu.be/zW5CxZioIkk">FoneFox 的防水测试</a></li>
<li><a href="https://www.youtube.com/watch?v=Sn0ovf_-uJY">CNET 的破坏测试</a></li>
<li><a href="https://www.youtube.com/watch?v=J1Prazcy00A">Customer Report 的破坏测试</a></li>
<li><a href="http://help.apple.com/watch/">★Apple Watch 使用指南</a></li>
<li><a href="http://www.apple.com/cn/watch/guided-tours/">★Apple 官方介绍视频</a></li>
<li><a href="https://www.youtube.com/watch?v=MMF9I_9DAcs">把 Watch 喷成金色的视频</a></li>
</ul>
</div><h3 id="toc_5">软件部分</h3>
<p><a href="https://itunes.apple.com/cn/app/due-reminders-countdown-timers/id390017969?l=en&amp;mt=8">Due</a>、<a href="https://itunes.apple.com/cn/app/musixmatch/id448278467?l=en&amp;mt=8">Musixmatch</a>、<a href="https://itunes.apple.com/cn/app/timers-interval-timers-for/id963438450?l=en&amp;mt=8">Timers</a>、<a href="https://itunes.apple.com/cn/app/instapaper/id288545208?l=en&amp;mt=8">Instapaper</a>、<a href="https://itunes.apple.com/cn/app/omnifocus-2/id904071710?l=en&amp;mt=8">Omnifocus</a>、<a href="https://itunes.apple.com/cn/app/overcast-podcast-player/id888422857?l=en&amp;mt=8">Overcast</a>、<a href="https://itunes.apple.com/cn/app/workflow-powerful-automation/id915249334?l=en&amp;mt=8">Workflow</a>、<a href="https://itunes.apple.com/cn/app/deliveries-a-package-tracker/id290986013?l=en&amp;mt=8">Deliveries</a>、<a href="https://itunes.apple.com/cn/app/yahoo-weather/id628677149?l=en&amp;mt=8">Yahoo Weather</a></p>
<h2 id="toc_6">订阅TalkJB：</h2>
<div class="block-list"><ul>
<li><a href="https://jbguide-static.b0.upaiyun.com/media/talkjb/TalkJB-049.m4a">本期节目下载</a></li>
<li><a href="http://talkjb.jbguide.me/feed">通过播客源订阅</a></li>
<li><a href="http://www.lizhi.fm/#/141551">通过荔枝FM</a></li>
</ul>
</div><h2 id="toc_7">联系我们：</h2>
<div class="block-list"><ul>
<li>微博<a href="http://www.weibo.com/talkjb">@TalkJB</a></li>
</ul>
</div><div class="block-html"><div class="powerpress_player" id="powerpress_player_7544">[![Play](https://cdn.jbguide.me/wp-files/2015/03/jpg "Play")](http://media.blubrry.com/talkjb/p/cdn2.jbguide.me/media/talkjb/TalkJB-049.m4a "Play")</div>Subscribe: [iTunes](itpc://jbguide.me/feed/podcast/ "Subscribe on iTunes") | [Android](http://subscribeonandroid.com/jbguide.me/feed/podcast/ "Subscribe on Android") | [RSS](http://jbguide.me/feed/podcast/ "Subscribe via RSS")</div>
 ]]></content:encoded></item><item><title><![CDATA[ 【Workflow 教程】如何利用 Workflow 与网页互动 ]]></title><guid>https://jbguide.me/2015/how-to-use-url-in-workflow</guid><link>https://jbguide.me/2015/how-to-use-url-in-workflow</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 02 May 2015 03:44:00 +0000</pubDate><content:encoded><![CDATA[ <h2 id="toc_1">在效率软件中使用 URL 的好处</h2>
<p><a href="http://jbguide.me/2015/03/21/launcher/">写 Launcher 的这篇文章</a>提及了 URL 的一些知识，我们知道了任何可以搜索的网页服务都遵循着各自 URL 的格式。比如在谷歌和百度搜索“越狱指南”，它们的 URL 将分别是：</p>
<div class="block-list"><ul>
<li><a href="http://www.google.com/search?q=%60%E8%B6%8A%E7%8B%B1%E6%8C%87%E5%8D%97%60">http://www.google.com/search?q=%60%E8%B6%8A%E7%8B%B1%E6%8C%87%E5%8D%97%60</a></li>
<li><a href="http://www.baidu.com/s?wd=%60%E8%B6%8A%E7%8B%B1%E6%8C%87%E5%8D%97%60">http://www.baidu.com/s?wd=%60%E8%B6%8A%E7%8B%B1%E6%8C%87%E5%8D%97%60</a></li>
</ul>
</div><p>这两个 URL 里，<code>越狱指南</code>是我们原本输入到搜索框里的东西，而其它的部分则是该网站搜索服务的 URL 格式。不信你可以把 <code>http://www.baidu.com/s?wd=</code> 粘贴到你的地址栏，然后在等号后面输入你想搜索的东西试试看。</p>
<p>只要我们了解了一个网页的 URL 的格式，就可以在 Alfred、LaunchBar、Launch Center Pro、Drafts 以及 <a href="http://jbguide.me/tag/workflow/">Workflow</a> 这样的效率软件中，把 URL 中固有的部分先设定好，在搜索的时候只需要输入想搜索的内容就可以了。</p>
<p>比如我想在 iPad 上知道一个 App 发布以来的价格变化，我只要运用 Appshopper 的 URL 格式，在 LCP 中设定好一个动作，在搜索时只搜索 App 名即可：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/05/2.gif" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/05/2.gif" alt="在 Launch Center Pro 搜索 Appshopper" /></a></p>
<p>当你运用多个不同网页的搜索服务，比如说“谷歌”、“淘宝”、“优酷”的时候，这种搜索的精准和效率就可以更好地体现出来。</p>
<h2 id="toc_2">在 Workflow 中使用 URL</h2>
<p>Workflow 当然是支持这个功能的，而且由于它独特的运行方式，URL 既可以是一个完整的动作，也可以是一个动作的一环。</p>
<p>我不建议在 Workflow 里把 URL 方面的使用当作一个完整的动作，这属于工具误用。比如有人在 Workflow 里单独将百度搜索作为一个动作，功能就是输入关键词，让百度来搜索。这让我非常不解：其一，你完全可以把 Spotlight 的搜索引擎设为百度，这样最效率；其二，退一步，即便你希望用效率软件做这样的事（虽然这么做已无效率可言了），你也完全可以用 Launch Center Pro，因为 Workflow 中如果对中文不进行 encode 是没办法直接用的。</p>
<p>所以，在 Workflow 中使用 URL，最好的办法是将其作为整个动作的一环。发挥 Workflow 的价值，不要用 Workflow 做那些其它 App 也可以做，甚至其它方法更省事的事情。</p>
<h3 id="toc_3">用 Workflow 获取需求的信息，自动填入 URL</h3>
<p>在这里直接用 <code>Save App Icon</code><sup><a href="#fn:1" title="see footnote">1</a></sup> 这个 Workflow 来详述整个过程。</p>
<p><em>有能力的可以直接<a href="http://cl.ly/aqb2">下载 Workflow</a>来看是怎么回事。</em></p>
<p><code>Save App Icon</code> 这个 Workflow 的作用是直接在 App Store 里保存软件的 icon，便于以后任何形式的分享。而且并不只是保存到相机胶卷，这个 Workflow 经过简单的修改，就可以把 Icon 直接在动作中分享到你需要分享的对方。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/05/3.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/05/3.jpg" alt="整个 Workflow 截图" /></a></p>
<h4 id="toc_4">第一步：获取 App 的链接</h4>
<p><em>我强烈建议新手边操作边理解，文章里提到的整个方法绝对不难，但是如果没有基础，只看文章的话很快就头蒙了。</em></p>
<p>在这里 Workflow 里，我们主要使用的是一个叫做 <a href="http://submit.icoicon.com">icoicon</a> 的服务。它的 URL 是：</p>
<div class="blockquote"><blockquote><p><a href="http://submit.icoicon.com">http://submit.icoicon.com</a></p>
</blockquote></div>
<p>而要想从这个网站获取某个 App 的图标，必须给 icoicon 提供这个 App 的链接，只有当它的 URL 满足下面这个状态：</p>
<div class="blockquote"><blockquote><p><a href="http://submit.icoicon.com/?itunesurl=%60App%E9%93%BE%E6%8E%A5%60">http://submit.icoicon.com/?itunesurl=%60App%E9%93%BE%E6%8E%A5%60</a></p>
</blockquote></div>
<p>它才能够从中读取这个 App 的 Icon 并显示出来。</p>
<p>所以第一步，我们要获取 App 的链接，而这很简单，只要设定此 Workflow 只接受 <code>URLs</code> 类型的数据就行了。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/05/4.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/05/4.jpg" alt="4" /></a></p>
<h4 id="toc_5">第二步：将 App 的短链接拓展为原始链接</h4>
<p>在 iOS 设备上的 App Store 里，我们获取的链接都不是一个正常的原始的链接，而是被缩短过的 App Store 专用链接。缩短了的链接将数据使用一个简单的代号表示，比如说，Tweetbot 的原始链接是：</p>
<div class="blockquote"><blockquote><p><a href="https://itunes.apple.com/jp/app/tweetbot%E2%80%933-for-twitter.-elegant/id722294701">https://itunes.apple.com/jp/app/tweetbot%E2%80%933-for-twitter.-elegant/id722294701</a></p>
</blockquote></div>
<p>但通过 iOS 上的 App Store 获取的链接是缩短了的：</p>
<div class="blockquote"><blockquote><p><a href="https://appsto.re/us/TEvdR.i">https://appsto.re/us/TEvdR.i</a></p>
</blockquote></div>
<p>很多服务不能识别出这些链接的完整内容，所以会判断链接错误。在使用这种服务的时候，我们需要把短链接拓展为原始链接。</p>
<p>Workflow 提供了 <code>Expand URL</code> 这一超级实用的功能，在 Workflow 内部直接解决了这个问题。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/05/5.jpg" alt="5" /></figure></div><h4 id="toc_6">第三步：将原始链接填入 URL</h4>
<p><strong>第一步</strong>里，说到了我们需要用到 icoicon 的 URL 格式：</p>
<div class="blockquote"><blockquote><p><a href="http://submit.icoicon.com/?itunesurl=%60App%E9%93%BE%E6%8E%A5%60">http://submit.icoicon.com/?itunesurl=%60App%E9%93%BE%E6%8E%A5%60</a></p>
</blockquote></div>
<p>我们在<strong>第二步</strong>已经获得了需要的<code>App链接</code>，下一步就是把它填进这个 URL。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/05/6.jpg" alt="6" /></figure></div><p>由于 <code>http://submit.icoicon.com/?itunesurl=</code> 是固定的，所以我们直接在 URL 这个框里填上固定的这部分。然后我们使用 <code>input</code> 把上一步面获得的原始链接承接过来：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/05/7.jpg" alt="7" /></figure></div><p>当你想使用 <code>input</code> 把上一步得到的结果填入到下一步中，如果这个关系成立，就能在两步中间看到一条“线”，表示这两步的承接关系已经确立。</p>
<p>注意，URL 这一栏的内容并不完整，你需要先将 <code>http://submit.icoicon.com/?itunesurl=</code> 复制到 URL 中，然后在变量中找到 <code>Input</code>，把它放到等号后面。</p>
<h4 id="toc_7">第四步：下载网页内容</h4>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/05/8.jpg" alt="8" /></figure></div><p><code>Get Content of URLs</code> 是 Workflow 这个 App 能够牛逼的重要原因之一，用它可以在不打开网页的情况下获取网页的内容，如果网址是可下载格式的文件还可以直接下载到手机并通过 Workflow 的其它动作将其分析出来或者播放。</p>
<p>当我们把一个 App 的链接，比如说 Tweetbot 的填入到 icoicon 的 URL 中，在 Safari 里我们将看到的是这样一个网页：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/05/9.jpg" alt="9" /></figure></div><p>我们可以在这个页面直接长按图片来保存。</p>
<p>但是在这一步，我们是要用 <code>Get Content of URLs</code> 来获取 icoicon 这个页面里的图标，我们不用打开浏览器，直接让 Workflow 帮我们拿我们需要的东西。</p>
<h4 id="toc_8">第五步：从获取的结果里筛选出图标</h4>
<p>利用 <code>Get Content of URLs</code> 我们会从链接中下载一切可以下载的内容，我们要从中提取出我们需要的部分，就需要使用 Workflow 的其它操作（想看 <code>Get Content of URLs</code> 都下载了什么东西？回忆一下 <a href="http://jbguide.me/2015/02/19/what-can-workflow-do/">Content Graph</a> 的用法）。在这里，我们要的是图片，所以我们要使用 <code>Get Images from Input</code> 来从下载了的内容里获得图片。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/05/10.jpg" alt="10" /></figure></div><h4 id="toc_9">第六步：处理获取了的 Icon</h4>
<p>经过第五步，我们就获取到了想要获取的软件的 Icon。所以第六部其实是一个开放的选择，比如，你可以像我这样使用 <code>Save to Photos</code> 这个动作把它保存到相机胶卷：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/05/11.jpg" alt="11" /></figure></div><p>你也可以在下面直接用 <code>Share</code> 把这张图标发送到其它位置或者社交网站。</p>
<h3 id="toc_10">小结</h3>
<p>我在这篇文章里用 <code>Save App Icon</code><sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup>这个动作说明了 Workflow 在网页 URL 上应用的一些基本用法。读完这篇文章你应该掌握的用法有：</p>
<div class="block-list"><ul>
<li>能够注意到、识别出并利用网页的 URL 格式。</li>
<li>用 Workflow 将短链接拓展为原始链接。</li>
<li>在 Workflow 中把具体内容填写到 URL 的特定部分。</li>
<li><code>Get Content of URLs</code> 的用法。</li>
</ul>
</div><p>而且记住，不要单独地把 URL 相关的动作仅作为一个动作在 Workflow 里使用，要把它融入到一整个更大的、更适合 Workflow 这款软件的动作里。</p>
<hr />
<section class="footnotes">
<ol>
<li id="fn-1"><p>原构思来自<a href="http://www.weibo.com/u/2633691220">@P_D何国平</a>在<a href="http://jbguide.me/2014/12/18/workflow-review-what-is-workflow/">《【Workflow 测评】Workflow 是款什么软件？》</a>的评论，我进行了修改。<a href="#fnref-1" class="footnote">&#8617;</a></p></li>
</ol>
</section>
 ]]></content:encoded></item><item><title><![CDATA[ 用日记记录、观察并提高自己 ]]></title><guid>https://jbguide.me/2015/taking-notes-as-a-geek-and-improve-yourself</guid><link>https://jbguide.me/2015/taking-notes-as-a-geek-and-improve-yourself</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 25 Apr 2015 10:12:19 +0000</pubDate><content:encoded><![CDATA[ <p>我认识的人中，无论是现实中的还是网上的，仅有极个别的人有记日记的习惯，但极大多数人对“日记”两个字还停留在小学作业上的恐惧。就在我那几个记日记的朋友里，他们也并没有完全走出小学老师培养出的“我们应该对日记的态度”。这种态度是什么？是要“言之有物”，即“日记不能是流水账”。</p>
<p>但日记为什么不能是流水账？不是流水账的都该属于作文。日记它这种文体，我认为并不是<strong>必须</strong>要有一个中心去挖深写出个什么思想来。正是这种把日记当成作文的思想让人们对日记敬而远之，让人们认为日记“贵在坚持”。但凡要坚持的事，从主观上你就已经是一种消极的态度去对待它了。所以一般需要“坚持”的，看得见尽头的还好，看不见尽头的都“坚持不下来”。</p>
<p>日记应该是最自在的一种形式，你想怎么用就怎么用的形式。今天吃了什么看了什么，读了什么听了什么，都可以，且应该记到日记里。</p>
<p>你大概会想，记这些有什么意思？记这些至少有两个好处—记录和督促。</p>
<h2 id="toc_1">我的日记体系（供参考）</h2>
<p><a href="https://cdn.jbguide.me/wp-files/2015/04/3.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/04/3.png" alt="3" /></a></p>
<p>因为 <a href="https://itunes.apple.com/cn/app/day-one-journal-notes-diary/id421706526?l=en&amp;mt=8">Day One</a> 对 Markdown 支持并且有比较成熟的标签处理办法等原因，我用来记日记的 App 是 Day One，我比较多的是使用 Mac 上的 Day One，因为在 Mac 上 <a href="http://smilesoftware.com/textexpander/download.html">TextExpander</a> 的功能发挥得最完整。在这篇文章里，需要用到的 App 还会有 <a href="https://itunes.apple.com/cn/app/workflow-powerful-automation/id915249334?l=en&amp;mt=8">Workflow</a>、<a href="https://itunes.apple.com/cn/app/mr.-reader/id412874834?l=en&amp;mt=8">Mr.Reader</a>、<a href="https://itunes.apple.com/cn/app/pocket-save-articles-videos/id309601447?l=en&amp;mt=8">Pocket</a>、<a href="https://itunes.apple.com/cn/app/tally-2-quick-counter/id957912407?l=en&amp;mt=8">Tally</a> 这四个 App，Workflow 是必须的，其它的 App 你可以看了文章以后自行想办法替换成自己常用的 App。</p>
<p>在我的日记体系里，有三个的部分：</p>
<div class="block-list"><ul>
<li>一个是<strong>常规项目</strong>，用于记录我认为需要记录的日常事物，包括学习、生活、和娱乐；</li>
<li>另一个是<strong>阶段项目</strong>，用于记录能做完，或者仅仅是某个阶段才会做的事，比如说“读书”。</li>
<li>最后一部分是这一天的各类想法，想起什么写什么，想起多少写多少。这最后一部分比较像老师要求的命题作文。</li>
</ul>
</div><p>这种模板用 TextExpander 来键入是最合适的，它可以省去你每次制作出整个表格以及填写表格的说明部分，你只需要每次修改会发生变化的部分就可以了。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/04/1.gif" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/04/1.gif" alt="1" /></a></p>
<p>在这里希望大家下载<a href="http://cl.ly/amKI">我所使用的 TextExpander 的模板</a>，之后是围绕着这个模板讲解的，如果你看了这个模板就能理解我想说的话的话自然就更省力气了。</p>
<h3 id="toc_2">常规项目</h3>
<p>常规项目里，分为了阅读部分、生活部分和娱乐部分。</p>
<h4 id="toc_3">阅读部分</h4>
<p>在阅读部分，我主要记录的是我在互联网上获取的文章等信息。纸质书或者大部头书，是在“阶段项目”这个类别中。主要原因是这些书的阅读有个尽头，读完就读完了，但是互联网产生的信息是读不完的，所以它不是“阶段”性的，而是长久的。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">**阅读部分**</th><th style="text-align: left;"></th></tr></thead><tbody><tr><td style="text-align: left;">Pocket 累计未读篇数</td><td style="text-align: left;">270 篇</td></tr><tr><td style="text-align: left;">Pocket 剩余未读篇数</td><td style="text-align: left;">125 篇</td></tr><tr><td style="text-align: left;">RSS</td><td style="text-align: left;">Finished</td></tr><tr><td style="text-align: left;">好文章</td><td style="text-align: left;">[https://www.evernote.com/shard/s79/nl/8694242/65cd37d5–5893–45d0–8847–2fa01eaf08cc/](https://www.evernote.com/shard/s79/nl/8694242/65cd37d5-5893-45d0-8847-2fa01eaf08cc/)</td></tr></tbody></table>**Pocket 累计未读数**和 **Pocket 剩余未读数**</div>
<p>在这里简略地介绍一下我个人对互联网上的信息的阅读习惯：</p>
<p>在 Mr.Reader 里读标题，遇到很有兴趣的标题直接发送到 Pocket；遇到有点兴趣的标题就在 Mr.Reader 浏览一下，值得读就发到 Pocket。在 Pocket 里我有一个和 Evernote 完全一致的标签体系，这样在 Pocket 里读到好的文章，我会把它加上标签、星标、发送到 Evernote，最后通过 Pocket 分享给我认为适合阅读这篇文章的朋友（通过这种方式似乎可以分享被墙网站的文章）。</p>
<p>我不在 Mr.Reader 里阅读文章的原因主要是无法在其中建立一个文章体系来快速查找以前读过的好文章，虽然 Mr.Reader 可以加标签和搜索，但是并没有 Pocket 精于这个功能，而且对于文章的保存明显还是稍后读更好一些。另外有些网站针对 RSS 不显示全文的毛病可以用稍后读服务给治了。至于稍后读服务选择 Pocket 还是 Instapaper 那是另一个很大的话题了。总之我现在使用的是 Pocket。</p>
<p>前面说过日记的一个作用是记录，我想要知道我每天大概能认真读多少文章，就需要知道今天新添加了多少文章和读了多少文章。</p>
<p>比如说我最初使用这个方法的时候 Pocket 里有 100 篇文章，然后当天我添加了 13 篇文章（总数变成 113 篇），最后剩余的文章是 104 篇，那么我就读了 9 篇文章。第二天，我加入了 8 篇文章，累计的总数将变为 121 篇，第二天结束的时候我 Pocket 里的剩余文章是 97 篇，那么我这天肯定是读了 15 篇文章。用这种办法我可以知道在两个日期之间我读了多少文章，并且因为总数的统计时累计的，我可以知道我从开始使用这个办法以来，总共存了和读了多少文章。</p>
<p>具体操作上我们需要用到 <a href="https://itunes.apple.com/cn/app/tally-2-quick-counter/id957912407?l=en&amp;mt=8">Tally</a> 跟 <a href="https://itunes.apple.com/cn/app/workflow-powerful-automation/id915249334?l=en&amp;mt=8">Workflow</a> 这两个 App。</p>
<p><em>Tally 出自 <a href="https://itunes.apple.com/us/app/drafts-4-quickly-capture-notes/id905337691?mt=8">Drafts</a> 的开发者 Agile Tortoise 之手，是个支持 URL Schemes 的计数 App，而且发布了 Apple Watch 的 App。不过目前不支持同步。</em></p>
<p>在 Mr.Reader 中，我自定了一个 URL Schemes:<code>workflow://run-workflow?name=Count%20The%20RL&amp;input=[URL]</code></p>
<p>通过看这个 URL，就能看出来它是运行了一个名为 “Count The RL” 的 Workflow，并且 input 的信息是文章的链接。</p>
<p>这个链接作为 <code>Input</code> 发送到 “Count The RL” 这个 Workflow 以后，首先会被发送到 Pocket，下一步是通过 <code>tally2://x-callback-url/increment?title=DailyReading&amp;x-success=mrreader://</code> 这条 x-callback-URL 先在 Tally 中的 “DailyReading” 这一项中加一个数字，然后回到 Mr.Reader。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/04/2.gif" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/04/2.gif" alt="2" /></a></p>
<p><a href="https://workflow.is/workflows/f2f738cc144c4d0e990df393dc9d1c01">下载 Count The RL </a></p>
<p>由于 Tally 支持通知中心，所以你在填写这些项目的时候只要看一眼 Tally 里记录的数字就可以了。</p>
<p><strong>RSS &amp; Finished</strong></p>
<p>在 RSS 这一栏里我默认地填写了 “Finished”，一般对我来说这一项每一天都是肯定完成的。如果持续一段时间，你的 RSS 都是每天能够读完的话，你就不需要这个选项了。或者你也可以在这里有不一样的用法，比如记录下你今天的 RSS 的已读数。</p>
<p><strong>好文章</strong></p>
<p>这是把在 Pocket 里读到的好文章发送到 Evernote 的一种方式。意在记录这一天读到的很值得收藏的文章。这一项最好的记录办法当然是把读到的好文章的标题和链接记录在这个日记里了，但是由于 Markdown 的表格的灵活度有限，文章有时候多了会造成版面混乱，记录上也很麻烦。所以我选择先把我今天读的好文章在 Evernote 里形成一个列表，然后再直接把这篇 Evernote 的链接记在日记里。</p>
<p>这同样需要用到 Workflow 来完成，简单来说，这个 Workflow 做到的是以<code>[Title](Linkl)(Time)</code> 的形式从 Pocket 发送到 Evernote 里专门用来记录好文章的笔记本。如果今天还没有发送过文章，就生成一条 Evernote 笔记，如果今天已经生成过笔记了，就直接添加到该笔记里。</p>
<p><a href="https://workflow.is/workflows/9068dbd9b33740b6bf90f8dcb1796cd9">下载这个 Workflow</a></p>
<p>具体过程及办法可以参考这条 Workflow，里面料比较多，不在这里详细介绍了。但是看了之前<a href="http://jbguide.me/tag/workflow/"> Workflow 系列文章</a>的应该可以看得懂。</p>
<h4 id="toc_4">生活部分</h4>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">**生活部分**</th><th style="text-align: left;"></th></tr></thead><tbody><tr><td style="text-align: left;">跑步</td><td style="text-align: left;">5 km</td></tr><tr><td style="text-align: left;">消费</td><td style="text-align: left;">略</td></tr><tr><td style="text-align: left;">饮食</td><td style="text-align: left;">略</td></tr></tbody></table>生活部我分为跑步、消费跟饮食三部分，我的使用办法和建议是：</div>
<div class="block-list"><ul>
<li>跑步：也可以是健身。如果你每天有固定的健身时长或者跑步有固定的公里数，你可以在 Textexpander 里直接预设这些数字和单位。这样的话，你只要完成每天的锻炼，就不用再每次都输入同样的数据。</li>
<li>消费：如果你有记账的习惯，那这条可有可无，因为记账软件肯定支持日期记录。不过这里的消费你完全记一下那些你当天买的大件物，或者特别喜欢的东西。比如你买了 Apple Watch 然后写了个测评，你可以在消费里以 <code>[Apple Watch](测评链接)</code> 的形式记下来，测评不是你写的也可以。总之在这个部分你不是记账，而主要是记心情。</li>
<li>饮食：我个人在使用过程中，饮食这一栏直接是“吃了”，也就是今天吃了什么值得记一下的东西的没有，比如说跑到那个有名的店吃了顿啥，有的话最好能配上照片。如果没就写“略”。在这一项你可以搞得细一点，常规一些，比如喝了多少升（“杯”甚至“次”也行）水之类的。</li>
</ul>
</div><h4 id="toc_5">娱乐部分</h4>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">**娱乐部分**</th><th style="text-align: left;"></th></tr></thead><tbody><tr><td style="text-align: left;">听了</td><td style="text-align: left;">[See you again](https://open.spotify.com/track/7wqSzGeodspE3V6RBD5W8L)</td></tr><tr><td style="text-align: left;">看了</td><td style="text-align: left;">[错误引导的艺术](http://goo.gl/i93Z8s)</td></tr><tr><td style="text-align: left;">炉石传说</td><td style="text-align: left;">排位 16 级</td></tr></tbody></table>娱乐部分我分为三项：“听了”、“看了”和“玩了”：</div>
<div class="block-list"><ul>
<li>听了：主要是最近在听的歌，单循的歌，或者在 Spotify 发现的新的歌单。以<code>[歌（单）名](链接)</code> 的方式记录。这部分是我最看重的部分，因为每个时期人都有一些“代表性”的歌，你一听某首歌就能想到某个地方某个人，特别是我这种留学生，经常搬家，简直是一个 Playlist 一个回忆。</li>
<li>看了：电影、视频、演讲都可以放里。如果是电影的话，用 <code>[电影名](imdb链接)</code> 记录下来，最好找个海报放到 Day One 里，这样日记在 List 里会显示的很显眼。</li>
<li>玩了：这里我具体指的是游戏，游戏具体指“炉石传说”，我会记录天梯打到了多少级。当然你也可以记录其他的项目。</li>
</ul>
</div><p>除此之外你喜欢旅游的话，还可以在“娱乐”这一部分加上“去了”这一项等等。</p>
<h3 id="toc_6">阶段项目</h3>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">阶段项目</th><th style="text-align: left;">完成记录</th></tr></thead><tbody><tr><td style="text-align: left;">**读书进度**</td><td style="text-align: left;"></td></tr><tr><td style="text-align: left;">《集异璧》</td><td style="text-align: left;">一致性、完全性与几何学</td></tr><tr><td style="text-align: left;">《费马大定理》</td><td style="text-align: left;">78 页</td></tr></tbody></table>阶段项目目前主要是指我的读书进度。记录读书进度有两种办法，第一种是目录，第二种是记页数。两种办法都可以，页书更加精确，目录的记录能让你更知道你读到了哪，我在用的是记录目录。</div>
<h3 id="toc_7">作文部分</h3>
<p>如果你喜欢那种命题作文式的日记，或者你在某一天有特别想要记下来的事情和话，你大可以在上面这两个表格下面开始你的作文日记。当然这部分不写也完全没关系。不过按我的出发点，上面的两个表格，只是让你不再畏惧日记，让你意识到日记也很简单很该做。然后慢慢的，你会记一些零散的想法，开始写传统意义上“对你的写作能力和思维方式都有帮助”的那种日记。</p>
<h2 id="toc_8">结语</h2>
<p>记录自己的成长是一件很有意义的事情，因为它让你能够像一个外人一样观察你的成长。尤其是你如果有梦想有志向你吹过牛逼，你就应该知道你走了多远，你离那些还有多远。你就能够知道你应该为你之前对待时间的方式而褒赞自己还是批评自己。</p>
<p>活人里，有人记录自己的每一步、每一次键盘敲击、每一封邮件、每一次电话、会议和事项。他是 Mathematica 和 Wolfram Alpha 的创始人 Stephen Wolfram。他通过这些数据分析和提高自己。</p>
<p>但是我不喜欢这种装大尾巴狼的例子。毕竟人们会说，我又不是他我也不想成为那样的人。</p>
<p>我更想举的例子是《火影忍者》里的小李李洛克，在面对晓制造出的“凯班复制品”时，小李一行陷入苦战，让这些人重新燃起斗志的，是小李当时领悟并说出的话：</p>
<div class="blockquote"><blockquote><p>要比昨天的自己更强，比1小时前的自己强！比一分钟前的自己强！比上一秒的自己要强！</p>
</blockquote></div>
<p>在这里读这些话很苍白，但是带着背景音乐重温的话或许你会落泪。</p>
<p>但励志总是一时的冲动，对于改变自己最后还是要落到方法上。要想比昨天的自己更强，你就要知道你昨天是个什么样子。</p>
<p>开始记日记吧。</p>
 ]]></content:encoded></item><item><title><![CDATA[ 【Multidelete】批量删除软件，刷分换 Gift Card 更效率 ]]></title><guid>https://jbguide.me/2015/multidelete</guid><link>https://jbguide.me/2015/multidelete</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Thu, 02 Apr 2015 10:21:02 +0000</pubDate><content:encoded><![CDATA[ <p><a href="https://m.freemyapps.com/share/url/a70a5d6b">Freemyapps</a> 是众多下载 App 兑换积分然后用积分兑换 Gift Card 服务中的一个，却是我唯一在用的一个。原因有两点：</p>
<p><strong>第一：阔气。</strong></p>
<p>在大多数类似的服务里，下载一个 App 或游戏给的积分都很少（一般是十几或者几十，很少上百），兑换 iTunes Gift Card 要的分却奇（一般 10 刀的卡要 6000 分)。而在 <a href="https://m.freemyapps.com/share/url/a70a5d6b">Freemyapps</a> 给的积分很少低于 70，一般都在 100 以上，200、300 的情况也常有，有时还是几个高分的一块出现，给出总值将近 1000 积分的 App。</p>
<p><strong>第二：稳定</strong></p>
<p><a href="https://m.freemyapps.com/share/url/a70a5d6b">Freemyapps</a> 我知道就已经有两年了，基本的用法和奖励都没有变化，体验却在逐步升级。</p>
<p>有传言说越狱用户不能收到积分，原因似乎是 <a href="https://m.freemyapps.com/share/url/a70a5d6b">Freemyapps</a> 为了防止用户更改 UDID 而做的防护措施。但我四五台设备没有收不到积分的，倒是有极个别 App 或游戏无论如何也收不到分，但一般这样的给的积分也很少。</p>
<p>如果你收不到积分，最好查一下有没有使用代理和 VPN。</p>
<p>你如果设备多，通过 <a href="https://m.freemyapps.com/share/url/a70a5d6b">Freemyapps</a> 这种方式获取 iTunes Gift Card 确实是个不算坏的办法。但也别把它当个正事儿干，天天去刷新网页看看有没有什么更新。我是隔两周看一次，积分可观了再所有设备一起下载一起刷分。</p>
<p><strong>但</strong>这样就会出现一个问题— 一下会增加六七个不用的马上要删掉的 App。问题就出现在一个一个删除这些 App 上，四七二十八，我 4 台设备就有 28 个 App 要删，这时候唯一想要的就是个<strong>批量删除 App </strong>的功能。</p>
<h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 7、8</li>
<li>设备支持：不支持 iPad</li>
</ul>
</div><h3 id="toc_2">插件功能及设置</h3>
<p><a href="https://cdn.jbguide.me/wp-files/2015/04/11.gif" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/04/11.gif" alt="11" /></a></p>
<p>插件安装后要先在设置选项里打开，然后注销主屏幕。即可生效。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">Multidelete</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPod Touch 5</td><td style="text-align: left;">★★★★★</td></tr></tbody></table>所以这是个 [Freemyapps](https://m.freemyapps.com/share/url/a70a5d6b) 的介绍文还是插件介绍文？</div>
 ]]></content:encoded></item><item><title><![CDATA[ 如何从本地备份 8.1.2 SHSH 文件 ]]></title><guid>https://jbguide.me/2015/backup-shsh-8-1-2</guid><link>https://jbguide.me/2015/backup-shsh-8-1-2</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Mon, 30 Mar 2015 06:52:00 +0000</pubDate><content:encoded><![CDATA[ <h2 id="toc_1">前提</h2>
<div class="block-list"><ol>
<li>已经越狱</li>
<li>已经安装插件 Apple File Conduit 2 (<a href="https://cydia.saurik.com/info/com.saurik.afc2d/">bigboss</a>)</li>
<li>仅支持 A7 和 A8 设备，如下： 1. A7 Devices include: - iPhone 5S</li>
</ol>
</div><div class="block-list"><ul>
<li>iPad Air</li>
<li>iPad Mini 2 (retina)</li>
<li>iPad Mini 3</li>
</ul>
</div><div class="block-list"><ol start="2">
<li>A8 Devices include: - iPhone 6</li>
</ol>
</div><div class="block-list"><ul>
<li>iPhone 6 plus</li>
<li>iPad Air 2</li>
</ul>
</div><div class="block-html"><div class="wp-caption aligncenter" id="attachment_20374" style="width: 610px">![如果出现下面的提示即为未安装 AFC2](https://cdn.jbguide.me/wp-files/2015/03/TinyUmbrella-AFC-Error.png)如果出现下面的提示即为未安装 AFC2</div>
<div class="block-html"></div>
## 下载新版小雨伞</div>
<p><a href="http://pan.baidu.com/s/1jG25BoU">Mac / Windows</a> (注意区分64位32位。请把 iTunes 升级到最新版，以防下载64位后无法使用）</p>
<h2 id="toc_2">开始</h2>
<h3 id="toc_3">1. 打开小雨伞</h3>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/03/Screenshot_2015-03-30_at_10_30_46_PM.jpg" alt="Screenshot_2015-03-30_at_10_30_46_PM" /></figure></div><h3 id="toc_4">2. 在菜单栏中选择 Fetch Onboard</h3>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/03/Screenshot_2015-03-30_at_10_33_26_PM.jpg" alt="Screenshot_2015-03-30_at_10_33_26_PM" /></figure></div><p>Fetch Onboard 即意味着小雨伞会从以连接的设备中拖取 SHSH，而 Fetch OTA 即为从苹果服务器上获得签名。等进度条走完看到列表中有 8.1.2 的项目即可。目前 8.1.2 的 SHSH 还没有什么用处，所以备份好之后就由他放着吧。</p>
 ]]></content:encoded></item><item><title><![CDATA[ 越狱应对地域歧视零容忍 ]]></title><guid>https://jbguide.me/2015/jailbreak-should-not-tolerate-regional-discrimination</guid><link>https://jbguide.me/2015/jailbreak-should-not-tolerate-regional-discrimination</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sun, 29 Mar 2015 02:31:03 +0000</pubDate><content:encoded><![CDATA[ <p><strong>译者注：原文发布于盘古团队的<a href="http://blog.pangu.io/jailbreak-should-not-tolerate-regional-discrimination/%C2%A0">博客</a></strong></p>
<p>自从在2014年6月发布完美越狱工具盘古7以来，我们的团队就一直被一些荒诞离奇的谣言，偏见甚至是恶意抹黑所围绕。而这其中的主要来源就是Stefan Esser(@i0n1c)。作为一只由“nerd”组成的团队，我们认为浪费时间用来回应这些空穴来风实属无聊，继而期望着风波也会过去。因此我们将百分百的精力放在了开发适配iOS 8的越狱工具上，也成功地在iOS 8正式面世近一个月的时间点上为大家带来了盘古8。</p>
<p>面对这些愈发荒谬而又毫不好笑的言论，我们本可以继续熟视无睹，但最近Stefan Esser在Syscan上的讲座中，故意将越狱圈贴上了“中国”和“西方国家”两个标签，这种带有种族主义色彩的言论实属一种病态的臆想。事实上，包括comex和P0sixinja在内的许多为人所熟知的“西方”iOS黑客们，今天正在北京参加一场移动安全峰会呢。</p>
<p>显然的是，盘古团队并不能代表所有的中国越狱开发者们。所以在此我们只是想澄清一些关于我们团队的流言蜚语。</p>
<div class="blockquote"><blockquote><p>盘古团队的赞助费主要被用于越狱工具的开发</p>
</blockquote></div>
<p>此前所谓的“<a href="http://www.idownloadblog.com/2013/12/22/what-is-taiji-and-why-dont-chinese-jailbreakers-get-cydia-after-running-evasi0n7/">一百万美元</a>”的流言最早出现在evasi0n 7面世之际。</p>
<p>从我们的角度来说，我们的赞助费用主要被用于越狱工具的开发，软件测试，租赁服务器等成本。请注意的是，为了使我们的完美越狱工具发布时安全可靠，我们需要从iPhone 4s到iPhone 6 Plus，从iPad 2到iPad Air的所有型号设备，以及从iOS 7.1到8.1的所有版本分别进行测试，所以赞助费同样也被用来采购这些测试用机。但是呢，我们还是想知道这“一百万美元”到底在哪里呢，呵呵。</p>
<div class="blockquote"><blockquote><p>盘古团队从不购买漏洞，无论何时</p>
</blockquote></div>
<p>在第一个版本的盘古7所利用的一众漏洞中，我们使用了Stefan Esser在培训课程上讨论到的内核信息漏洞，而培训本身是没有保密协议的。另外，据说这个漏洞已经在小范围内有所传播。因此我们用这个漏洞也算是一众“丢卒保车”的行为，因为我们打算把自己发现的漏洞留到下一个版本越狱中。然而一经Stefan Esser的批评之后，我们立即就放出了一个全新版本的越狱工具，其中用我们自己发现的漏洞替代了此前使用的漏洞。</p>
<p>我们有足够的能力和知识继续发掘出更多的漏洞，并基于漏洞做出完美的越狱工具。同时我们非常自信我们没有任何的必要从别处购买漏洞。</p>
<div class="blockquote"><blockquote><p>盘古团队从没有使用过任何被盗/外泄企业级证书</p>
</blockquote></div>
<p>在盘古7和8中，我们使用过期的企业级证书用来启动越狱进程。令人非常欣慰的是，许多越狱爱好者将他们自己过期的企业级证书捐给我们以供使用。另一方面，一个企业级证书也就几百美元的成本，我们毫无理由为此去偷窃。</p>
<div class="blockquote"><blockquote><p>对越狱圈的回馈</p>
</blockquote></div>
<p>我们从以往的越狱工具以及越狱圈学到了很多宝贵的知识，因此我们也想将自己的发现与这个社区共享。这就是为什么我们在Syscan 2014，POC 2014以及CanSecWest 2015等会议上，都详细地介绍了我们使用的破解方法。同时，我们也在blog.pangu.io这个博客上写了很多博文，介绍诸多已经被修复iOS内核漏洞。</p>
<p>除此之外，我们还<a href="https://www.reddit.com/r/jailbreak/comments/2l1gaz/for_people_on_ios_8_can_you_help_test_the_pangu/">与Cydia之父Saurik紧密合作</a>，让Cydia能在iOS 8上运行成为现实。我们希望越狱用户能够喜欢我们的成果。</p>
<p>我们确实将越狱工具本身的代码进行模糊处理，但是主要的目的是防止这些越狱漏洞被利用，同时也是防止苹果轻易地掌握并修复这些漏洞。目前为止，这一招确实管用。</p>
<p>每一个版本的完美越狱发布，我们总会听到来自某些人的同样的无理评论。我们对浪费时间写这一篇非技术类文章而感到抱歉。在我们今后参与的安全类会议中，出于对与会者的尊重，我们只会专注于技术本身，而不是浪费他们的时间扯废话。在有些人给拿着用共用工具越狱的设备，开着培训课的同时，越狱工具开发者们则会将越狱工具免费发布出来，并免费分享细节出来。</p>
<p>是的，我们是中国人。我们对越狱圈心存感激，而且我们也很骄傲自己能是其中的一员，能为它做出自己的贡献。我们对于盘古7和盘古8全球上百万的下载量非常自豪。我们也希望越狱圈能够客观公正地看待每一件成果，而不是基于其开发者的种族，信仰，肤色或是宗教。</p>
<p>在未来，我们还将会继续致力于纯粹的科研，会尽我们最大的努力为移动安全社区做出贡献。以上，是我们对此类非议的最终回应。</p>
<p>谢谢，</p>
<p>盘古团队</p>
<p>2015年3月27日</p>
 ]]></content:encoded></item><item><title><![CDATA[ 【Allarm】一键开关所有闹钟 ]]></title><guid>https://jbguide.me/2015/allarm</guid><link>https://jbguide.me/2015/allarm</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 28 Mar 2015 10:33:05 +0000</pubDate><content:encoded><![CDATA[ <p>日本的春假<sup><a href="#fn:1" title="see footnote">1</a></sup>快要结束了。我已经两个月没有开闹钟。当我再次使用闹钟的时候我意识到一件事：我并不是每天都用闹钟，闹钟对于我来说，是一个特定时期——上课时的必需品，但在假期我一个都不用。如果有临时需要被叫醒的情境，我可以用倒计时，或者用 <a href="https://itunes.apple.com/us/app/due-reminders-countdown-timers/id390017969?mt=8">Due</a>。</p>
<p>所以整个假期，我哪个闹钟都不用，而到上课的时候，我又需要早上、中午所有的这些闹钟，所以我找到了 Allarm 这款可以直接开关所有闹钟的插件。</p>
<h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 7、8</li>
</ul>
</div><h3 id="toc_2">插件功能及设置</h3>
<p>Allarm 没有设置选项，很容易理解地，它的唯一操作界面就在时钟软件的闹钟界面：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/42.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/42.jpg" alt="4" /></a></p>
<p>没有设置选项和图标。</p>
<p>效果：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/11.gif" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/11.gif" alt="1" /></a></p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">Allarm</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★★</td></tr></tbody></table><div class="footnotes">- - - - - -</div>
<div class="block-list"><ol>
<li>日本学校一般有春、夏、秋、冬四个假期，春假最长 <a href="#fnref:1" title="return to article">↩</a></li>
</ol>
</div><div class="block-html"></div></div>
 ]]></content:encoded></item><item><title><![CDATA[ 【Hotdog】给“捡”到你手机的人一个机会 ]]></title><guid>https://jbguide.me/2015/hotdog</guid><link>https://jbguide.me/2015/hotdog</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 28 Mar 2015 09:46:29 +0000</pubDate><content:encoded><![CDATA[ <p>我在春节前几天回了一次国，回国的时候一起玩的朋友跟我说：“哎，Hum 你注意到没，年前大家用的苹果都是 iPhone 5 那些，年后大家都用 iPhone 6 跟 Plus 了。“</p>
<p>我是没注意到，不过这也许能说明，大家生活确实好了。因为如果你只用微信淘宝这些，压根没必要好几千换个手机，微信现在还支持 iOS 6 呢。</p>
<p>所以尽管我读到过国内偷盗并贩卖手机的黑色产业链猖獗的报道，我还是愿意相信，你的手机不见了的时候，并不意味着它就是被偷了。也有可能它是被换了两台好心人捡到了，但捡到你手机的人该怎么还给你呢？</p>
<h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 7、8</li>
</ul>
</div><h3 id="toc_2">插件功能及设置</h3>
<p>Hotdog 可以对锁屏上所有的文字部分进行修改，它们包括：运营商文字、”滑动以解锁“这段文字、还有解锁界面上文字的修改。</p>
<p>运营商文字和”滑动以解锁“没什么特殊的，不少插件都能做到。但解锁界面文字的修改是 Hotdog 的独家功能。</p>
<p>通过设置选项，我们可以看到，它可以对解锁界面上 <code>Touch ID or Enter Passcode</code>、<code>Emergency</code>、<code>Cancel</code>、<code>Delete</code> 这四个部分进行修改。<strong>修改完毕后要按每栏下面的按钮来使修改生效。</strong></p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/03/16.jpg" alt="1" /></figure></div><p>在这里，如果你希望捡到你手机的人联系你，你可以把 <code>Touch ID or Enter Passcode</code> 这部分修改，改为：如果您捡到手机，请联系<code>电话号码</code>。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/03/24.jpg" alt="2" /></figure></div><p>或者顽皮一些，你可以这样：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/03/34.jpg" alt="3" /></figure></div><h3 id="toc_3">打消顾忌</h3>
<p>当把解锁界面的文字设置成“如果您捡到手机，请联系<code>电话号码</code>”，就意味着别人只要一进入你的解锁界面就能看到你的电话了。这点我个人犯了点嘀咕，比如改这段文字的是个美女，别人看下她解锁界面就可以轻松知道她电话了不是吗？</p>
<p>但是我想了想实在是多心：</p>
<div class="block-list"><ol>
<li>美女怎么还会用不带 Touch ID 的 iPhone？如果你是美女且用的不带 Touch ID 你可以考虑一下身边的男性是否适合你了。</li>
<li>知道手机号也能设置黑名单呀。而且你还越狱了，黑名单设置得更彻底。</li>
<li>手机是随身物品，去饭局上厕所也不会不拿手机。</li>
<li>美女越狱？还自己玩 Cydia？还用插件？还看指南文章？</li>
</ol>
</div><p>别逗了。</p>
 ]]></content:encoded></item><item><title><![CDATA[ 【AppColorClose】让删除标记适配图标颜色 ]]></title><guid>https://jbguide.me/2015/appcolorclose</guid><link>https://jbguide.me/2015/appcolorclose</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 28 Mar 2015 07:39:35 +0000</pubDate><content:encoded><![CDATA[ <p>在《<a href="http://jbguide.me/2014/08/27/no-red-badges/">“角标”滴留下，“红色”滴不要</a>》我们介绍了两款能够让 iOS 图标右上角的角标颜色随 App 图标本身颜色更改的插件，它们分别是：BlurryBadges 和 ColorBadges。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/03/13.png" alt="1" /></figure></div><p>在 iOS 设备里，除了 App 的右上角有角标外，左上角也会有个角标——删除 App 时的叉号。</p>
<p>BlurryBadges 的作者 <a href="http://jbguide.me/tag/Poomsmart">PoomSmart</a> 也做了个插件——AppColorClose 让这个叉号，即删除标记，也随着图标颜色更改。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/03/23.jpg" alt="2" /></figure></div><h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 8</li>
</ul>
</div><h3 id="toc_2">插件功能及设置</h3>
<p>功能很简单，我也实在设想不到一个“有意义”的使用情境。而且你装了这插件，下次你删软件感觉到卡的时候，你会不由自主地想到是这个插件的问题（iOS 8 本身删软件就会卡，不越狱也会被卡到，分人分设备还分时候）。</p>
<p>但我总觉得，会有人这么想——“既然我给角标配了个色，那我也想给删除标记配个色。”</p>
<p>颜色嘛、配套嘛、统一嘛、设计嘛……</p>
<p>AppColorClose 在设置里有个选项，可以调节删除标记的颜色：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/03/33.jpg" alt="3" /></figure></div><p><strong>最小</strong>是和原生一样，白底；<strong>最大</strong>是完全适配图标颜色。</p>
 ]]></content:encoded></item><item><title><![CDATA[ 什么？未越狱设备也会泄露支付宝密码？ ]]></title><guid>https://jbguide.me/2015/url-scheme-is-vulnerable</guid><link>https://jbguide.me/2015/url-scheme-is-vulnerable</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Thu, 26 Mar 2015 06:11:11 +0000</pubDate><content:encoded><![CDATA[ <p>乌云网消息，称未越狱的设备也可能泄露支付宝密码。这一切都源于一个 iOS 对 URL Scheme 注册限制的漏洞。</p>
<div class="blockquote"><blockquote><p>在 iOS 上,一个应用可以将其自身”绑定”到一个自定义 URL Scheme 上,该 scheme 用于 从浏览器或其他应用中启动该应用。这个设计非常类似于 android 上的 broadcast 和 broadcast receiver,但远远没有 android 上的复杂。美团利用支付宝付款的整个过程如图一所示:美团 首先将订单信息通过 URL Scheme 发送给 Alipay,Alipay 收到订单信息,调用支付界面,用户 在 Alipay 上完成支付后,Alipay 再发送一个 URL Scheme 给美团,美团收到付款信息后,显 示团购成功的界面。</p>
<p>—- <a href="http://drops.wooyun.org/papers/5309">乌云网</a></p>
</blockquote></div>
<p>简单说来就是苹果没有限制多个 App 使用同一个 URL Scheme 的情况，导致第三方软件从中间劫持了支付过程（alipay://），借助一个伪装的支付宝界面骗取了用户名密码。</p>
<p>通过 App Store 分发的软件都有一个唯一的 Bundle ID，不知道为什么苹果没让 URL Scheme 也唯一。不过，你从 App Store 里下载到此类应用的可能性非常低，毕竟有那么多审核流程放在放在那里。</p>
<p><strong>真正值得担心的是那些通过各种助手安装应用的人们。</strong></p>
<p>助手老师们通过企业分发渠道分发软件，虽然也有审核的过程，但是专业性大打折扣，极有可能有漏网之鱼。<del>而且，企业证书能够自动部署应用，难说哪天你手机上就默默装上了恶意应用。</del>（注：此处有误，企业证书分发不会自动安装应用，但是能够安装未经苹果审核的应用。此方法近期受到了苹果严格管控。）</p>
 ]]></content:encoded></item><item><title><![CDATA[ 那些破解 iOS 硬件锁的门道，以及如何防范 ]]></title><guid>https://jbguide.me/2015/smash-the-ios-lock</guid><link>https://jbguide.me/2015/smash-the-ios-lock</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Wed, 25 Mar 2015 05:59:00 +0000</pubDate><content:encoded><![CDATA[ <p>iDownloadBlog 报道，一位 iOS 越狱开发者开发了一款能够绕过 iOS 的解锁穷举限制的软件，从而解开屏幕锁。而这款软件的特别之处在于，只对越狱设备有效。</p>
<div class="blockquote"><blockquote><p>Well-known iOS jailbreak developer and hacker <a href="http://twitter.com/freemanrepo/">Majd Alfhaily</a> was intrigued when read about <a href="http://www.idownloadblog.com/2015/03/18/new-ip-box-tool-unlocks-pins/" title="New ‘IP Box’ tool unlocks iPhone PINs via brute force attacks">MDSec’s black box hardware brute force</a> for iOS devices. The tool, which runs over a USB connection, tries every possible passcode combination in an attempt to unlock an iPhone secured with a simple passcode.</p>
<p>— <a href="http://www.idownloadblog.com/2015/03/23/hacker-software-brute-force-tool-jailbroken-ios/">iDownloadBlog</a></p>
</blockquote></div>
<p>一直以来，越狱都被视为 iOS 设备安全的一种妥协，脱离了苹果沙盒限制之后的插件几乎可以为所欲为。虽然 Cydia 官方源销售的插件还没有出过重大的安全问题，但是「安全」这两个字从来没有脱离过人们的视线。而最近出现的这款软件，更是让「越狱」和「不安全」划上了等号。</p>
<h2 id="toc_1">我的越狱设备还安全吗？</h2>
<p>我们简单梳理一下这款暴力破解软件的适用条件：</p>
<div class="block-list"><ol>
<li>设备必须已经越狱；</li>
<li>破解人员必须能够物理接触到设备；</li>
<li>设备必须使用弱密码（4位数字）。</li>
</ol>
</div><p>第二条基本代表了你的手机已经不属于你了，这种情况不在本文讨论范围之内。什么是弱密码？就是绝大部分人设置的锁屏密码，密码由四位数字组成，总共10000种组合。对于一款合格的穷举爆破工具，无限制下10000种组合简直就是小菜一碟。文中介绍说软件只用14个小时就能爆破出解锁密码。</p>
<p>从 iPhone 5s 开始，苹果就开始为自家的产品配备指纹解锁，然而很多人都以为有了指纹解锁后就不需要在设置强密码。其实，这时候你更应该设置强密码，因为输入密码的繁琐过程已经被简化。我觉得今后苹果应该为打开指纹解锁的设备默认开启强密码。</p>
<p>这么看来其实这款软件的战斗力还是不够强啊，经过简单设置你的设备就能够抵御穷举的攻击。</p>
<h2 id="toc_2">iOS 的设备锁其他人能解开吗？</h2>
<p>下面的内容就和这款软件没有太大关系了。</p>
<p>使用 iCloud 的人应该都知道 Find My iPhone。iOS 7 之后这个组件会让你的设备即使在 DFU 模式恢复后也能够保留之前登录的 Apple ID，意味着小偷只要不知道你 Apple ID 的密码，他手中的 iPhone 只不过是一堆零件，除了拆开卖没有太多其他用处。但是，现实中好像还是有特殊情况。</p>
<p>V2EX 社区（<a href="https://www.v2ex.com/t/118501">这里</a>和<a href="https://www.v2ex.com/t/118501">这里</a>）里，有人手机被偷，结果帐号也一起搭进去，小偷轻松解锁将设备转手，是为什么呢？要想解开设备锁，必须知道绑定帐号的邮箱和密码，下面就来一步一步说说是怎么完成的。</p>
<h3 id="toc_3">获得邮箱</h3>
<p>设备恢复之后是无法看到绑定邮箱的，所以要先拿到邮箱。苹果的维修服务一部分是由授权商完成的。它们能够接入苹果提供的特殊平台，查询设备的基本信息，而一些人员借助职务便利，为授权范围之外的人员提供查询服务。一方提供设备 UDID 之类的唯一标识另一方即可以提供对应的信息。至于这种方法能够拿到些什么信息笔者不得而知，但是你的邮箱是能够通过某些渠道获得的。</p>
<h3 id="toc_4">获得邮箱密码</h3>
<p>登录邮箱就能够收到苹果发送的验证消息，相比破解密码，这个方法明显要实际得多。目前已知的互联网服务商密码泄露事件不下10起，总共泄露的数据数目非常可观，很有可能你的邮箱就在里面。很多人从头到尾只使用一个密码，这样你的邮箱很可能就被轻易攻破了。那如果我的密码都不同呢？没关系，也有办法。很多人 iPhone 丢失后都收到了一封邮件，比如下图：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/03/qmn58eQ1PZahDB6zY8V8qk1iUTCUaAK0ibrmIB9I4UI.jpg" alt="qmn58eQ1PZahDB6zY8V8qk1iUTCUaAK0ibrmIB9I4UI" /></figure></div><p>邮件措辞与官方邮件无异，不明真相的群众以为自己的手机已经定位到了，便高兴地打开链接，输入密码，殊不知对方已经将你的设备解绑。</p>
<p>以目前苹果的防范措施，已经几乎不可能通过穷举获得一个账户的密码（去年欧美艳照门即是通过一个有缺陷的登录 API 进行穷举获得的密码，后来苹果便很快修复了此 API）。所以能够断定，不法分子肯定是已经拿到了你的账户和密码才将设备解绑。</p>
<h2 id="toc_5">我该怎么防范？</h2>
<p>上面说了这么多，怎么防范才是笔者最想说的，咱们一步一步来。说实话，下面这些方法一点都不难。</p>
<h3 id="toc_6">打开强密码</h3>
<p>如果你有指纹解锁，打开强密码吧，有了他一票解锁工具都要跪。</p>
<h3 id="toc_7">不要装盗版软件及不明来历的插件</h3>
<p>一切突破了沙盒限制的代码都可能在你的设备里做坏事，比如去年大量用户报告自己用了某助手后苹果帐号里多了很多不是自己下载的软件。相比之下，Cydia 官方源里的插件安全许多。</p>
<h3 id="toc_8">不要只使用一个密码</h3>
<p>你这是把所有鸡蛋都放在一个筐里，你不碎谁碎。如果你实在嫌烦，请打开<a href="https://support.apple.com/zh-cn/HT5570">两步验证</a>。</p>
<h3 id="toc_9">打开来自苹果的邮件时要看清楚</h3>
<p>首先，所有来自苹果的安全验证邮件是不可能进入垃圾箱的。再而，目前主流的邮箱服务都能够探测通过发信服务商发出的邮件，并特别指出，请看清楚，一级域名必须是 apple.com。这里给小白们扫下盲。以下的域名均是隶属苹果的安全域名：</p>
<div class="block-code"><pre><code>www.apple.com,
ifogot.apple.com,
id.apple.com</code></pre></div>
<p>以下都是伪造苹果的地址：</p>
<div class="block-code"><pre><code>www.applechina.com,
cn.securityapple.com,
id.applewtf.com,
chinaiphone.com</code></pre></div>
<p>不要一失足成千古恨。</p>
<h3 id="toc_10">最后，打开 iCloud</h3>
<p>不管你用不用 iCloud，都打开它，并且确认 Find My iPhone 已经正常工作。</p>
 ]]></content:encoded></item><item><title><![CDATA[ Ryan 做了个不能忍的插件，它叫 RIKER ]]></title><guid>https://jbguide.me/2015/riker</guid><link>https://jbguide.me/2015/riker</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Mon, 23 Mar 2015 07:30:36 +0000</pubDate><content:encoded><![CDATA[ <p>— “你越狱？”</p>
<p>— “我越狱。”</p>
<p>— “那你一定知道 @rpetrich。”</p>
<p>— “呵，当然。”</p>
<p>这段古龙式对话只是为了突出 <a href="http://jbguide.me/tag/Ryan%20Petrich/">Ryan Petrich</a> (<a href="https://twitter.com/rpetrich">@rpetrich</a>) 的重要程度，他是越狱圈和插件圈的巨星之一，他制作不少<a href="http://jbguide.me/tag/%E6%84%8F%E4%B9%89%E7%BA%A7%E6%8F%92%E4%BB%B6/">意义级插件</a>，如 Activator、ActionMenu、Display Recorder 都是 Ryan 的手笔。如果你装有他的个人源——<a href="http://rpetri.ch/repo/"><a href="http://rpetri.ch/repo/">http://rpetri.ch/repo/</a></a>，你会在 3 月 16 日那天更新出来一款不得（néng）了（rěn）的插件，叫做 RIKER。</p>
<div class="block-html"><div class="wp-caption aligncenter" id="attachment_20329" style="width: 610px">[![什么鬼](https://cdn.jbguide.me/wp-files/2015/03/02-e1427081018154.jpg)](https://cdn.jbguide.me/wp-files/2015/03/02-e1427081018154.jpg)什么鬼</div>
<div class="block-html"></div></div>
<h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 8</li>
<li>设备支持：仅支持大屏 iPhone</li>
</ul>
</div><h3 id="toc_2">插件功能及设置</h3>
<div class="block-html"><div class="wp-caption aligncenter" id="attachment_20325" style="width: 610px">[![插件界面](https://cdn.jbguide.me/wp-files/2015/03/12.png)](https://cdn.jbguide.me/wp-files/2015/03/12.png)插件界面</div>
<div class="block-html"></div>这插件没有设置选项，但相信你看到这个插件一眼就能看出来它是干什么使的吧。</div>
<p>没错！它就是把 Android 的三个虚拟按键移到了 iPhone 上！所以功能也是完全一样：</p>
<h4 id="toc_3">最左：返回上一级菜单</h4>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/21.gif" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/21.gif" alt="2" /></a></p>
<h4 id="toc_4">中间：回到主屏幕</h4>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/03/3.gif" alt="3" /></figure></div><h4 id="toc_5">最右：打开 Switcher</h4>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/4.gif" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/4.gif" alt="4" /></a></p>
<p><em>图中的 Switcher 效果是由于用了插件 GridSwitcher。</em></p>
<h3 id="toc_6">已知问题</h3>
<div class="block-list"><ul>
<li>会导致部分界面精度要求高的 App ，如 Launch Center Pro 界面偏移。</li>
</ul>
</div><h3 id="toc_7">小结</h3>
<p>我感觉 RIKER 不是 Ryan 的严肃作品，你看它名字就能看出来，即便你添加了 Ryan 的源头，然后在 Cydia 里搜索 RIKER，你也搜不到这插件。因为 Cydia 中 RIKER 这几个字母都不是英文字符，而是特殊字符。而且大家都知道 Cydia 里的插件列表是按字母排列的，所以你总能看到很多插件想方设法地给自己的插件起个 A 开头的名字。依此可见 Ryan 并不想让这个插件太引起大家注意，也不希望大家都来用这个插件，他在插件介绍中也写到：</p>
<div class="blockquote"><blockquote><p>Early beta/experiment.</p>
</blockquote></div>
<p>这插件的出现其实跟 Ryan 对 Activator 1.9.3<sub>beta</sub> 1的更新有关，在这个版本中，Activator 加入了 URL Schemes，确切地说是让 URL Schemes 可以调动 Activator 的动作（而且当然，Launch Center Pro 这样的效率软件可以调用这些 URL ），比如：</p>
<div class="block-list"><ul>
<li>Home 键：<code>activator://send/libactivator.system.homebutton</code></li>
<li>截屏：<code>activator://send/libactivator.system.take-screenshot</code></li>
<li>等等，其它的等正式版出现再写文章。</li>
</ul>
</div><p>所以我猜想 RIKER 的出现不过是因为 Ryan 想把这些 URL 找一个用武之地做个试验。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;"> RIKER</td><td style="text-align: left;">http://rpetri.ch/repo/</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★</td></tr></tbody></table></div>
 ]]></content:encoded></item><item><title><![CDATA[ 【Launcher 教程】从 URL Schemes 入门到用 Launcher 调用各效率软件 ]]></title><guid>https://jbguide.me/2015/launcher</guid><link>https://jbguide.me/2015/launcher</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 21 Mar 2015 10:01:00 +0000</pubDate><content:encoded><![CDATA[ <p>没想到能写这么长，所以给一个简单的目录给不同的人来选择合适自己的部分。</p>
<div class="block-list"><ul>
<li>如果你刚接触 URL Schemes，请从头开始看，会有收获。</li>
<li>如果你对 URL Schemes 有基本了解，但是刚接触 Launcher，可以从<a href="http://jbguide.me/2015/03/21/launcher/#1">基本使用</a>开始看</li>
<li>如果你以前用过和买过 Launcher，不知道新版有什么区别，可以从<a href="http://jbguide.me/2015/03/21/launcher/#2">高级功能</a>开始看。</li>
<li>如果你对上述内容都有了解，但对 Launcher 的使用思路上有些不清晰，可以从<a href="http://jbguide.me/2015/03/21/launcher/#3">使用思路</a>开始看。</li>
</ul>
</div><p>URL Schemes 是在 iOS 设备上执行效率操作的利器。在智能设备上，有一类效率工具，其功能的主要目的就是减少操作时人所受到的干扰、减少操作步骤，让你直达你需要达到的功能。而在 iOS 设备上，只有 URL Schemes 和 x-callback-URL 相关的动作才有这个能力。所以在 iOS 上，同类的软件，支持不支持 URL Schemes 和 x-callback-URL 在某种程度上，是判断它是否精良的标志。</p>
<p>这篇文章你会经常看到 URL Schemes 这个词，因为 Launcher 本质上就是一个完全基于 URL Schemes 的软件。那么 URL Schemes 是啥？你可以这么理解：在不越狱的 iOS 设备上，通过一个软件打开另一个软件乃至另一个软件的具体某个功能的办法。</p>
<p>比如，你在你 iOS 设备里的 Safari 的地址栏里输入 <code>music://</code> 然后按<code>前往</code>（英文键盘是<code>Go</code>），看看发生了什么事。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/0.gif" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/0.gif" alt="0" /></a></p>
<p>这就是 URL Schemes 的能耐。在 iOS 设备里，并非只有 Safari 才可以使用 URL Schemes，也不是只有苹果的 App 才能用 URL Schemes 来激活。理论上，每个 App 都可以让自己支持 URL Schemes，而且事实上也已经有相当一批软件支持了 URL Schemes，因此，也出现了有一些软件本身不具备独立的功能，但因为 URL Schemes，它们可以充当那些支持 URL Schemes 的启动器。</p>
<p>在能够使用 URL Schemes 的软件里，Launcher 应该是最入门的一款。它的整个软件就是个 URL Schemes 激活器，而且它只支持最传统的 URL Schemes 格式，所以如果想入门 URL Schemes，从 Launcher 开始就是个不错的选择。</p>
<h2 id="toc_1">基本使用</h2>
<p>启动器是 Launcher 的<strong>官方</strong>中文翻译，你在 Launcher 里新建了一个 App 或是一个联系人的电话，都统称为启动器。</p>
<p>Launcher 的目的是让你在通知中心里使用启动器，所以你装完这个软件首先要做的是把它添加到通知中心里。在 Launcher 这个软件中某些启动器会失效，会弹出“抱歉，无法打开指定启动器”这个提示，但是在通知中心里打开它就没问题。</p>
<h3 id="toc_2">添加内置动作</h3>
<p>添加内置动作是点击右上角的编辑按钮，然后点击绿色的加号（不要问我为什么绿色的加号下面是“添加新曲目”，到现在我都没弄清 Launcher 的中文翻译是个人还是谷歌）：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/15.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/15.jpg" alt="1" /></a></p>
<p>不购买内购的话，Launcher 只能添加 8 个启动器。而它默认就给你加了 7 个。所以你其实第一要做的不是添加，而是删除，把它默认的那些全给删光。不要想“我以后也许会有用”，当你不知道一个东西对你有用没用的时候，你要做的不是把它放在身边碍事而是把它扔一边，如果你再次意识到你需要它，你再把它拿回来。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/22.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/22.jpg" alt="删除光了清爽多了" /></a></p>
<p>按绿色加号，就能看到 Launcher 内置的启动器模板。Launcher 里有 4 种形式的启动器：联系人、网站、应用程序、自定义（URL Schemes）。这里只介绍<code>应用程序启动器</code>，懂了应用程序怎么玩的话，联系人和网站就不成问题。自定义启动器我们下个部分再提。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/32.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/32.jpg" alt="3" /></a></p>
<p>选择<code>应用程序启动器</code>后，你看到一个被划分为 4 部分的列表。</p>
<div class="block-list"><ul>
<li>第一部分<code>是赞助商</code>，也就是广告，这部分购买内购以后会消失。</li>
<li>第二部分是<code>系统 App</code>，里面是 iOS 内置的并且支持 URL Schemes 的 App。</li>
<li>第三部分是<code>第三方 App</code>，即你在 App Store 里下载的并支持 URL Schemes 的 App。</li>
<li>最后一部分是<code>所有可启动的应用程序</code>，里面囊括了 Launcher 数据库里支持 URL Schemes 的所有 App。</li>
</ul>
</div><p>拿第二部分<code>系统 App</code>来举例，你会看到有一些 App 后面有箭头而有的没有。没箭头的，代表 Launcher 只能通过这个动作启动这个 App。而有箭头的代表我们还可以进行下一步的动作。</p>
<p>比如<code>设置</code>这一项，点进去以后我们能看到设置中的所有选项。选择其中一个，比如最后一项 Wi-Fi，就会看到下面这个界面：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/41.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/41.jpg" alt="4" /></a></p>
<p>如果你不需要特别的修改，那么选择你想要的动作。根据提示操作，就建立完成了一个动作。其它的内置动作也是如此，根据菜单的引导就可以做到了，没有什么困难的。</p>
<h3 id="toc_3">修改内置动作 &amp; 添加自定义动作</h3>
<p>本质上，4 种内置的启动器都是利用了 URL Schemes，所以它们都可以用 URL Schemes 的规则来修改，添加自定义动作这一项本质上也就是填写一个你自己知道的 URL 然后取名字，配图。</p>
<p>像 Launcher 还有 Launch Center Pro 这样有内置动作的软件，并不是说它们内置了的就是全部。</p>
<p>比如 Laucnher 里有 App Store。在 Launcher 的菜单里，它只能启动 App Store，不能做出像<code>直接进入付费榜界面</code>这样更直接的操作。那么是不是 App Store 不支持那样更直接的操作呢？不是，而是 Launcher 开发者不知道，每个 App 的 URL 都不同，所以不能指望 Launcher 的开发者知道全部的 URL。不过 Launcher 的开发者给了个网站，你可以<a href="https://cromulental.appspot.com/suggest/">这个网页</a>提交 Launcher 中没有的软件和动作。</p>
<p>我们也可以修改它原始动作的 URL，以 App Store 为例：</p>
<p><strong>第一步：</strong>添加内置的 App Store 这个动作，<br />
<strong>第二步：</strong>在 Launcher 的设置选项里选择<code>高级用户设置</code>，看看里面俩开关是不是都开着的（默认是关闭的），不是的话都打开，打开以后才能直接在动作里编辑 URL：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/61.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/61.jpg" alt="6" /></a></p>
<p><strong>第三步：</strong>编辑 App Store 这个启动器，把<code>直接打开付费榜</code>这个动作的 URL替换进去：</p>
<div class="blockquote"><blockquote><p>itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewTop?genreId=36&amp;popId=30</p>
</blockquote></div>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/71.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/71.jpg" alt="7" /></a></p>
<p>你可以看到，Launcher 这个输入 URL 的地方太憋屈，而且这些 URL 你很容易看错，比如上面 App Store 付费榜的 URL 里最后的这部分<code>genreId=36&amp;popId=30</code>，里面没有“L”，都是大写的“I”。所以我建议，你在修改 URL Shemes 的时候最好避免输入，尤其是避免看着别人的 URL 输入，最好是复制粘贴。</p>
<h3 id="toc_4">为动作添加单一 Icon</h3>
<p>如果你添加的动作是直接从 Launcher 内置的动作里添加的，那么它会自动给你匹配相应软件的图片。</p>
<p>不过我们看设置选项那些动作的图片都一样，都是那个齿轮，没有辨识性，一拉开通知中心看见四个齿轮多堵得慌……所以 Launcher 还可以让你自己修改 Icon。</p>
<p>在动作编辑界面点按 Icon，就能修改 Icon：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/81.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/81.jpg" alt="8" /></a></p>
<p>自定义图标就是让你从设备上传图片，这个图片你可以在网上找。Launcher 可以对图片进行缩放，并且有圆形和圆角矩形两种外型，只要你找的图片清晰度够，作出的图标就不会太难看。</p>
<h4 id="toc_5">为动作添加复合 Icon</h4>
<p>复合 Icon 就是 Icon 右下角还有个小 Icon，用于给启动器归类。比如说你在 Launcher 里添加联系人，有的是用来打电话的有的是用来发短信的，除了硬记，咋区别？Launcher 让你在用于发短信的联系人右下角添加一个短信的图标，在用于打电话的联系人右下角放一个电话的图标。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/91.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/91.jpg" alt="9" /></a></p>
<p>但是复合 Icon 这个功能比较残，它的主图标，就是大的那个 Icon，只能是联系人图片，不能是你自定义上传的图片。所以如果你不在你通讯录添加一堆无用联系人的话，你就只能在通话或短信这方面使用复合图标了。</p>
<h2 id="toc_6">高级功能</h2>
<p>Launcher 总共有三个高级功能，这三个高级功能没有一个，而且合起来也不值 25 大洋。当然，如果你在它上一版下架前就用 12 块买过内购的话，在这一版可以恢复内购。</p>
<h3 id="toc_7">Label 显示或隐藏</h3>
<p>高级功能的第一个是隐藏 Label。Label 就是 Icon 下面的那一行字。比如说看着你手机上微博这个软件，红黄相间的图片叫 Icon，下面“微博”俩字叫 Label。</p>
<p>所以只要你花 25 块钱，就可以在通知中心插件和 Launcher 软件中，隐藏动作名啦！多么的划算！</p>
<h3 id="toc_8">Icon 大小调节</h3>
<p>我一直说，通知中心是寸土寸金，插件越不占地方越喜欢。Launcher 的另一项高级功能，就是调节 Icon 在通知中心和 Launcher 软件中的大小。它一共有三个层级：（以 iPhone 为例）最大的，可以一行显示 4 个 Icon；中间档，一行可以显示 5 个 Icon；最小的，可以一行显示 7 个 Icon：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/1234.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/1234.jpg" alt="1234" /></a></p>
<p>听我的，如果你买了高级版，一定试试放 7 个设置选项动作然后隐藏 Label。</p>
<h3 id="toc_9">取消启动器个数限制</h3>
<p>没有买高级版的用户只能用 8 个启动器，买了的话 iPhone 可以添加到 20 个，iPad 可以添加到 30 个。</p>
<p>这可以说是最值钱的高级功能了，但它值 25 块吗？今天有人来跟我说，因为 Launcher 可以把 Workflow 的动作放进去，所以 8 个肯定不够用。所以我觉得这个看理解，我不喜欢在通知中心放这么一大坨方疙瘩，我的思路是只用几个有必要且常用的，4 个比较理想，因为不会看起来缺个口，不然我其实顶多放 3 个。</p>
<h2 id="toc_10">使用思路</h2>
<p>作为一个通知中心启动器，Launcher 的优势就是“任意界面皆可调动”。同时作为一个效率软件，我们希望通过它能少做一步操作就少做一步。所以它的使用思路跟你本人的使用情境和对 URL Schemes 的掌握挂钩。</p>
<p>我个人的用法，在《<a href="http://jbguide.me/2014/10/09/how-to-use-launcher-efficiently/">如何高效地使用Launcher，如果你还没删的话</a>》里已经总结并介绍了，这里<strong>由易到难</strong>摘要介绍一下。</p>
<div class="block-list"><ol>
<li>打开设置选项，例如 Wi-Fi、键盘、用量等。这是 Launcher 的独特功能，其它 App 都没敢踩这个红线。（通过内置动作即可完成）</li>
<li>利用 URL Schemes 直接打开 Moneywiz 的支出页面，用于记账。（需要掌握 Moneywiz 的支出页面的 URL Schemes）</li>
<li>利用 Launch Center Pro 的 URL Schemes，直接调用 Launch Center Pro 中的 1Password 动作。（需要知道如何可以调动 Launch Center Pro 的动作）</li>
<li>对于一些对 URL Schemes 支持完备的软件，例如 Evernote，我们没有必要把它们的通知中心插件都开启。因为我们一般不会用到它通知中心插件的所有功能，所以只为了其中一个按钮留一整个插件实在浪费空间。所以可以仅把你用的那个功能放进 Launcher 中，节省通知中心空间。这个用法是 <a href="http://www.weibo.com/wendaohansan">@文刀漢三</a> 在<a href="http://jbguide.me/2015/03/19/talkjb-48/">TalkJB 第48期: 苹果收回成命，Launcher 满血复活</a>中提到的。</li>
</ol>
</div><h3 id="toc_11">用 Launcher 调用其它效率软件的动作</h3>
<p>这其中第三点，值得细说一下。目前知名的使用 URL Schemes 的软件，如 Launch Center Pro、Drafts、Workflow等，都有自己特殊的功能，我们对它们的要求也因为它们的特性而各不相同。所以我们用这些软件做成了功能各异的动作，来提高我们的效率。而且这些软件中的动作，都可以用 URL Schemes 来调用，也就是说，有了 Launcher，就不必再进入各自的软件界面，而是在通知中心就能直接使用这些强大的动作。</p>
<p>下面我们就分别说一下这三款软件的动作如何用 URL Schemes 来调用：</p>
<p><em>有的部分有点难，看不懂就过，你用得着了再回来琢磨。</em></p>
<h4 id="toc_12">Launch Center Pro 动作的调用办法</h4>
<p>Launch Center Pro 的每个动作，都有一个动作 ID，名为<code>Action ID</code>，它可以在<code>动作编辑页面</code>的最下方找到。调用 Launch Center Pro 里这个ID 的URL Schemes 是 <code>launch://?url=[action:Aciton ID]</code>。</p>
<p>所以如果你想在 Launcher 里使用 Launch Center Pro 的动作，只要在 URL 的编辑部分填入 <code>launch://?url=[action:Aciton ID]</code> 这个 URL。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/111.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/111.jpg" alt="11" /></a></p>
<h4 id="toc_13">Drafts 动作的调用办法</h4>
<p>Drafts 不像 Launch Center Pro 一样给每个动作都搞了个 ID。Drafts 中的动作唯一标识就是它的名字，而调用 Drafts 中动作的 URL 是<code>drafts4://x-callback-url/runAction?text=文本&amp;action=动作名</code></p>
<p>你可能会意识到 Drafts 是个文本编辑软件，Launcher 又不能输文本我用它干啥。确实，我们看到，这个 URL 里，<code>text=</code> 后面是<code>文本</code>，这个<code>文本</code>可以是具体的文字，比如说可以是越狱指南，你可以直接把<code>越狱指南</code>放到这个<code>text=</code>后面，那么你执行任何动作，发出去的文本都是预设好的<code>越狱指南</code>。</p>
<p>但是这个<code>文本</code>还可以是 <code>Parameter</code>，也就是参数。参数就让这个 URL 更加灵活，比如，你可以把剪切板的内容添加到 Drafts 的这个调用动作的 URL 中：</p>
<div class="blockquote"><blockquote><p>drafts4://x-callback-url/runAction?text=||clipboard||&amp;action=动作名</p>
</blockquote></div>
<p>那是不是我们直接把上面这个 URL 放到 Launcher 里就能直接调用了呢？不是。URL Schemes 这货让人烦人的重要一点就是标准不统一，像 Launch Center Pro、Drafts 这样的老牌 App，它们都会自动地对 URL 中的符号进行 encode，可是像 Launcher 这样的刚进入这个领域的软件，一般都得我们先手动地把符号 encode 了以后才能用，起码得对部分符号 encode。Launcher 尤其讨厌，你把符号全部 encode 了它也不认识，你就必须把 Launcher 不认识的那部分符号给 encode 了才可以。这部分符号中，就有上面 Drafts 这个动作里，调用剪切板的那个特殊符号——<code>|</code>。它 encode 以后是 <code>%7c</code>，也就是说，你如果想在 Launcher 里做一个通过 Drafts <code>直接 google 剪切板内容</code> 的动作，它的 URL 应该是这样：</p>
<div class="blockquote"><blockquote><p>drafts4://x-callback-url/runAction?text=%7c%7cclipboard%7c%7c&amp;action=Google搜索的动作名</p>
</blockquote></div>
<p>这个功能当然也可以用 Launch Center Pro 和 Workflow 做到，所以这里提到它主要是为了说明一下 URL Schemes 的编码问题。</p>
<h4 id="toc_14">Workflow 动作的调用办法</h4>
<p>Launcher 里内置了 Workflow 的动作，所以你可以直接选择 Workflow 的动作去使用。</p>
<p>如果你想知道 Workflow 调用动作的 URL，为了便于你在其它 App 中使用的话，这个 URL 是：</p>
<div class="blockquote"><blockquote><p>workflow://run-workflow?name=Workflow动作名</p>
</blockquote></div>
<h2 id="toc_15">结语</h2>
<p>没想到一个 Launcher 的教程最后带出来这么多东西，我本人还不是那么喜欢它……</p>
<p>我眼中的它的实用价值，我已经在《<a href="http://jbguide.me/2014/10/09/how-to-use-launcher-efficiently/#1">如何高效地使用Launcher</a>》这篇文章提到并且讨论过了。所以最好两篇文章结合起来看。</p>
<p>这篇文章没有谈 Launcher 的界面、设计和翻译，因为我怕吐槽起来没个完。最后这里简单说两句：你看它界面，没什么设计感，iOS 感都很弱；再看它设计，有几个软件会把设置选项里放那么多没用的干扰用户的按钮，跟 Tweetbot 的设置界面对比下；最后看看翻译，</p>
<p>所以，实用性，Launcher 是有的，但囿于 iOS 的通知中心目前糟糕的表现，比如每次拉出会刷新一下、反馈不及时、容易安错等，Launcher 的实用性也大打折扣。而在整体设计上，Launcher 难说及格。</p>
<p>其实我一直想知道的还是 Launch Center Pro 开发者知道 Launcher 满血复活以后什么感受，是不是满脑子问号然后一口老血吐键盘上。</p>
 ]]></content:encoded></item><item><title><![CDATA[ TalkJB 第48期: 苹果收回成命，Launcher 满血复活 ]]></title><guid>https://jbguide.me/2015/talkjb-48</guid><link>https://jbguide.me/2015/talkjb-48</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Fri, 20 Mar 2015 06:13:21 +0000</pubDate><content:encoded><![CDATA[ <p>Laucnher 时隔 6 个月以后一点儿功能没砍就满血复活。是苹果越来越让人看不懂，还是苹果可能也许就没搞懂通知中心插件到底该是什么样？</p>
<h2 id="toc_1">本期出来讲话的人：</h2>
<div class="block-list"><ul>
<li><a href="http://www.weibo.com/jailbreakhum">@JailbreakHum</a></li>
<li><a href="http://www.weibo.com/wendaohansan">@文刀漢三</a></li>
</ul>
</div><h2 id="toc_2">关于本期播客：</h2>
<p>Launcher 复活不光是件好事还是件奇事。因为 Launcher 踩了苹果两条不成文的红线：</p>
<div class="block-list"><ol>
<li>不允许在通知中心放可以打开其它 App 的插件。具有这个功能的 Paste+ 很早就因此下架。</li>
<li>不允许使用系统设置内选项的 URL Schemes。所以你现在手里的 Launch Center Pro 也好 Drafts 也好 Workflow 也好，能耐再大也不敢碰系统设置。</li>
</ol>
</div><p>可奇就奇在，两样事都做的 Launcher 在被苹果枪毙一个月以后又复活了，而且上面俩功能一个没砍。</p>
<p>后来我俩没啥可说了，黑了黑 John Gruber 跟 Federico Viticci，又聊了聊 <a href="http://blackfoginteractive.com/Schemes">Schemes</a> 跟 <a href="http://ulyssesapp.com">Ulysses</a>，你的米够多的话，可以把后面这俩软件买了，反正我俩没买。</p>
<h2 id="toc_3">纠错：</h2>
<p>Siri 可以查汇率，但是不能问它“100 USD to CNY”这样的问题。是我高估了 Siri 的智商……</p>
<h2 id="toc_4">提到的文章或视频：</h2>
<div class="block-list"><ul>
<li><a href="https://www.youtube.com/watch?v=5Ti0KdXrgSE">iOS 8 vs iOS 3</a></li>
</ul>
</div><h2 id="toc_5">订阅TalkJB：</h2>
<div class="block-list"><ul>
<li><a href="https://jbguide-static.b0.upaiyun.com/media/talkjb/TalkJB-048.m4a">本期节目下载</a></li>
<li><a href="http://talkjb.jbguide.me/feed">通过播客源订阅</a></li>
<li><a href="http://www.lizhi.fm/#/141551">通过荔枝FM</a></li>
</ul>
</div><h2 id="toc_6">联系我们：</h2>
<div class="block-list"><ul>
<li>微博<a href="http://www.weibo.com/talkjb">@TalkJB</a></li>
</ul>
</div><div class="block-html"><div class="powerpress_player" id="powerpress_player_7542">[![Play](https://cdn.jbguide.me/wp-files/2015/03/jpg "Play")](http://media.blubrry.com/talkjb/p/cdn2.jbguide.me/media/talkjb/TalkJB-048.m4a "Play")</div>Subscribe: [iTunes](itpc://jbguide.me/feed/podcast/ "Subscribe on iTunes") | [Android](http://subscribeonandroid.com/jbguide.me/feed/podcast/ "Subscribe on Android") | [RSS](http://jbguide.me/feed/podcast/ "Subscribe via RSS")</div>
 ]]></content:encoded></item><item><title><![CDATA[ 【QuickSiri】比快更快，用 Activator 直接激活具体的 Siri 命令 ]]></title><guid>https://jbguide.me/2015/quicksiri</guid><link>https://jbguide.me/2015/quicksiri</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Thu, 19 Mar 2015 11:35:57 +0000</pubDate><content:encoded><![CDATA[ <p>我在《<a href="http://jbguide.me/2015/03/17/untethered-siri/">【UntetheredHeySiri】有了它 Siri 才圆满</a>》介绍了 UntetherdheySiri 的用法，相信读完这篇文章后让你对 Siri 又重新思考了一番。苹果并没有放弃 Siri，很多功能通过 Siri 来实现要比通过打开软件操作快捷的多。比如，识别一下影片里的插曲、查查汇率、问问天气、切换个播放列表等等。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/0.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/0.jpg" alt="使用 Siri 查看汇率" /></a></p>
<p>不过有时候跟个手机说话总还是有点怪怪的，并不是所有场合都适合做这样的事。比如我在电车上就不好意思用语音来控制 Siri。而且，通过语音，有时候还不够快，起码，不如一个 Activator 手势快。</p>
<p>Quick Siri 就是一个可以通过 Activator 手势来调用 Siri 的插件，Siri 的本质就是把语音识别出来然后转化为文本。Quick Siri 则省下了转化的那一步。它让你把对 Siri 的话直接以文本的形式储存起来，然后通过 Activator 动作直接调用。</p>
<h2 id="toc_1">插件使用要求</h2>
<div class="block-list"><ul>
<li>使用版本：iOS 8</li>
</ul>
</div><h2 id="toc_2">插件功能及设置</h2>
<p>下载的时候要注意，Modmyi 源跟 Bigboss 源都有个叫 QuickSiri 的插件，我们要下载的是 Bigboss 源的。你也可以根据 Cydia 搜索界面的图标来判断，Bigboss 源的 QuickSiri 的图标是个小话筒。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/14.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/14.jpg" alt="选图标是话筒的那个" /></a></p>
<h3 id="toc_3">在设置选项里设置命令或问题</h3>
<p>安装完毕后，你可以在设置选项里找到 QuickSiri 这个选项，然后可以在里面输入 5 个常用的命令或者问题：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/21.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/21.jpg" alt="2" /></a></p>
<p>设置命令或问题是使用 QuickSiri 的关键。首先，Siri 对 iOS 的内置软件和功能可以说是无所不能。其次，QuickSiri 就给了5个，没法增多。所以你既然用了快捷的办法，就要尽量直达目标。</p>
<p>举个例子，比如放音乐，你最好不要用 QuickSiri 去打开“音乐”这个软件。要打开就具体到播放列表、具体到专辑或者音乐人。最次的，你也要让它开始“播放”。因为如果你用 Siri 打开完音乐还是要点来点去，那不如就直接用手了。</p>
<p>注意这5个问题可以设定任何你使用的语言，无论你的 Siri 或者系统使用的是什么语言，Siri 都会给你提供对应的回答。最简单的，你可以用“What does the fox say”跟“狐狸怎么叫”这两个问题来试试。</p>
<p>5个问题数量有限，所以利用好这5个问题取决于你对 Siri 的熟悉程度。你当然可以给这五个位置设置一些“来唱个歌”、“说句东北话”这样的命令。但设置一些实用的提高效率的命令不是更好？</p>
<h3 id="toc_4">在 Activator 里设置对应手势</h3>
<p>设置好命令以后，就可以选择 Activator 手势进行激活。在这里顺道儿介绍一下 Activator 的菜单功能，即，你可以把一组功能放到一个菜单里，然后用一个手势来激活这个菜单，然后挑选其中的功能。</p>
<p>Activator 虽然给了各种各样的手势，但真正能用单手操作还能在任何软件下都能用还不引起误操作的太少了。所以把一些功能放进菜单然后用一个手势激活这个菜单对我来说非常实用。</p>
<p>在 Activator 里制作菜单，首先要在设置选项找到 Activator，进入 Activator 的界面后第一级菜单里就可以找到<code>菜单</code>这个选项：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/123.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/123.jpg" alt="123" /></a></p>
<p>进去以后看到添加菜单，点它起一个菜单名，比如我们这里要起的是 <code>QuickSiri</code>。然后进去，按添加动作，进入下个界面后翻到最下面，找到 QuickSiri：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/234.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/234.jpg" alt="234" /></a></p>
<p>菜单选项每次只能添加一个，所以你需要一个一个地把 QuickSiri 的命令添加到菜单里。这些命令是按照设置选项里你自己设定好的顺序排列的，它无法显示成命令的文本，只能以这种方法显示，所以你要记得哪个是哪个。</p>
<p>最后你需要给整个菜单指定个手势：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/51.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/51.jpg" alt="5" /></a></p>
<p>首先选择任意位置，然后选择一个你觉得舒服的手势，就会发现 QuickSiri 在很靠前的位置，你选择它就能把这个菜单分配到你选好的手势了。</p>
<h3 id="toc_5">选择手势的一个技巧</h3>
<p>前面说了，真正在任何时候都能用而且不引起误操作的手势很少。但往往我们也并不需要这么苛刻的条件。举例来说，我上篇文章也提到，我会用 Siri 来在我听音乐的时候切换播放列表。这里有个细节，就是我听音乐我就会戴耳机。那么我就应该用耳机上的那些按钮相关联的手势去激活 QuickSiri 里切换播放列表的命令。</p>
<p>总之，你要做的事未必都是“任何情况下”都要做的，认识到自己仅在什么情境下才会做什么事是提高效率很重要的一步。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">Quick Siri</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★★</td></tr></tbody></table></div>
 ]]></content:encoded></item><item><title><![CDATA[ 【UntetheredHeySiri】有了它 Siri 才圆满 ]]></title><guid>https://jbguide.me/2015/untethered-siri</guid><link>https://jbguide.me/2015/untethered-siri</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Tue, 17 Mar 2015 09:38:46 +0000</pubDate><content:encoded><![CDATA[ <p>Siri 这个东西大多数人用得并不多，原因不外乎它还不那么智能、那么好用，以及我们还不太习惯跟机器说话。能用手完成的操作我们大概都会用手完成，不能用手完成的时候我们大概也很少去想用其它的方式去完成。</p>
<p><em>省略千字对 Siri 的吐槽。</em></p>
<p>我个人有几个情境可以说必然用到 Siri，确切地说，要用到 Untethered Siri 这个插件：</p>
<h3 id="toc_1">换歌听</h3>
<p>我个人出门以后主要用来阅读的是 iPad，iPhone 用来放音乐助兴，所以耳机一直都在耳朵里。而且我（相信大多数人也一样）在不同的状态下要听不同的音乐，在路上走就听欢快些节奏感强些的，坐到电车里阅读或者写什么的时候就会换成柔和安静点的钢琴曲。所以相对的会有两个播放列表。</p>
<p>在路上的时候并不总是有空余的手，有时候就算有空余的手我也懒得用，因为通过 Siri 切换播放列表只是一句话的事，比把手机掏出来、停下来、低头点点按按要有效率得多。而且对空气说两句话就能换音乐感觉也是很爽的。</p>
<p>所以在更换播放列表的时候，我大多都会通过 Siri 来切换。</p>
<h3 id="toc_2">闹钟</h3>
<p>我偶尔会有这种情况：睡得迷迷糊糊的时候意识到闹钟还没定。</p>
<p>这很扫兴，因为你已经快进入状态了，而且你的眼睛已经适应黑暗了。如果这时候你把手机拿出来，定个闹钟，那你的第一感觉一定是刺眼，然后可能还会看到条短信微信什么的，回复完困意也减少了。</p>
<p>这时候用 Siri 定闹钟是特别爽的，你甚至连身子都不用翻，就动动嘴：</p>
<div class="block-list"><ul>
<li>“Hey, Siri!”</li>
<li>“明天早上7点叫我起床。”</li>
</ul>
</div><p>闹钟就定好了。</p>
<h3 id="toc_3">找手机</h3>
<p>手机放到杂物里找不到的情况下并不少见。一般来说有两种情况，一种是放得深的，昨天睡觉前把准备换洗的衣服都放到箱子里了，外衣口袋里放着 iPhone，但外衣最先脱所以放在最下面。这时候叫 Siri 是没啥用的。</p>
<p>但是，比如说你只是把 iPhone 放到了几本书下面之类的。喊一声 “Hey, Siri!” 就能找到它。如果 Siri 回答完你还没找到，你可以要求她“放一首歌。”歌曲结束前你怎么也找得到了。</p>
<p>前一段时间有个收费插件，号称识别拍手声来定位手机。蛋疼得很嘛，装了 Untethered Siri 的话，声控找手机只是最弱的一项功能啦。</p>
<h3 id="toc_4">开车</h3>
<p>我本人不开车，所以例子可能不恰当。不过我觉得 Siri 在开车的时候应该是司机不错的帮手。因为你的视线和双手都不该离开它们应在的地方。确切地说，是注意力就不应该分散。所以本来想举开车用 Siri 打电话的例子，想想这样做也不对，所以可以改成开车发短信。比如通知对方“快到了，正在开车”这样的信息。但这个前提是你普通话要标准，否则的话你可能语音完还得再看看有没有错字，有的话还得改改，更危险了。</p>
<h3 id="toc_5">插件设置</h3>
<p>安装完插件后，需要在<code>设置-通用-Siri</code>打开允许<code>“嘿Siri”</code>的开关。并且你在下面会看到 <code>Always</code> 这个选项，选择它。不使用这个插件是没有这个选项的。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/IMG_0297.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/IMG_0297.jpg" alt="IMG_0297" /></a></p>
<h3 id="toc_6">结语</h3>
<p>因为 Siri 只有在充电状态时才能够通过 “Hey, Siri!” 来唤醒，而上述情况大多都是不在充电状态的。而要做到不充电还能语音唤醒 Siri，就需要用 Untethered Siri 了。</p>
<p>耗电量上，我没有觉得用之前和之后有什么异常。但是要注意的是，Siri 运行完以后，它要等一会儿才会自动锁屏，所以手机如果是在口袋或者包里，容易误操作。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">UntetheredHeySiri</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★★</td></tr></tbody></table>###</div>
 ]]></content:encoded></item><item><title><![CDATA[ 【TypeTab】让 Safari 打开新标签页后直接激活输入框 ]]></title><guid>https://jbguide.me/2015/typetab</guid><link>https://jbguide.me/2015/typetab</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Mon, 16 Mar 2015 12:46:00 +0000</pubDate><content:encoded><![CDATA[ <h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 7、8</li>
</ul>
</div><h3 id="toc_2">插件功能及设置</h3>
<p>当我们在 Safari 开启一个新的标签页的时候，一般不外乎这几件事：</p>
<div class="block-list"><ol>
<li>我们要搜索个什么东西，要在输入框输入搜索的内容</li>
<li>我们要打开一个常用网站或书签页</li>
<li>我们要粘进去一个网址</li>
<li>我们要输入一个网址</li>
</ol>
</div><p>在上面几件事中，有三样都要用到输入框。但是在原生的 iOS 系统中，开启一个新的标签后，我们需要再多点一下输入框才可以执行输入或者粘贴的动作。如果每次打开新标签页都能直接激活输入框，好让我们直接着眼于键盘开始打字，效率岂不是提高许多？</p>
<p>TypeTab 就是满足这个需求的插件，它有两个模式：</p>
<p>第一个是当你在 Safari 里什么网页都未打开的情况下打开 Safari，它会自动开启新标签页，这个时候会直接激活输入框：</p>
<p>第二个就是前面所说的在打开新标签页时就能够自动地激活输入框：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/2.gif" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/2.gif" alt="2" /></a></p>
<p>而且这个插件页并不会影响你直接点击书签页或者常用网站，只要你的收藏页和常用网站加起来不到5行，键盘就挡不住它们。也就是说，即便是键盘弹出的情况下，你也可以直接选择你的书签页来浏览。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">TypeTab</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 5c</td><td style="text-align: left;">★★★★★</td></tr></tbody></table></div>
 ]]></content:encoded></item><item><title><![CDATA[ 新版小雨伞发布，降级重新成为可能！ ]]></title><guid>https://jbguide.me/2015/tinyumrella</guid><link>https://jbguide.me/2015/tinyumrella</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Mon, 16 Mar 2015 02:05:00 +0000</pubDate><content:encoded><![CDATA[ <h3 id="toc_1">什么是 SHSH？</h3>
<p>现在已经不怎么提 SHSH 这个东西了，过去热衷于它的人也并不算多。</p>
<p>SHSH 是什么呢？简单来说就是它是能让你手机降级的东西。它出现的需求是这样的：</p>
<p>一般来说苹果在升级 iOS 系统后都会封堵漏洞，导致最新版本的系统，如现在的 iOS 8.2 不能正常越狱。然后在一段时间以后，苹果就会关闭老系统的验证。当设备升级到最新系统，而老系统又被关闭验证以后，你就无法把手机降级到可以越狱的那个版本了。</p>
<p>所以不手欠升级不就好了吗？问题是，升级并不是都因为“手欠”。有的新手看“论坛大神”的越狱教程装了一堆盗版源，搜一个插件同名的都有五六个，设备很难保证稳定，不得不升级；也有那种靠自己的能力无法排查出问题插件或插件冲突的情况，也不得不升级以图稳定；新系统对喜欢折腾的人有莫大的吸引力，越狱也是，所以也有人永远在越狱还是最新系统中纠结……</p>
<p>无论如何，留有后路总是不错的。SHSH 就是那些升了级还想越狱的人的后路。在以前，只要你有某个版本的 SHSH，你就能把你的设备在任何时候恢复到那个版本。所以一度有“卖设备先问有没有 SHSH，有 SHSH 的设备比没 SHSH 的设备值钱”的笑谈。</p>
<h3 id="toc_2">小雨伞——Tinyumbrella</h3>
<p>保存 SHSH 的这个工具，叫做 Tinyumbrella，依赖于 JAVA。在 iOS 5 的时候，苹果搞明白了人们是怎么利用 SHSH 降级的，于是 Tinyumbrella 这个工具的实用价值一下几乎荡然无存——它依然可以保存 SHSH，但我们保存 SHSH 也不能降级了。自然也不用提后面的 64 bit 的设备了。</p>
<p>所以一时间没有人再去谈论 SHSH，一般的论调都是，“保存了也用不了，瞎折腾。”云云。但你可以说，这些人功课做得并不足，因为越狱开发者 <a href="https://twitter.com/iH8sn0w">@iH8sn0w</a> 在 Twitter 上说过：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/11.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/11.png" alt="1" /></a></p>
<p>他说这句话当然也不是没有底气的，因为他已经在开发新的降级方法的工作：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/Screen-Shot-2015-03-16-at-6.28.32-PM.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/Screen-Shot-2015-03-16-at-6.28.32-PM.png" alt="Screen Shot 2015-03-16 at 6.28.32 PM" /></a></p>
<h3 id="toc_3">新版小雨伞</h3>
<p>3月14日 @notcom 发布了新版小雨伞，但仍是 Beta 版。它的界面很简单，按键只有一个：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/31.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/31.jpg" alt="3" /></a></p>
<p>插上设备就会自动地从 Apple 获取可获得的 SHSH 文件，并且对 64bit 的设备有效。</p>
<p>新版小雨伞只能从 Apple 获取 SHSH，不能通过其它方式。但好处是，它可以获得 OTA<a href="#fn:1" title="see footnote">[1]</a> 升级的 SHSH。上图里能看到很多 Type 为 OTA 的 SHSH，原因是里面包含了从各个 iOS 8（比如，iOS 8.0.1、iOS 8.0.2……） 升级到 iOS 8.2 所需的 OTA SHSH。</p>
<p>另外，开发者还提示大家，尚停留在 iOS 8.1.2 的人不要升级，他有办法从设备中提取 SHSH：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/4.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/4.png" alt="4" /></a></p>
<p>新版的小雨伞能让降级复活吗？答案可能是乐观的。这里是 iDB 的 Jeff 跟小雨伞的开发者的一段对话：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/5.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/5.png" alt="5" /></a></p>
<h3 id="toc_4">一些注意</h3>
<h4 id="toc_5">老的 SHSH 文件的移动</h4>
<p>如果你的电脑同时安装有新旧两个版本的 SHSH，那么打开旧版本的 SHSH 就会自动地提示你是否把旧的文件格式转换为新的文件格式并保存到新的路径。</p>
<p>新的 SHSH 文件的路径是：</p>
<div class="blockquote"><blockquote><p>Mac: ~/.tu/.shsh<br />
 Windows: C:\Users\Username.tu.shsh</p>
</blockquote></div>
<p>*新的 SHSH 文件不再是一个一个的散件，而是合并到了一个文件里。</p>
<h4 id="toc_6">软件仍属测试版</h4>
<p>测试版的意思就是，作者本人也不能保证目前软件的质量，所以如果你遇到问题，如果操作正确，可能就是软件的问题。不要着急，等待正式版即可。</p>
<h3 id="toc_7">工具下载</h3>
<p><em>工具已经转到百度盘。</em></p>
<p><em>越狱方面的工具都可以在主页左上角的<code>越狱工具</code>选项里找到。</em></p>
<div class="block-list"><ul>
<li>最新小雨伞<a href="http://pan.baidu.com/s/1c0lM4G4">Mac 版</a></li>
<li>最新小雨伞<a href="http://pan.baidu.com/s/1sCg6U">Windows 64位</a></li>
<li>最新小雨伞<a href="http://pan.baidu.com/s/1dD6dpSH">Windows 32位</a></li>
</ul>
</div><div class="block-html"><div class="footnotes">- - - - - -</div>
<div class="block-list"><ol>
<li>OTA 是 iOS 设备升级的一种方式，iOS 可以通过电脑和手机两种方式升级系统，OTA 是后者。 <a href="#fnref:1" title="return to article"> ↩</a></li>
</ol>
</div><div class="block-html"></div></div>
 ]]></content:encoded></item><item><title><![CDATA[ 【AlbumShot】哪里来的截图就存到哪个相册 ]]></title><guid>https://jbguide.me/2015/albumshot</guid><link>https://jbguide.me/2015/albumshot</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 14 Mar 2015 06:24:44 +0000</pubDate><content:encoded><![CDATA[ <h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 7、8</li>
</ul>
</div><h3 id="toc_2">使用情境及功能</h3>
<p>屏幕截图是智能设备一个很重要也很常用的功能，很多时候一张截图可以传达很多语言难以表达的信息。</p>
<p>比如打游戏破了个记录，想跟不在身边的朋友们炫耀炫耀，没有什么比截图更快而且更具有说服力的了；想跟远方的家人说一下自己这里近几天的天气情况，一个天气的截图发过去就说明问题……</p>
<p>但是 iOS 在处理截图上一直都不太理想——它们和照片混在一起，导致截图本身在当时使用过后就变成了相册里的累赘，很难重复利用（因为下次就找不到了），而且有时候还成了我们快速找到照片的阻碍。</p>
<p>有的 App，比如 <a href="https://itunes.apple.com/us/app/workflow-powerful-automation/id915249334?mt=8">Workflow</a> 和 <a href="https://itunes.apple.com/us/app/screeny-delete-screenshots/id941121450?mt=8">Screeny</a> 可以批量地删除截图（看<a href="http://jbguide.me/2015/02/19/what-can-workflow-do/">这篇 Workflow 教程</a>能够帮你作出批量删除截图的 Workflow）；有的 App，比如 <a href="https://itunes.apple.com/us/app/screenshot-journal/id515287854?mt=8">Screenshot Journal</a>，可以给截图加标签以分类。它们功能都很好，但是还有款免费插件，可以根据被截图的软件，为截图生成相册。</p>
<p>比如，当在 Duet 这款游戏截的图，系统就会生成一个 <code>Duet</code> 的相册，然后把这张截图放到这张相册里。同理，在 App Store 里的截图也会被放在 <code>App Store</code> 这个相册中。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/13.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/13.jpg" alt="1" /></a></p>
<p>这就保证了一些重要截图可以被循环利用。对于写测评或是做 Beta 软件测试员的人来说，它可以让你同时关注多款软件，对多款被测软件的细节进行截图而不至于混乱。</p>
<h3 id="toc_3">不足</h3>
<div class="block-list"><ul>
<li>主屏截图没有专门的相册生成，否则我们可以隔一段时间记录一下首屏，看看壁纸跟软件排列的变化。</li>
<li>对插件安装以前的截图不进行分类。</li>
<li>截图仍然会保留在相机胶卷中，而不是存在且只存在于其专属的相册里。</li>
</ul>
</div><div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">AlbumShot</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★★</td></tr></tbody></table></div>
 ]]></content:encoded></item><item><title><![CDATA[ 【Workflow 教程】如何使用 Workflow 中关于文章的那些动作 ]]></title><guid>https://jbguide.me/2015/how-to-use-the-new-articles-actions-in-workflow</guid><link>https://jbguide.me/2015/how-to-use-the-new-articles-actions-in-workflow</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Tue, 03 Mar 2015 01:49:00 +0000</pubDate><content:encoded><![CDATA[ <p>Workflow 在 1.1.1 版的更新中添加了两项功能。一项是内置了 GIF 服务 Giphy，这个熟悉 Launch Center Pro 的都应该很了解了。相对于 Workflow ，我认为 Launch Center Pro 更适合 Giphy 这个服务，所以我并不打算多提它。这篇文章要说的是另一项更新——关于 <code>Articles（文章）</code> 的一套动作。</p>
<h2 id="toc_1">用新动作在 Safari 里做文摘</h2>
<p>每天你都会在电子设备上阅读很多东西，保留其中你认为有价值的部分的一个办法是摘抄。而如果你要把摘抄的内容统一起来放在一起，你就要考虑它的整洁度，也就是格式。</p>
<p>在电子设备上，最简单的让摘抄内容的格式统一起来的办法应该是用 Markdown：</p>
<p><a href="%E6%96%87%E7%AB%A0%E9%93%BE%E6%8E%A5">文章名称</a>: &gt; 引用文本 日期</p>
<p>这样出来的结果就会是：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/1.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/1.jpg" alt="1" /></a></p>
<p>有出处，点出处可以看到原文。引用文本有层级显示。最后还有摘抄的日期。</p>
<p>但是，在 Workflow 出现之前，这个过程是很繁琐的：你需要获取文章的名称、链接，还要复制好喜欢的内容，最后还要加上日期。但因为你每一次只能从网页粘贴到 Evernote 一项内容，所以你要来回选中复制再粘贴，还要考虑格式（字体字号）问题，实在太痛苦。</p>
<p>现如今 Workflow 更新到了 1.1.1 版，添加了一套关于网页文章的动作——<code>Articles</code>，让这整个步骤变得极其容易。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/1.5.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/1.5.jpg" alt="1.5" /></a></p>
<h2 id="toc_2">仅能在 Safari 中做摘抄的办法</h2>
<p>用 Articles 的功能做摘抄虽然简单，但是它的能力范围有限。它只能作用在 Safari 的网页里，对稍后读软件（ Pocket / Instapaper）和 RSS 软件都不起作用。</p>
<h3 id="toc_3">动作目的</h3>
<p><em>对每个动作，你都要首先想清楚，你想做什么。想得越具体，你的目标就越明确，就越容易成功。</em></p>
<p>在这个动作里，我们首先要用 Workflow Type <a href="#fn:1" title="see footnote">[1]</a>去获取文章。然后我们要获得4个变量<a href="#fn:2" title="see footnote">[2]</a>：文章的标题、链接，你想摘抄的文本，还有日期。</p>
<p>最后我们要把它们以下面的 Markdown 的格式放到一个 Text 文本框里：</p>
<p><a href="%E6%96%87%E7%AB%A0%E9%93%BE%E6%8E%A5">文章名称</a>: &gt; 引用文本 日期</p>
<p>然后我们要把 Markdown 的内容转化为 HTML，最后把转化好的内容发送到 Evernote。</p>
<p>接下来一步一步来做。</p>
<h3 id="toc_4">用 Workflow 获取文章</h3>
<p>首先要把这个 Workflow 的类型设置为 <code>Action Extension</code>，并且仅接受 <code>Articles</code> 这个类型的内容：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/2.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/2.jpg" alt="2" /></a></p>
<h3 id="toc_5">获取文章的名称、链接及引用文本</h3>
<p>Workflow 1.1.1 版的更新中，添加了 <code>Get Details of Articles</code> 这个动作。对这一个动作重复利用，就能够获取我们想获得的标题、链接跟引用文本。</p>
<p>但首先，我们要把获取了的 <code>Article</code> 先设为一个变量：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/3.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/3.jpg" alt="3" /></a></p>
<p>原因是由于，我们总共需要三个变量（标题、链接跟引用文本）每次我们只能向这个 Article 获取一个内容，所以我们需要用到 <code>Article</code> 这个变量三次。</p>
<p><strong>第一次，设完变量后可以直接从变量获取元素，所以我们可以直接从 Article 获得 Title（标题），并设为变量：</strong></p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/4.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/4.jpg" alt="4" /></a></p>
<p><strong>第二次，获得 URL（链接），并设为变量：</strong></p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/5.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/5.jpg" alt="5" /></a></p>
<p><strong>获取引用文本：</strong></p>
<p>Workflow 目前似乎还不支持直接从 Safari 获取选中文本，所以在这里需要绕一下，利用剪切板曲线救国。</p>
<p>具体做法是，在运行摘抄这个 Workflow 之前，先把你想要摘录的文字首先复制了。由于在 Text 文本框里，我们使用 <code>Clipboard</code>这个常量，所以 Workflow 回把复制的内容自动填入正确的位置。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/2.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/2.png" alt="2" /></a></p>
<p>以上，我们就获得了我们摘抄所需要的一切元素。下面我们要获得日期。</p>
<h3 id="toc_6">获得日期</h3>
<p>获得日期在 Workflow 里是一套动作，首先要获得日期，其次要决定这日期显示格式。</p>
<p>获取日期的动作是 <code>Date</code>，我们要在这个动作里选择 <code>Current Date。</code>然后在下面我们要接上 <code>Format Date</code>，来设定日期显示的格式。因为是摘抄，所以也没必要特别精确，所以我用的是不显示时间，日期用的是最短的格式：<code>年-月-日</code>。</p>
<p>最后，将其设为变量。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/7.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/7.jpg" alt="7" /></a></p>
<h3 id="toc_7">把变量填入文本框</h3>
<p>获得了我们需要的四个变量，下一步就是按照 Markdown 格式把它们放到文本框中：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/2.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/2.png" alt="2" /></a></p>
<h3 id="toc_8">把 Markdown 转化为 HTML，并发送到 Evernote</h3>
<p>把 Markdown 转化为 HTML 是 Workflow 第一版就有的动作，叫做 <code>Make Rich Text from Markdown</code>。</p>
<p>在它的下面，我们接上 <code>Append to Evernote</code><a href="#fn:3" title="see footnote">[3]</a>，在笔记本中填入摘抄用的笔记本（我的是“Excerpt”）。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/1.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/1.png" alt="1" /></a></p>
<p>这样整个动作就结束了。要注意先把想要摘录的文本复制好，然后再运行该 Workflow。</p>
<p><a href="https://workflow.is/workflows/ed52c9885bce43299c35415050579af1">下载该 Workflow</a></p>
<h3 id="toc_9">不足之处</h3>
<p>这个动作很容易，但是它作用范围只有 Safari 和一些可以在本 App 中以网页形式打开网址并运行 Share Sheet 的 App。后者其实并不多，因为大多数软件打开网址都不是也网页的形式，而是包括在了自己的软件内。像 RSS 阅读器、稍后读这些软件统统不能用这个办法。</p>
<p>当然神通广大的 Workflow 不会就此举白旗，但是方法会变得复杂很多，我们在以后的教程会说明这种方法。下面我们来看另外几个新动作的应用。</p>
<h2 id="toc_10">用新动作筛选某网站的文章后一并发送到稍后读</h2>
<p><em>这个动作因为 Workflow 本身的一个缺陷在当前版本使用并不理想，后文会详述原因。</em></p>
<p>一般来说，我们对信息来源有一种信赖感。而且针对同一个专题的内容，同一个信息来源获取的消息更为联贯，逻辑承接更容易。但是，同一个信息来源有时候未必只会对你感兴趣的那一个点发布内容，比如我在指南并不是只写 Workflow 教程的，但是有些人可能因为他不越狱，所以对我写的插件方面的内容并不感冒，只想看关于 Workflow 的这些教程。如果你是这样，这次 Workflow 更新的关于 <code>Articles</code> 的动作对你来说就有用了。</p>
<p>它可以让你把某个信息源的关于某个专题的文章先筛选出来，然后一气儿全部发送到稍后读服务，然后你可以慢慢地看。</p>
<h3 id="toc_11">用 RSS 链接获取某网站的文章归档</h3>
<p><code>Get Items from RSS Feed</code> 是 Workflow 早就有的功能，用来获得具体 Blog 的博文归档。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/10.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/10.jpg" alt="10" /></a></p>
<p>我们在 URL 里填上博客的订阅链接，然后在下一行选择获取的文章数。</p>
<h3 id="toc_12">筛选文章</h3>
<p><code>Filter</code> 是<a href="jbguide.me/2015/02/19/what-can-workflow-do/">上一篇教程</a>详细介绍过的内容，这里不再赘述，只用具体例子来说明如何筛选文章：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/11.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/11.jpg" alt="11" /></a></p>
<p>上一步我们已经从越狱指南的 RSS 链接里获取了10篇最近的文章，现在通过筛选，我们要得到这10篇文章名称里包含“Workflow”的文章。然后按发布日期，从早到晚来排序。</p>
<h3 id="toc_13">全部发送到 Pocket</h3>
<p>获取了符合标准的文章们，我们接下来要做的就是把它们一并发到稍后读。</p>
<p>处理一个列表中每一项内容的方法是使用 <code>Repeat with Each</code> 这个动作，这个动作我也已经在《<a href="http://jbguide.me/2015/02/19/what-can-workflow-do/">【Workflow 教程】Workflow 本身能做什么？</a>》里详解过了，这里也只说例子：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/03/12.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/03/12.jpg" alt="12" /></a></p>
<p>如图，只要在产生列表的下一步放上 <code>Repeat with Each</code>，Workflow 就知道下面是处理列表中的每一项内容，我们把 <code>Add to Pocket</code> 放到 <code>Repeat with Each</code> 里，Workflow 就明白这是要它把列表中每篇文章都发到 Pocket。</p>
<p><a href="https://workflow.is/workflows/24668776f2f647bb99724e78c9dc2c41">下载该 Workflow</a></p>
<h3 id="toc_14">不足之处</h3>
<p>Workflow 1.1.1 版更新出的这些 <code>Articles</code> 功能都足够好用，但是从 1.0 就有的 <code>Get Items from RSS Feed</code> 这个功能却一直有个毛病——它只能获取10项内容，你不管设定多少项，它只获取10项。所以这也成了这部分讲的整个 Workflow 的短板，比如说指南现在的文章，按时间来排序，最新的两篇是 Workflow，接下来的就是只接到第14和第15篇了。所以用本文的方法，只能获取前两篇。</p>
<hr />
<div class="block-list"><ol>
<li>具体设置办法可以看第一篇教程——《<a href="http://jbguide.me/2014/12/30/getting-started-with-workflow/">【Workflow 教程】如何上手 Workflow</a>》的 Workflow Type 部分。 <a href="#fnref:1" title="return to article"> ↩</a></li>
<li>变量的讲解也在《<a href="http://jbguide.me/2014/12/30/getting-started-with-workflow/">【Workflow 教程】如何上手 Workflow</a>》这篇文章里。 <a href="#fnref:2" title="return to article"> ↩</a></li>
<li>关于 Append 的意思，可以看之前的这篇文章：《<a href="http://jbguide.me/2013/05/30/drafts-actions-evernote/">以Evernote为例来谈Drafts的内置动作</a>》 <a href="#fnref:3" title="return to article"> ↩</a></li>
</ol>
</div> ]]></content:encoded></item><item><title><![CDATA[ 【Workflow 教程】Workflow 本身能做什么？ ]]></title><guid>https://jbguide.me/2015/what-does-workflow-can-do</guid><link>https://jbguide.me/2015/what-does-workflow-can-do</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Thu, 19 Feb 2015 09:07:39 +0000</pubDate><content:encoded><![CDATA[ <p><a href="http://jbguide.me/2014/12/30/getting-started-with-workflow/">上篇文章</a>用“同时把内容发送到微博和 Twitter”这个例子带大家体验了一下体验了一下 Workflow 的简单易上手。但是 Workflow 不是一款这么简单的软件，它值得按部就班地学习。在这一部分，我们先看看 Workflow 跟 iOS 内置的那些原生软件结合可以做出什么样的事情。</p>
<h3 id="toc_1">确定 Wi-Fi 后再打开相应服务</h3>
<p>我时不时的会看 Twitch 上一些游戏直播，我只看原画质所以对网速有一定的要求。我平时出门用的是移动 Wi-Fi，回家以后用家里的。移动 Wi-Fi 供不起原画质，但是因为它一直关联着设备，所以导致有时候我从外面回到家想看 Twitch 的时候，打开 Twitch 觉得卡，然后才发现原来手机连的还是移动 Wi-Fi。</p>
<p>所以我利用 Workflow 内置的 <code>Get Network Name</code> 这个动作，做了个 Workflow：</p>
<p>检测现在连接着的网络的名称——如果名称包含的是家里 Wi-Fi 的名称——通过 URL Schemes 打开 Twitch——如果匹配的不是家里的 Wi-Fi——弹出换 Wi-Fi 的提示</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/15.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/15.jpg" alt="" /></a></p>
<p>我把这个 Workflow 放到 Launch Center Pro 里，来代替我打开 Twitch 的动作。而且 Launch Center Pro 还可以基于地理位置提供提示，这一点也值得好好利用。</p>
<h3 id="toc_2">条件匹配——Filter</h3>
<p>Workflow 在2月13日发布了它的 1.1 版本，<code>Filter</code> 就是其中最亮眼的更新之一：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/25.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/25.jpg" alt="" /></a></p>
<p><code>Filter</code> 可以精确地分类和定位你的各种资料和信息，Mac 上，从某种程度上来说，有没有 Filter 是判断这个软件在同类软件里的地位的一个标准。在这里，我打算用图片的 <code>Filter</code> 来具体说明它是什么。</p>
<p>比如说我手机容量不够了，一看相册里有 1000 张照片，而且好多都是屏幕截图，那我第一步肯定是把屏幕截图都删了，但是除了一张一张看以外，有什么办法能够精确地一下把所有的截图都给提出来呢？最简单的办法是分辨率。屏幕截图的图片的宽和高肯定和屏幕一致，所以你只要知道其中一项，你就能匹配出截图。而且 Workflow 甚至提供了专门的<code>Is a Screenshot（是屏幕截图）</code>的选项，避免你相册中有那种和屏幕截图分辨率一样的图片。</p>
<p>比如我要筛选出所有 iPhone 5 的屏幕截图，它的 <code>Filter</code> 就是这样的：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/33.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/33.jpg" alt="" /></a></p>
<p>首先来看框里的第一条：<code>All of the following are true（符合所有条件）</code>，点它你能看到另一项：<code>Any of the following are true（符合任一条件）</code>。</p>
<p>这两项是 <code>Filter</code> 的第一前提，你必须先告诉软件你下面列出的条件它需要都匹配还是匹配到任何一项就可以。一般来说默认的是<code>匹配所有条件</code>，但<code>符合任一条件</code>也是很有用的，但这里不展开说了。</p>
<p>然后来看上图里颜色不同的部分。每个颜色不同的部分都是一个菜单，可修改：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/41.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/41.jpg" alt="" /></a></p>
<p><code>Filter</code> 使用的思路就是：一般来说你要先确定一个对象或者类型，再确定一个范围，再确定具体的起始数字。学会使用 <code>Filter</code> 可以让你更清楚你要操作的对象是什么，让你更清楚你要干什么。这种思维方式不光在使用软件和智能设备上有用，在日常生活中也很有用处。</p>
<h3 id="toc_3">找餐馆然后打电话然并确定路线</h3>
<p>有时候决定吃什么是个问题，而且还有个问题是你决定好吃什么了以后那里有可能没空位了。所以不知道吃什么的时候，在自己常吃的类别里选一样（甚至可以或者随机选一样），然后马上给店家打预约电话，同时获取最短路线应该是个很实用的功能。</p>
<p><em>应该的意思是，根据 Workflow 支持的地图在我国的表现，本功能实际上可能并不那么实用……</em></p>
<p>这个 Workflow 的起始是选择一项我们常吃的东西，所以我们需要做个列表。<a href="http://jbguide.me/2014/12/30/getting-started-with-workflow/">上篇文章</a>里我写过了 List 的用法，但这里有更简单的创建 List 的方式，其中用到了 <code>Split Text（分割文本）</code> 这个功能：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/5.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/5.jpg" alt="" /></a></p>
<p>当你把列表做出来，就得在里面选一个，前面说可以随机，是你实在没主意的时候，可以用 <code>Get Item from List（从列表中获取）</code>这个动作 ，它内部有个动作是 <code>Random Item（随机一项）</code>。而如果你有主意的话，可以在列表下面接 <code>Choose from List（从列表中选择）</code> 这个动作。</p>
<p>选出一个类别以后，就可以利用 Workflow 里 <code>Search Local Businesses（搜索本地商户）</code> 这个动作，来搜索具体饭店了。同一类别的店铺未必只有一个，所以你还要再接一个<code>Choose from List（从列表中选择）</code>来选一家你想去的店铺。</p>
<p>在地图信息里，一般都会有店铺的电话，所以你可以用 <code>Get Phone Numbers from Input（从 Input 中获取电话号码）</code> 这个动作从店铺信息中获取电话。下面再接上 <code>Call</code> 这个动作，就能在获取电话号码后直接打电话预约了。</p>
<p>至于怎么同时搜索并确定路线，你可以自己想想。</p>
<h3 id="toc_4">快速得到具体某天的空闲时间</h3>
<p><em>动作略复杂，可以先在自己设备里下载了这个动作后结合文章理解。</em></p>
<p>这是 Workflow 的 Gallery 里自带的一个动作，叫做 <code>Share Availability</code>。它是和 iOS 的日历软件相结合的一个非常有用的动作，当别人问你具体某天什么时候有空的时候，有时候你也不清楚，你需要查看一下日程，最后自己总结一下什么时候有闲，给别人答复。这个工作，Workflow 完全可以帮你做到，不过前提是，你会把你每天的事务安排记录在 iOS 设备上的日历里。</p>
<p><em>除了实用，这个 Workflow 里还够复杂，里面涉及了不少具体的动作的用法，研究透它以后这些动作你就都能搞懂了。</em></p>
<p>首先是 <code>Get Upcoming Events（获取接下来的日历事件）</code>：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/6.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/6.jpg" alt="" /></a></p>
<p>这是这个 Workflow 的第一个动作，默认选择了所有的日历（很多人不会只用一个日历，因为需要给工作、家庭、个人事务等建立不同的日历，便于区分）；下一行的 <code>Get 20 Events</code> 是选取20个事件，你可以根据自己的繁忙情况选择事件数；下一行的 <code>Day</code> 后面默认的是 <code>Specified Day</code>，你可以设为今天或者明天，当你选择 <code>Specified Day</code> 以后，会出现新的选项，内容是 <code>Ask When Run</code>，这是让你临时选择具体的一天。</p>
<p>下面的动作大部分都被括在 <code>Repeat with Each</code> 和 <code>End Repeat（结束重复）</code> 里，这个 <code>Repeat with Each</code> 的隐含要求是上一个动作的结果应该是个列表，<code>Repeat with Each</code> 做的就是对上个动作产生的列表中的每一项都进行 <code>Repeat with Each</code> 和 <code>End Repeat</code> 之间的所有操作。</p>
<p>然后来看在这个 Workflow 中， <code>Repeat with Each</code> 和 <code>End Repeat</code> 之间有什么：</p>
<p>第一，设定变量 <code>Event</code>：这是把上个动作产生的列表中的每一项都设为一个变量，在这个例子里是每一个具体的日历事件。</p>
<p>第二，用 <code>Get Detail of Calendar Events</code> 获取起始时间 <code>Start Date</code>——用 <code>Set Variable</code> 给起始时间设定变量——并用 <code>Format Date</code>将其设定为最简短的时间格式。</p>
<p>第三，用 <code>Get Variable</code> 获取之前设定的日历事件变量 <code>Event</code>。因为我们除了事件的起始时间，还要获得事件的终结时间。但刚才在获得起始时间的时候，我们用了一次 <code>Event</code> 这个事件了，如果现在直接在下面再用 <code>Get Detail of Calendar Events</code> 来获取终结事件，肯定会报错。这是软件不如人聪明的地方，当我们要对一个信息使用两次，我们就得调用它两次，所以要使用到 <code>Get Variable</code>。它是个做复杂 Workflow 非常常用的动作。</p>
<p>第四，和第二步基本一致，只是事件的起始时间要改为事件的终结事件。</p>
<p>第五，因为你这是在回答你具体某天什么时候有空，所以你回复对方的时候，也要先跟对方说那一天的日期，然后再说什么时候有空。所以你得先获取当天的日期，这第五部分就是再用一次 <code>Get Variable</code> 获取事件（也就是获取日期），然后 设为变量。</p>
<p>最后，生成一个文本框：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/7.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/7.jpg" alt="" /></a></p>
<p>这个文本框里是每一个事件的起始时间和终结时间，中间有一个连接符<code>-</code>。</p>
<p>上面就是 <code>Repeat</code> 的整个过程，它对每一个事件都生成了起始时间和终结时间，然后填入最后的文本框里。但是这里的文本框还不能直接用，因为它们是分开的，每个事件都有自己的文本框。如果你在下面用 <code>Quick Look</code> 这个动作来直接看结果，你会看到很多个分散的结果，我们必须把它们汇聚成一个结果。所以需要使用到 <code>Combine Text</code>，把它们聚合在一起。</p>
<p>最后再用一个文本框，生成最终的文本。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/8.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/8.jpg" alt="" /></a></p>
<p>在这个文本框里， <code>Date</code> 是之前在 <code>Repeat</code> 的过程里获得过的日期，<code>input</code> 是继承的上个动作的结果，也就是你用 <code>Combine Text</code> 整合的当天所有事件的起始和终结时间。而且你要看这个文本框里，有变量，有 <code>Input</code> ，说明文本框里不光可以输入东西，还可以往里放变量，或者直接用 <code>Input</code> 来使用上个动作的结果。</p>
<p>最后这个文本内容你可以通过分享的方式给任何一个人。</p>
<p>具体 Workflow 你可以在 Gallary 的 Calander 分类中下载，你可以修改最后的文本框，让它变得更加本地化。而且你还可以获取事件名，从而你可以告诉对方，你在某天的几点到几点是因为什么没空。这些也当作业来练手吧。</p>
<h3 id="toc_5">图片找路</h3>
<p>这部分是使用 Workflow 获取照片的拍摄地，然后可以在地图上显示从本地到照片上的地址的具体路径、或者复制地址等。这个功能的重点在于它背后的 <code>Content Graph</code>。</p>
<p>获取图片的地理位置信息有很多用处，比如，我和朋友约了一个我没去过的地方见面，他到了我没到，我问他具体怎么走，他给我拍了张标志性建筑物的照片，我从这张照片获取地址信息，然后还能在地图上打开路径，最后到了地方还能对照这张照片看看我找的对不对（比 Google 街景还要即时哟）。而且这个功能还有个家庭伦理的用法，就是你问另一半在哪，让他/她拍个照片给你，你可以获取这个照片的拍摄时间，来知道他/他是不是拿以前的照片糊弄你，然后你可以获得地址，然后你懂得。</p>
<p>具体的做法很简单，就是在 Workflow 里用 <code>Select Photos</code> 这个动作获取一张照片，然后如果你想获取路径，可以用 <code>Show Directions</code> 直接获取路径。如果你想复制地址，你可以先用 <code>Get Addresses from Input</code> 获得地址，然后再用 <code>Copy to Clipboard</code> 把地址复制下来。而如果你想又复制地址，又在地图里显示路径，那么你可以复习下这篇文章前面写到的内容，想想当你要对同一个信息多次的时候，该怎么办？（提示，<code>Get Variables</code>）</p>
<p>再说回这个动作，其实你应该感到纳闷，“为什么可以在照片里获取地址信息呢？”这就是 Workflow 的核心功能——’Content Graph’。Workflow 里对这个 <code>View Content Graph</code> 这动作的描述是——the technology that powers Workflow。</p>
<p>在 Workflow 里，每一个动作都会产生一个或多个结果，而它能够产生什么结果，你可以用 <code>View Content Graph</code> 这动作来看看它能产生什么结果。</p>
<p>我们把 <code>View Content Graph</code> 放在 <code>Select Photos</code> 下面，选一张你手机拍的照片，正常情况下就会出现图中的结果：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/9.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/9.jpg" alt="" /></a></p>
<p>最中央的就是照片文件本身，它发散出来 <code>Text</code>、<code>Date</code>、<code>Location</code>、<code>Image</code>四个节点，我们获取的地址信息就是在这个 <code>Location</code> 里，而我们之所以能够直接在自带的地图软件里显示这个地址是因为 <code>Location</code> 后面有 <code>Maps link</code>。</p>
<p>所以当你不知道你对一个动作的结果能做什么处理的时候，可以考虑先用 <code>View Content Graph</code> 看看。</p>
<h3 id="toc_6">小结</h3>
<p>这篇的主题是探讨仅用 Workflow 在 iOS 设备上能干什么，所以用的全部是 Workflow 自身的动作和 iOS 内置的软件。关于 URL Schemes 还有如何利用网页服务跟 API 来制作更“神奇”的 Workflow 的办法会在以后的教程中写到。</p>
<h3 id="toc_7">复习</h3>
<p>看完本文你应该懂得的关于 Workflow 比较重要的用法有：</p>
<div class="block-list"><ul>
<li><code>Filter</code></li>
<li><code>Split Text</code></li>
<li><code>Repeat</code></li>
<li><code>Get Variable</code></li>
<li><code>在 Text 里将变量和字符结合</code></li>
<li><code>Combine Text</code></li>
<li><code>View Content Graph</code></li>
</ul>
</div><h3 id="toc_8">本系列其它文章</h3>
<p><a href="http://jbguide.me/2014/12/18/workflow-review-what-is-workflow/">【Workflow 测评】Workflow 是款什么软件</a></p>
<p><a href="http://jbguide.me/2014/12/30/getting-started-with-workflow/">【Workflow 教程】如何上手 Workflow</a></p>
 ]]></content:encoded></item><item><title><![CDATA[ 【SimpleNC】iOS 的通知中心当能简则简 ]]></title><guid>https://jbguide.me/2015/simplenc</guid><link>https://jbguide.me/2015/simplenc</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Mon, 16 Feb 2015 09:39:05 +0000</pubDate><content:encoded><![CDATA[ <p>iOS 系统最开始作的是拟物设计。抛去我们审美上的个人喜好，它最大的优点是学习成本低。但当人们对智能手机的使用方法有所了解，时机渐渐成熟，到了 iOS 7 ，苹果凭毅然决然地全面转换到了抽象度更高的拟物设计，并且添加了不少手势操作。写这些是为了说明，有时候，设计所选择的方案会囿于使用者的接受程度，当这个接受程度提升，我们就有了更多的选择，有了比以前更好的解决办法。</p>
<p>在这篇文章里，我所说的<code>更好的解决办法</code>是指通知中心的显示方面。iOS 8 的通知中心有<code>今天</code>和<code>通知</code>两个部分，苹果为了告诉你有这两个部分，在通知中心界面的最上方给了两个按钮，让你可以做到二者的切换。但是这个为什么关不掉呢？这地方<strong>应该可以</strong>被关掉，通知中心是个寸土寸金的地方 ，这两个按钮存在在这里，对于已经知道通知中心有两个界面的人没有积极意义，更何况在大屏手机上，我们更多地是会用手势切换这两个界面。</p>
<div class="block-html"><div class="wp-caption aligncenter" id="attachment_20137" style="width: 610px">[![修改前后，可视空间大了一截](https://cdn.jbguide.me/wp-files/2015/02/agfhjakfgh.jpg)](https://cdn.jbguide.me/wp-files/2015/02/agfhjakfgh.jpg)修改前后，可视空间大了一截</div>
<div class="block-html"></div>我很期待能够取消这一行字显示的插件，在去年 12 月的时候，出现了一款叫做 `Notifications Tab Remover` 的插件让我眼前一亮。它能够移除那两个按钮，但是它会把`通知`这个界面整个移除掉。我跟开发者 Greg 交流说我认为这个插件很赞但是我还是需要`通知`这个界面，但是开发者表示它对此无能为力……</div>
<p>下一个救星——<code>SimpleNC</code>出现在几个月之后，而它做到了我想要它做到的一切，而且做得更多。</p>
<h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 8</li>
<li>装在 iPad 上会发生奇怪的事</li>
</ul>
</div><h3 id="toc_2">插件功能及设置</h3>
<p>首先，这款插件安装即起效，而且插件的默认选项不是简单的全关或者全开，而是经过作者精心调试的：</p>
<p><em>这插件的设置太长，所以我打算使用文字列表来说明各个选项，尽量少用截图。</em></p>
<p>在这个插件，作者默认开启了以下开关：</p>
<div class="block-list"><ul>
<li><code>Enabled</code> – 总开关</li>
<li><code>Hide NC tabs</code> – 隐藏<code>今天</code>和<code>通知</code>按钮</li>
<li><code>Hide Today headers</code> – 隐藏“今天”里各项插件的 Header（不好意思想不到合适的翻译，看下面附图就懂啦）</li>
<li><a href="https://cdn.jbguide.me/wp-files/2015/02/24.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/24.png" alt="2" /></a></li>
<li><code>Hide NC header background</code> – 隐藏通知中心项目 Header 的背景（你懂什么是 Header 就明白这项什么意思了）</li>
<li><code>Hide notification header text</code> – 隐藏通知中心项目 Header 文字</li>
<li><code>Single tap clear notifications</code> – 单次触清除通知相应项</li>
<li><code>Hide bottom separator</code> – 隐藏底部分隔线</li>
<li><code>Hide Edit button separator</code> – 隐藏<code>编辑按钮</code>的分割线</li>
<li><code>Hide new widget label</code> – 隐藏<code>有新的插件可以使用</code>字样</li>
<li><code>Hide various NC lines</code> – 隐藏各种<code>通知</code>中的分割线</li>
<li><code>Clear status bar</code>（没啥用）</li>
<li><code>Remove status bar</code> – 在通知中心状态下隐藏状态栏</li>
<li><code>Hide attribution text</code> – 关闭“天气信息来源 : The Weather”（此项经测试无效，无论是中文系统还是英文系统）</li>
</ul>
</div><p>以上是作者默认打开的开关，所以安装完插件后你看到的变化应该就是根据这些选项做的改变，相信你可以根据以上的翻译和提示对通知中心作出自己的修改。下面把作者默认关闭的选择也翻译出来：</p>
<div class="block-list"><ul>
<li><code>Hide Today date</code> – 隐藏<code>今日</code>界面中的日期</li>
<li><code>Hide Today header background</code> – 隐藏<code>今日</code>界面中项目的 Header 的背景</li>
<li><code>Hide Today header icon</code> – 隐藏<code>今日</code>界面中项目的 Header 的内的软件图标</li>
<li><code>Hide Today header text</code> – 隐藏<code>今日</code>界面中项目的 Header 的内的软件名称</li>
<li><code>Hide notification headers</code> – 隐藏<code>通知</code>界面中的 Header</li>
<li><code>Hide notification header X</code> – 隐藏<code>通知</code>界面中项目的 Header 后的叉号按钮</li>
<li><code>Remove NC blur</code> – 将通知中心背景改为纯黑（这点肯定是爱的极爱，厌的极厌）</li>
<li><code>Hide Edit button</code> – 隐藏<code>编辑</code>按钮</li>
<li><code>Hide NC chevron</code> – 隐藏通知中心底部的那个指示箭头</li>
<li><code>Hide Weather info</code> – 隐藏天气信息</li>
<li><code>Hide &quot;No Notifications&quot; text</code> – 隐藏<code>没有通知</code>字样</li>
<li><code>Always open Today section</code> – 拉出通知中心时打开<code>今天</code>界面</li>
<li><code>Always open Notification section</code> – 拉出通知中心时打开<code>通知</code>界面</li>
<li><code>Completely disable NC</code> – 彻底禁用通知中心</li>
</ul>
</div><h3 id="toc_3">小结</h3>
<p>我使用这个插件的初衷是做到取消<code>今天</code>和<code>通知</code>字样的显示，来节约显示空间。在此之上我发现了把一些通知中心插件的 Header 去掉看起来还是很舒服的，不过这是大家的口味问题，我也不好多推荐关于这款插件的使用办法。但在使用中，我的感受是，修改过多可能会引起通知中心滑出变得有卡顿这样的事情，所以还是建议不要修改得太疯狂。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">SimpleNC</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★</td></tr></tbody></table></div>
 ]]></content:encoded></item><item><title><![CDATA[ iOS 的铃声系统为什么会造成尴尬，以及如何用 CCSliders 解决 ]]></title><guid>https://jbguide.me/2015/ccsliders</guid><link>https://jbguide.me/2015/ccsliders</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Tue, 10 Feb 2015 01:29:00 +0000</pubDate><content:encoded><![CDATA[ <p>我从 iPhone 4 开始接触 iOS 设备，但是用到 iPhone 6 Plus 为止我也没彻底搞懂它的响铃机制。</p>
<p>有时候我以为视频会没声音，结果一开视频网站的视频——因为现在视频网站都会先播广告，而广告为了效果从最开始音量就是最大最吵的——周围人全扭头看我。而有时候我以为会有闹铃声，结果闹铃却没有响或者音量太低导致我误事。哪一样都很尴尬。</p>
<h3 id="toc_1">iOS 的响铃系统为什么会偶尔让我们陷入尴尬</h3>
<p>iOS 上有两组响铃系统，一组是“铃声”，比如来电音、闹铃等；一组是媒体音，调节的是来自视频或者音乐的音量。但我们知道，iOS 设备只有一组调节音量的实体按钮——实际上它也不可能分别做两组按钮，因为那就太难看了——那么，这一组按钮到底是调节谁的呢？</p>
<p>答案很玄幻——一般是媒体音，但你可以设置它既能控制媒体音又能控制响铃音；当你播放视频或音乐的时，这组按钮是调节媒体音的；当来电话或者闹铃响起时，这组按钮又是调节响铃的（就算你之前设置了按钮不许调节铃声音量也不管用）……</p>
<div class="block-html"><div class="wp-caption aligncenter" id="attachment_20112" style="width: 610px">[![系统设置的音量调节截图](https://cdn.jbguide.me/wp-files/2015/02/13.png)](https://cdn.jbguide.me/wp-files/2015/02/13.png)系统设置的音量调节部分</div>
<div class="block-html"></div>这样的办法，其实是为了“人性化”。因为很明显嘛，你看视频听音乐的时候肯定想用音量按钮调节的是视频和音乐的音量；而闹铃响起的时候，你如果需要紧急调小音量也肯定是闹铃的音量。但是 iOS 这个考虑却忽略了一个常见的情节——匆忙调小铃声音量而忘记把音量调回。这太常见了，正在开会或者上课，突然手机响了（比如暑假定的周期闹铃忘了停），大多数人慌忙之下第一反应是找音量键然后把音量先调到最小，然后再拿出来关了。当响铃关掉以后，这个人肯定不想也不敢把铃声调回去，他这时候的思维状态是惊慌后的镇定，表情估计还很难看，他心里想的只有“大家有没有注意到”，“大家没在看我吧”这些，不会去想明天早上闹铃音量别忘了调上来或者下午有个重要电话等等。正是因为这点，加上人的大脑本身对这些细节就根本不怎么做处理，它就非常容易制造尴尬，尴尬完了接着就是误事，即便你知道它是怎么回事，你也很难逃脱你思维的恶习。</div>
<h3 id="toc_2">CCSliders 的功能及设置</h3>
<p>除了实体按键，苹果还在通知中心提供了音量调节的部分：</p>
<div class="block-html"><div class="wp-caption aligncenter" id="attachment_20113" style="width: 610px">[![iOS 控制中心](https://cdn.jbguide.me/wp-files/2015/02/23.png)](https://cdn.jbguide.me/wp-files/2015/02/23.png)iOS 控制中心</div>
<div class="block-html"></div>控制中心里可以调节两样东西，屏幕亮度跟媒体音量。而且这个媒体音量是锁定在音乐的播放框里的，所以它是一个附属物，真正在控制中心常存并且有调节功能的就是亮度调节。</div>
<p>CCSliders 的开发者 <a href="http://jbguide.me/tag/Jerry+en">Jerry En</a> 把这个亮度调节的部分给深挖了一番，让这里可以调节屏幕亮度、手电筒亮度、媒体音量、响铃音量。如果你装了 f.lux，CCSliders 还有拓展可以让你做到在控制中心调节 f.lux 的明暗效果。</p>
<div class="block-html"><div class="wp-caption aligncenter" id="attachment_20120" style="width: 610px">[![CCSliders 控制中心截图](https://cdn.jbguide.me/wp-files/2015/02/32.png)](https://cdn.jbguide.me/wp-files/2015/02/32.png)CCSliders 控制中心截图</div>
<div class="block-html"></div>在设置里，如果你不需要某个功能，比如不需要调节手电筒亮度（而且我使用的时候似乎有 Bug，会导致闪光灯彻底不亮，所以这里其实推荐把调节手电筒亮度的功能给取消），你可以把它拖到 `DISABLED` 下面。</div>
<div class="block-html"><div class="wp-caption aligncenter" id="attachment_20116" style="width: 610px">[![CCSettings 设置截图](https://cdn.jbguide.me/wp-files/2015/02/41.png)](https://cdn.jbguide.me/wp-files/2015/02/41.png)CCSettings 设置截图</div>
<div class="block-html"></div>### 如何用 CCSliders 解决 iOS 响铃系统带来的尴尬</div>
<p>不是你意识到你有一个问题，你就能解决的。人类行为学的研究有诸多案例证明我们有偏见和思维模式——比如我们会受“锚定效应”<a href="#fn:1" title="see footnote">[1]</a>的影响——我们无法持续做到理智，理智和批判自己的惯性思维会让大脑过度劳累，大脑是能偷懒就偷懒的。但是当我们知道问题在哪的时候，我们可以遇到类似问题的时候就警示一下自己，这样效果就会很好。</p>
<p>所以 CCSliders 这时候就很有帮助，比如我在播放视频前，会先用 CCSliders 查看一下媒体音量。睡觉前和上课前后，会看一下响铃音量。这样尴尬就再也没落到过我的头上。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">CCSliders</td><td style="text-align: left;">cydia.jerryen.com</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★★</td></tr></tbody></table><div class="footnotes">- - - - - -</div>
<div class="block-list"><ol>
<li>锚定效应是人根据不相关的数值对另一个物体估量的思维方式。比如找一批人，让他们看自己的身份证号的后三位，然后拿一样东西让他们估价，身份证号后三位数字大的人估出的价格明显比身份证号后三位小的人高。 <a href="#fnref:1" title="return to article"> ↩</a></li>
</ol>
</div><div class="block-html"></div></div>
 ]]></content:encoded></item><item><title><![CDATA[ 【Keyboard Accio】另一款在 iOS 设备上快速切换输入法的插件 ]]></title><guid>https://jbguide.me/2015/keboard-accio</guid><link>https://jbguide.me/2015/keboard-accio</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Mon, 09 Feb 2015 10:29:21 +0000</pubDate><content:encoded><![CDATA[ <p>昨天刚刚介绍了一款在 iOS 上快速切换输入法的插件<a href="http://jbguide.me/2015/02/08/chooseboard/">ChooseBoard</a>，结果当夜台湾开发者 <a href="http://jbguide.me/tag/hiraku">Hiraku</a> 就提交了另一款切换输入法的插件—— <code>Keyboard Accio</code>。两者功能类似，相较之下，<code>Keyboard Accio</code> 更轻量。</p>
<h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 8</li>
</ul>
</div><h2 id="toc_2">为什么在 iOS 设备上需要快速切换输入法的插件</h2>
<p><em>Keyboard Accio 和 ChooseBoard 的使用情境和背景知识是一样的，所以这部分内容相同。如果你没有看过另外一篇，这部分是有必要读的。</em></p>
<h3 id="toc_3">第一：App Store 里的第三方输入法太难忍</h3>
<p>在 App Store 里下载的第三方输入法的使用体验是非常安卓化的。它们不符合我们习惯已久的 iOS 输入习惯、不支持外接键盘、切换输入法的按钮位置及激活手势不统一……最重要的是，当你切换到任何一个第三方输入法的时候，都会或多或少出现卡顿，我相信所有人在切换输入法时“不小心”切换到第三方输入法后都会不自觉地皱眉，心里冒出一句——Shit。</p>
<h3 id="toc_4">第二： Mac 与 iOS 的输入法切换机制</h3>
<p>在 Mac 上，只要你打字，就应该非常熟悉输入法的这个切换逻辑：你可以添加很多输入法，但是使用快捷键 <code>⌘ + Space</code> 切换输入法的话，只会在上次和这次使用的输入法之间进行切换。比如说你上次用的是<em>英文输入法</em>，这次用的是<em>中文输入法</em>，那么你按 <code>⌘ + Space</code> 就只会在这两个之间切换。只有在按住 <code>⌘</code> 不放，然后再按空格，才会出现选择输入法的菜单。</p>
<p>这个办法让输入效率有很大的提高，因为<strong>并不是我们添加的所有键盘我们都会经常使用，但是我们有时又确实会用一些有特殊功能的键盘。</strong>比如我们不会在写文章的时候用 emoji，但是聊天的时候就会偶尔用到，你总不会每次要用 emoji 的时候都临时去键盘设置里添加这个键盘。</p>
<p>在 iOS 设备上，这个输入办法的处理发生了变化，因为它只有一个切换输入法的办法（地球仪），所以它的机制变成了这样——当你<em>什么都不输入</em>地连按地球仪的时候，它是按你对键盘的排序切换的。而只有当你用某个输入法打字了，然后再选择到下一个输入法也打字，这时候再按地球仪，它才会在切换的时候回到上一个键盘。</p>
<p>还拿中英文输入法举例子：首先你用中文输入法打了个字，然后你选择英文输入法，用英文输入法打了个字，这时候你再按地球仪，才会回到中文输入法。</p>
<p>一言以蔽之，iOS 上的机制不如 Mac 上的聪明。如果你的 iOS 设备的使用环境包括聊天和写作，而且还使用了一两个功能特殊第三方键盘，你就更能体会到这一点。</p>
<h3 id="toc_5">插件功能及设置</h3>
<p><code>Keyboard Accio</code> 没有设置选项，所以你可能不太搞得懂它怎么用。</p>
<p>当你看到没有设置选项的插件，你的思路应该是这样——首先，没有设置选项的意思是：安装即起效，删除才能取消插件效果。同时，它没有设置选项，所以这个插件的功能是固定的。</p>
<p>那么我们回头看 <code>Keyboard Accio</code>，它的使用介绍说：</p>
<div class="blockquote"><blockquote><p>地球仪选项只在输入法列表的第一项和第二项间切换。</p>
</blockquote></div>
<p>那么问题是，怎么调整输入法列表的排序呢？答案是，在设置选项里：<code>设置——通用——键盘——键盘——编辑</code></p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/12.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/12-1024x454.png" alt="1" /></a></p>
<p>当你把你想要快速切换的输入法排列到第一和第二位，就完成了对插件的整个设置。对于一般只有两个输入法要快速切换的人来说，<code>Keyboard Accio</code>是个很好的选择。与 <code>Keyboard Accio</code> 相比，虽然 <code>ChooseBoard</code> 功能略强，但是其尚处于测试版，不少人安装完以后不起作用，所以在这个节点，对于有快速切换输入法的朋友我更推荐 <code>Keyboard Accio</code>。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">Keyboard Accio</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★★</td></tr></tbody></table></div>
 ]]></content:encoded></item><item><title><![CDATA[ 【ChooseBoard】这个插件让 iOS 也能做到快速键盘切换 ]]></title><guid>https://jbguide.me/2015/chooseboard</guid><link>https://jbguide.me/2015/chooseboard</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sun, 08 Feb 2015 09:22:12 +0000</pubDate><content:encoded><![CDATA[ <p>*“小众插件”是指那些没有在五大主插件源发布，而是在诸如个人开发者、小团体的独立插件源里的小众插件。这样的插件有的功能十分强悍却因为宣传途径不够而不为人知。好的东西大家用不到总是可惜的，所以指南将在这个栏目中专门将它们介绍给大家。不过，也是因为它们来自个人开发者居多，没有经受过专人的审核，所以使用后的结果大家也要自己承担。 *</p>
<h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 7、8</li>
<li>设备支持：全设备</li>
<li>添加作者源：<a href="http://repo.douglassoares.net">http://repo.douglassoares.net</a></li>
</ul>
</div><h2 id="toc_2">为什么在 iOS 设备上需要快速切换输入法的插件</h2>
<p><em>Keyboard Accio 和 ChooseBoard 的使用情境和背景知识是一样的，所以这部分内容相同。如果你没有看过另外一篇，这部分是有必要读的。</em></p>
<h3 id="toc_3">第一：App Store 里的第三方输入法太难忍</h3>
<p>在 App Store 里下载的第三方输入法的使用体验是非常安卓化的。它们不符合我们习惯已久的 iOS 输入习惯、不支持外接键盘、切换输入法的按钮位置及激活手势不统一……最重要的是，当你切换到任何一个第三方输入法的时候，都会或多或少出现卡顿，我相信所有人在切换输入法时“不小心”切换到第三方输入法后都会不自觉地皱眉，心里冒出一句——Shit。</p>
<h3 id="toc_4">第二： Mac 与 iOS 的输入法切换机制</h3>
<p>在 Mac 上，只要你打字，就应该非常熟悉输入法的这个切换逻辑：你可以添加很多输入法，但是使用快捷键 <code>⌘ + Space</code> 切换输入法的话，只会在上次和这次使用的输入法之间进行切换。比如说你上次用的是<em>英文输入法</em>，这次用的是<em>中文输入法</em>，那么你按 <code>⌘ + Space</code> 就只会在这两个之间切换。只有在按住 <code>⌘</code> 不放，然后再按空格，才会出现选择输入法的菜单。</p>
<p>这个办法让输入效率有很大的提高，因为<strong>并不是我们添加的所有键盘我们都会经常使用，但是我们有时又确实会用一些有特殊功能的键盘。</strong>比如我们不会在写文章的时候用 emoji，但是聊天的时候就会偶尔用到，你总不会每次要用 emoji 的时候都临时去键盘设置里添加这个键盘。</p>
<p>在 iOS 设备上，这个输入办法的处理发生了变化，因为它只有一个切换输入法的办法（地球仪），所以它的机制变成了这样——当你<em>什么都不输入</em>地连按地球仪的时候，它是按你对键盘的排序切换的。而只有当你用某个输入法打字了，然后再选择到下一个输入法也打字，这时候再按地球仪，它才会在切换的时候回到上一个键盘。</p>
<p>还拿中英文输入法举例子：首先你用中文输入法打了个字，然后你选择英文输入法，用英文输入法打了个字，这时候你再按地球仪，才会回到中文输入法。</p>
<p>一言以蔽之，iOS 上的机制不如 Mac 上的聪明。如果你的 iOS 设备的使用环境包括聊天和写作，而且还使用了一两个功能特殊第三方键盘，你就更能体会到这一点。</p>
<h3 id="toc_5">插件功能及设置</h3>
<p>iOS 很明显在键盘切换上提供了一个“妥协解”，但是不是没有最优解了？苹果认为没有。但越狱插件开发者 <a href="jbguide.me/tag/Douglas+Soares">Douglas Soares</a> 和 <a href="http://jbguide.me/tag/CPDigitalDarkRoom">CPDigitalDarkRoom</a> 提出更好的解法——ChooseBoard。</p>
<p>ChooseBoard 这款插件的最主要的功能，就是做到：当你点按地球仪的时候，它只切换<strong>你设定好的常用输入法</strong>，而那些用的比较少的输入法，你可以使用 iOS 内置的<strong>长按地球仪然后拖拽</strong>这个手势去切换。</p>
<div class="block-html"><div class="wp-caption aligncenter" id="attachment_20094" style="width: 610px">[![注意输入法共有七个，但是按地球仪只切换中文和英文两个输入法](https://cdn.jbguide.me/wp-files/2015/02/1.gif)](https://cdn.jbguide.me/wp-files/2015/02/1.gif)注意输入法共有七个，但是按地球仪只切换中文和英文两个输入法</div>
<div class="block-html"></div>这个插件提供了三种模式：</div>
<p><strong>Quick Mode:</strong> 在 Quick Mode 下设定好你想快速切换的输入法，打开开关，然后就可以做到按地球仪只切换这两个输入法。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/22.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/22.png" alt="2" /></a></p>
<p><strong>Hidden Mode:</strong> 在输入法菜单里（长按地球仪出现的菜单）隐藏选中的输入法。此功能我认为没什么用……输入法有啥可隐藏的？</p>
<p><strong>Practical Mode:</strong> 选择这个模式后，点按地球仪=长按地球仪，即会出现输入法菜单。</p>
<p>最后，你可以设定一个 Activator 动作去打开或者关闭 ChooseBoard 这个插件，这个很实用。因为 Activator 跟 Flipswitch 已经高度结合，利用 Polus 这样的控制中心插件可以做到把 Activator 的动作放进控制中心作为一个开关（就像以前的 SBSettings 一样），好好想想你的使用情境，有机结合插件会大大提高你的生产力。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">ChooseBoard</td><td style="text-align: left;">http://repo.douglassoares.net</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★★</td></tr></tbody></table></div>
 ]]></content:encoded></item><item><title><![CDATA[ 如何让锁屏通知变得更有条理？试试 Priority Hub ]]></title><guid>https://jbguide.me/2015/priority-hub</guid><link>https://jbguide.me/2015/priority-hub</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 07 Feb 2015 09:46:49 +0000</pubDate><content:encoded><![CDATA[ <p><em>在 Cydia 中有相当一部分插件是在 iOS 这个本身优秀的系统上寻找瑕疵然后作出修改。当我们用了这样的插件，就会忘了以前 iOS 在这个点上自己本身是怎么处理的了。这样的插件——不论是收费的还是免费的——我们叫它意义级插件。</em></p>
<p>现在这个年代，当你的设备闲置一段时间，回来再看就会发现通知充满锁屏。但我自己以前是不会直接看锁屏上的提醒的，因为它一条线地排布下来，没有主次和条理，不如我直接解锁看哪个软件上有角标来得有秩序。来自插件作者 <a href="http://jbguide.me/tag/Thomas%20Finch/">Thomas Finch</a> 的 <code>Priority Hub</code> 这款插件修改了锁屏通知一团乱麻的问题，它把你的锁屏通知分列在各个软件图标之下，将它们整理地更有条理，让“在锁屏显示通知”变得有意义。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/11.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/11.png" alt="1" /></a></p>
<h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 7、8</li>
<li>设备支持：不支持 iPad</li>
</ul>
</div><h3 id="toc_2">插件功能及设置</h3>
<p><code>Priority Hub</code> 本身是一款不复杂的插件，装了就能显示效果，不用设置什么就能感受到变化。</p>
<p>但是如果你有一些特殊需求，比如，你使用了 <code>SubtleLock</code> 这样的插件，你就需要调整 <code>Priority Hub</code> 的高度去适配它，这时候你就需要好好看看设置了。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/21.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/21.png" alt="2" /></a></p>
<div class="block-list"><ul>
<li>显示数字：是否在锁屏图标位置显示通知数。（建议开启）</li>
<li>显示分割线：是否和 iOS 内置的效果一样在通知之间显示分割线。（建议关闭，不好看）</li>
<li>下拉清空通知：在锁屏通知界面用下拉手势清空<strong>当前已选</strong>的图标下的通知。（建议开启）</li>
<li>隐私模式：通知到来时直接被折叠进软件图标里，而不是将内容显示在锁屏。（有需要就开启喽）</li>
<li>折叠通知：开不开一样。</li>
<li>根据图标调整背景色：开不开都一样。</li>
<li>图标显示位置：有<code>顶</code>和<code>底</code>两个选择。（看个人喜好）</li>
<li>通知数显示方式：有两种，一个是红色角标，一个是在图标底部显示白色数字。红色角标更能给人带来紧张感，所以我偏好红色。</li>
</ul>
</div><p><a href="https://cdn.jbguide.me/wp-files/2015/02/3.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/3.png" alt="3" /></a></p>
<p>设置选项中最后一项是<code>调整高度</code>，它下面那一段英文简单来说意思就是：</p>
<p>当你想把顶部下移的时候，就在数字部分输入<strong>负数</strong>，反之，想把底部上移的时候，就输入<strong>正数</strong>。</p>
<p>这个功能就是当你有配合其它视觉类锁屏插件的时候用的。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">Priority Hub</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★★</td></tr></tbody></table></div>
 ]]></content:encoded></item><item><title><![CDATA[ 【小众插件】Moveable 是一款免费且易用的状态栏元素位置排列插件 ]]></title><guid>https://jbguide.me/2015/moveable</guid><link>https://jbguide.me/2015/moveable</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Wed, 04 Feb 2015 10:39:09 +0000</pubDate><content:encoded><![CDATA[ <p><em>“小众插件”是指那些没有在五大主插件源发布，而是在诸如个人开发者、小团体的独立插件源里的小众插件。这样的插件有的功能十分强悍却因为宣传途径不够而不为人知。好的东西大家用不到总是可惜的，所以指南将在这个栏目中专门将它们介绍给大家。不过，也是因为它们来自个人开发者居多，没有经受过专人的审核，所以使用后的结果大家也要自己承担。</em></p>
<p>状态栏的修改是将 iOS 设备个性化的重要一环，不过 Cydia 中关于状态栏的插件大多是“隐藏定位图标”、“隐藏蓝牙图标”这样的显示与否的修改。很少有插件能够做到排列插件的元素，免费的就更少了。</p>
<p>其中 ArrangeStatusBar 是比较有名的，但它的使用方式是按住状态栏上的具体元素进行拖动。这种操作方式精准度极低：其一是手指操作的精准度本身就有限；其二是状态栏是个手势敏感度高的地方，稍微向下拖动就会触发通知中心。所以通过 ArrangeStatusBar 很难得到一个理想的排列。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/1.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/1.png" alt="1" /></a></p>
<p>相较之下，今天要介绍的另一款免费插件 Moveable 由于利用 iOS 默认的“左中右”式的状态栏排列方法，操作起来精确度高很多也简单很多。</p>
<h3 id="toc_1">插件使用要求</h3>
<div class="block-list"><ul>
<li>使用版本：iOS 8</li>
<li>添加开发者个人源: <a href="http://tateu.net/repo/">http://tateu.net/repo/</a></li>
</ul>
</div><h3 id="toc_2">插件功能及设置</h3>
<p>前面提到 Moveable 是利用 iOS 默认的“左中右”式的状态栏排列方法，在操作上，我们要做的就是在设置选项中把状态栏中的元素拖动到我们希望它所在的位置：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/02/2.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/02/2.png" alt="2" /></a></p>
<p>比如上图我把闹铃（Alarm）调到了中间，把 Wi-Fi 排到了右边，把位置信息（Location）排到了左边。</p>
<p>操作方面有一点需要注意：</p>
<p>我们仔细看上图的排列，就会发现左中右三栏里每栏都有两个元素，其中“左”和“中”这两栏的排列顺序是位置在上的元素在状态栏的左面，位置在下的元素在状态栏的右面。但是“右”这一栏里却反了过来，在上的元素反而在状态栏右边了。</p>
<p>这里的原理实际上是，在设置选项中的任何一栏，最上面的元素所在的位置都是它那一栏的极值。所以“中”这一栏实际上是越往上的元素越接近状态栏中央；而“右”这一栏自然应该是在上的元素在状态栏右边。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">Moveable</td><td style="text-align: left;">http://tateu.net/repo/</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPad Air</td><td style="text-align: left;">★★★★★</td></tr></tbody></table>### 相关链接</div>
<p>为了视觉效果，我把状态栏里的电池和 Wi-Fi 的图标进行了修改，具体办法请看这篇文章：<a href="http://jbguide.me/2014/08/05/statusbar-cs/">【Statusbar CS】应该是目前和iOS最搭的状态栏修改</a></p>
 ]]></content:encoded></item><item><title><![CDATA[ 各路助手倒下的背后 ]]></title><guid>https://jbguide.me/2015/ios-tools-taken-down</guid><link>https://jbguide.me/2015/ios-tools-taken-down</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Tue, 03 Feb 2015 01:09:37 +0000</pubDate><content:encoded><![CDATA[ <div class="blockquote"><blockquote><p>最近苹果发布了8.1.3系统更新。从更新日志看，没有多少变化（错误修复，提高稳定性和性能），但是苹果修复了一个“漏洞”，就是之前说的“假面”。</p>
</blockquote></div>
<p><a href="http://segmentfault.com/blog/travis/1190000002527817">这篇文章</a>非常详细地讲解了为什么各路助手在 iOS 8.1.3 发布之后纷纷扑街的原因。对于懒得看文章或者嫌专业术语太多的朋友，通俗一点说可以概括成以下几点：</p>
<div class="block-list"><ol>
<li><p>以前，各种助手为了能与 iOS 设备通讯，是借助 iTunes 完成的，这也是为什么使用各种助手前要先安装 iTunes 或者安装一个设备的驱动。这次 iTunes 更新之后把架构全改了，导致助手老师们无法兼容。软件无法兼容并不会一直持续下去，我们也看见助手老师们已经在通宵达旦了。</p>
</li>
<li><p>以前通过破解 DRM 保护的方式现在已经失效；通过企业证书重打包安装盗版应用的方式也因为苹果开始大规模撤销滥用的企业证书而逐渐无法持续。</p>
</li>
</ol>
</div> ]]></content:encoded></item><item><title><![CDATA[ 【越狱不违法】时隔三年又要为越狱请愿了 ]]></title><guid>https://jbguide.me/2015/jailbreak-is-not-crime</guid><link>https://jbguide.me/2015/jailbreak-is-not-crime</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 31 Jan 2015 07:46:00 +0000</pubDate><content:encoded><![CDATA[ <h3 id="toc_1">数字千年版权法和越狱</h3>
<p>“越狱是不是合法”这件事我朝似乎不太关心，因为软件是不是盗版、甚至设备是不是偷来的这样的问题我们都不怎么关心。</p>
<p>不过，在美国，这件事是一件很严肃的事。每隔三年，<a href="http://zh.wikipedia.org/zh/%E6%95%B8%E5%AD%97%E5%8D%83%E5%B9%B4%E7%89%88%E6%AC%8A%E6%B3%95">数字千年版权法</a>的<a href="http://zh.wikipedia.org/wiki/%E6%95%B8%E5%AD%97%E5%8D%83%E5%B9%B4%E7%89%88%E6%AC%8A%E6%B3%95#.E5.8F.8D.E8.A7.84.E9.81.BF.E8.B1.81.E5.85.8D.E6.9D.A1.E4.BE.8B">反规避豁免条例</a>都要修正一次，这里面就有越狱相关的规定。</p>
<p>上一次的修正是2012年，具体的内容意译下是（<a href="https://s3.amazonaws.com/public-inspection.federalregister.gov/2012-26308.pdf">原文件</a>）：</p>
<div class="blockquote"><blockquote><p>iPhone等智能电话进行越狱或者 Root 的操作是合法的。</p>
</blockquote></div>
<p>至于 iPad，属于平板电脑，议会因为“平板电脑界限不好划分”而不置可否，但也并没有任何条例说明这样的行为是违法的，也就是说它是个默许的行为。</p>
<p>三年后的今天，由 <a href="https://www.eff.org/">EFF</a> 提出的关于”越狱合法“的<a href="https://act.eff.org/action/jailbreaking-is-not-a-crime">请愿</a>再次开始，非美国地区也可以进行投票：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/01/13.png" alt="1" /></figure></div><p>这次的<a href="https://act.eff.org/action/jailbreaking-is-not-a-crime">请愿</a>也带上了 Tablet。相较于三年前，移动设备已经有了相当的发展，法律上对于平板电脑的设定也许已经比较清晰，所以希望这次平板电脑的越狱也可以”正式合法“。</p>
<h3 id="toc_2">和我们有什么关系？</h3>
<p>一定有不少人认为它通过不通过跟我们关系不大，尤其是最近两次越狱都是由国人发布的这件事让我感受到有了”鼎力相助“以后国人也是可以轻松拿下 iOS 系统的。那么要美国那帮黑客干什么？他们的法律又管不住我们。数字千年版权法有那么厉害？</p>
<p>首先，数字千年版权法是有一定的法律效力的，索尼告神器小子 <a href="https://zh.wikipedia.org/wiki/%E4%B9%94%E6%B2%BB%C2%B7%E9%9C%8D%E5%85%B9">GeoHot</a> 的一个原因就是因为违反了数字千年版权法。然后我们说如果美国人不能越狱了，越狱圈有什么损失。</p>
<h4 id="toc_3">在美国越狱不合法意味着插件开发者的减少</h4>
<p>我们也暂且把身在美国的与越狱有关的黑客都设定为”没用“，可是在美国的插件开发者是有用的吧？比如 Saurik，他如果都不能越狱了，哪有 Cydia 给你用？插件开发者不能越狱的话，对于大部分越狱用户来说相当于逃出生天后一开门是一片沙漠。你会觉得有它没它都一样。</p>
<h4 id="toc_4">在美国越狱不合法意味着越狱市场紧缩</h4>
<p>我并不确定对整个越狱后的市场来说美国有多大的贡献，但想必是大头。如果美国不能越狱的话，越狱后的消费者就大大减少，这个市场就会慢慢丧失活力了。其它地区的开发者也就会没什么劲头了。</p>
<h4 id="toc_5">在美国越狱不合法意味着”越狱不正当“</h4>
<p>iOS 源于美国，越狱源于美国。对于大多数人，尤其是本来就想黑越狱的人来说，这件事的正当性判断靠的即是美国的判断。法律是行为正当与否的底线，如果这件事在美国不合法，那么越狱这件事就在世界上不能抬起头来。本身就”莫名其妙“地黑越狱的人会像拿到尚方宝剑一样鄙夷一切越狱动机和越狱行为，而你也再不能说你越狱是为了自由，你和因盗版而越狱的人被一起划到了”非法“的那条线里。</p>
<h3 id="toc_6">小结</h3>
<p>所以越狱在美国是否合法是件不算不重要的事。</p>
<p>有时候你不想让那件一直以来自以为对所以才做的那件事被别人判定成错误的，你就要去为它做些什么。</p>
<p>比如<a href="https://act.eff.org/action/jailbreaking-is-not-a-crime">请愿</a>。</p>
 ]]></content:encoded></item><item><title><![CDATA[ 越狱后如何备份自己的软件、插件以及源列表 ]]></title><guid>https://jbguide.me/2015/how-to-backup-repo-ant-tweak-list</guid><link>https://jbguide.me/2015/how-to-backup-repo-ant-tweak-list</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Fri, 23 Jan 2015 12:04:00 +0000</pubDate><content:encoded><![CDATA[ <p>对于越狱用户来说，享受越狱后的自由世界是酣畅的，但他们往往不愿意升级或者恢复自己的设备。除了和其它用户一样的“观望”和“怕折腾”以外，他们有件更痛苦的事——需要把曾经的插件和源重新装一遍。重新装一遍其实也还好，关键是每次恢复之前都没有一个简单的办法把自己最后的插件和源列表导出，所以出现了各种各样的不得已的办法，比如把插件列表给截图截下来。</p>
<p>实际上通过一些简单的办法，我们可以备份和恢复自己的源列表，也可以备份插件列表（不过插件不能用简单的方法恢复，要手动去安装）。</p>
<h3 id="toc_1">备份和恢复源</h3>
<p><em>在备份插件列表之前先谈如何备份和恢复源的原因是一些插件在特殊的源里，不把那些源先恢复回来就没办法把里面的插件恢复回来。</em></p>
<p>这部分的<strong>关键</strong>是 iOS 设备上 <code>/var/lib/cydia</code> 这个路径下的 <code>metadata.plist</code> 文件，它就是源列表文件，所谓备份源就是备份它。而把它放到其它设备的同样路径下就可以进行源同步和恢复。你甚至可以直接把这个文件分享给别人来做到分享你的源。</p>
<h4 id="toc_2">具体步骤：</h4>
<p><strong>第一步</strong>：在 iOS 设备上用 iFile （在 PC 上用 iFunbox 等工具）打开 iOS 设备的根目录，进入 <code>/var/lib/cydia</code> 这个文件夹，找到 <code>metadata.plist</code>。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/01/12.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/01/12.png" alt="1" /></a></p>
<p><strong>第二步</strong>： 把它复制出来，最好粘贴到你的云储存工具里，便于同步。</p>
<p><strong>第三步</strong>：</p>
<div class="block-list"><ul>
<li>本设备恢复源：在恢复后把 <code>metadata.plist</code> 重新拷贝回该设备的 <code>/var/lib/cydia</code> 文件夹，替换原文件。</li>
<li>跟其它设备同步源：所有 iOS 设备的源列表文件路径都是 <code>/var/lib/cydia</code>，所以把 <code>metadata.plist</code> 拷贝到任何设备的文件夹替换源文件即可。</li>
<li>分享给他人：同样把你的 <code>metadata.plist</code> 文件给别人就可以了，这个文件可以共用。</li>
</ul>
</div><h3 id="toc_3">备份插件列表</h3>
<p>备份插件列表要用到 <a href="cydia://package/com.mileskabal.appinfo/">AppInfo</a> 这款插件，它本身就有显示源和插件列表的功能，通过它可以直接把你设备上的源和列表做成一个列表通过 Mail 分享出去，所谓的备份插件列表就是把这封 Mail 发给自己。</p>
<h4 id="toc_4">具体步骤：</h4>
<p><strong>第一步</strong>： 下载 <a href="cydia://package/com.mileskabal.appinfo/">AppInfo</a>。</p>
<p><strong>第二步</strong>： 打开 AppInfo 中的 Packges 界面：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/01/2.png" alt="AppInfo 的 Packages 解密哪" /></figure></div><p><strong>第三步</strong>： 选择右上角的 Action，然后在弹出的菜单中选择 <code>Simple list</code><a href="#fn:1" title="see footnote">[1]</a>，将邮件发送给自己：</p>
<p><img src="https://cdn.jbguide.me/wp-files/2015/01/3.png" alt="3" />](<a href="https://cdn.jbguide.me/wp-files/2015/01/3.png">https://cdn.jbguide.me/wp-files/2015/01/3.png</a></p>
<p>这样就完成了对插件列表的备份，对于这份列表我有三个提示：</p>
<div class="block-list"><ol>
<li>你未必会需要其中所有插件，所以面对这份列表安装回插件的时候可以再考虑一下哪些插件是用不到的。</li>
<li>这个列表里有一些你会不认识是什么，它们有些或许是越狱后就存在的，有些或许是其它插件的依赖，总之不是你自己在 Cydia 搜索安装的。那么你在根据列表安装插件的时候，大可以把不认识的先跳过去，依赖那些东西需要的话自己就会装进去。</li>
<li>运用这个列表来排查问题插件：插件装多了，无论是冲突还是插件本身的功能，会出现一些意料外的“副作用”。不过因为你不同的设备插件大抵不会完全一致，所以不同的设备会生成不同的插件列表，当一个设备有问题，另一个设备没问题时，你可以用文本对照软件来对比两个设备的插件，很明显，有问题的插件肯定不会出现在两台设备都有的那部分插件里。</li>
</ol>
</div><h3 id="toc_5">备份软件</h3>
<p>谈到 AppInfo，就需要提到它的另一个主要功能，备份软件列表。苹果的 iTunes 提供了强大的备份服务，它可以做到从软件本身、到软件摆放的位置再到软件的内部数据的完全备份。但它的备份不是有选择的，而是全套的，它的目的是让你手机在恢复备份之后跟恢复之前是一个状态。如果你是越狱的话，再有点儿“洁癖”，你可能不想这么恢复你的设备，因为插件的设定也会备份下来<a href="#fn:2" title="see footnote">[2]</a>。</p>
<p>所以如果你想趁着恢复这个机会“翻新”一下你的设备，反思一下自己有哪些软件装了却几乎没用过，从而对软件进行再一次筛选的话，你可以使用 AppInfo 来备份软件列表，然后直接从这个列表里筛选。</p>
<h4 id="toc_6">具体步骤：</h4>
<p><strong>第一步</strong>：用 iFile 创建一个文件夹快捷方式链接到 iOS 8 后 Application 文件夹的新路径</p>
<p>AppInfo 这个插件已经很久不更新了，所以它在 iOS 8 上不能读取设备上的软件列表，这是因为 iOS 8 的 Applications 文件夹路径改变了：<br />
 – 以前是：/var/mobile/Applications/<br />
 – 现在是：<code>/var/mobile/Containers/Bundle/Application/</code></p>
<p>AppInfo 只认之前路径下的 Applications 文件夹，而不知道新的文件夹放在了哪。针对这一点，我们可以利用 iFIle 的符号链接功能，在 <code>/var/mobile/</code> 里创建一个 Applications 文件夹，然后把它通过符号链接连接到 <code>/var/mobile/Containers/Bundle/Application/</code>。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/01/4.png" alt="4" /></figure></div><p>然后你就可以在 AppInfo 里看到你的软件列表了：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2015/01/5.png" alt="注意字应该是蓝色的" /></figure></div><p>点击每个软件的名称可以看到这个软件的详细信息，就像你在 Mac 上选择一个软件然后查看简介一样，它可以显示出购买 ID，这个功能我很需要，因为我是多国账户，有的时候内购了也不知道是哪个账户内购的，日后恢复的时候就要一个一个试。现在可以用 AppInfo 直接查出来购买 ID，省去了这麻烦。</p>
<p><strong>第二步</strong>： 点击右上角 Aciton，生成 Simple List 并发送邮件。</p>
<p>有了这个 List 你就可以参照它来选择软件了，经过实践，如果你选择这种办法来选择软件的话，你最好在 iTunes 里只搜索首字母，然后把列表里你想要的软件全部选择安装。因为如果你输入全名的话，流程就会是<code>用键盘输一个软件名——动鼠标选择安装——再回到输入框输下一个软件名</code>，这样的话上百个软件下来非常没有效率。</p>
<h2 id="toc_7">小结</h2>
<p>这篇文章介绍了：<br />
 – 越狱后源列表文件的保存路径<br />
 – AppInfo 导出插件列表的办法<br />
 – iFile 的 Symbol Link 的用法<br />
 – AppInfo 恢复查看软件信息功能的办法</p>
<p>希望你能读了本文后自己按照小结这份列表回忆起文中的主要内容。</p>
<h3 id="toc_8">文章提到的插件</h3>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">iFile</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">免费试用</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★★</td></tr><tr><td style="text-align: left;">AppInfo</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">免费</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★★</td></tr></tbody></table>
## 相关技巧</div>
<p><a href="http://jbguide.me/2014/08/29/all-tweak-one-key-install/">如何在恢复或升级设备后装回以前的插件</a></p>
<p><a href="http://jbguide.me/2014/08/28/roll-back-your-tweak/">如何在紧急情况下将免费插件降回较低版本</a></p>
<div class="block-list"><ol>
<li>除了 Simple list 以外还有一个 Detailed list，它导出的内容更为全面，但我们是只要插件名就可以了，所以不需要用到它。 <a href="#fnref:1" title="return to article"> ↩</a></li>
<li>具体内容可以看这个视频：<a href="http://v.youku.com/v_show/id_XNTE3NDk1MjY0_rss.html">为何要在越狱后恢复为新设备</a> <a href="#fnref:2" title="return to article"> ↩</a></li>
</ol>
</div> ]]></content:encoded></item><item><title><![CDATA[ 【DoubleCut】快速输入邮箱插件跨越4个 iOS 版本的执着 ]]></title><guid>https://jbguide.me/2015/doublecut</guid><link>https://jbguide.me/2015/doublecut</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Mon, 19 Jan 2015 10:27:34 +0000</pubDate><content:encoded><![CDATA[ <p>在遥远的 iOS 4 时代，有一款免费插件，叫做 <code>Double At</code>。它功能是按两下 iOS 键盘上的<code>@</code>，然后打出你设定好的邮箱地址。这个非常简单的功能好用得让人们落泪，因为<code>用户词典</code>这个现在可能也不是所有苹果用户都知道的功能在 iOS 5 才出现，而快速输入邮箱的需求是一直有的，尤其是在各个软件里登录账户的时候。</p>
<p>即便在后来<code>用户词典</code>出现以后也无法遮挡它的锋芒，因为通过<code>用户词典</code>人们需要再进行一次选定的操作，<code>Double At</code> 则是按两下<code>@</code>就生效。可是 <code>Double At</code>只出过一版就再无更新，在 iOS 4 升级到 iOS 5 和 iOS 6 的时候还可以用，直到被 Ive 彻底拍扁了 iOS 7 出现，<code>Double At</code> 不能继续使用了。</p>
<p>2014年8月出现了一款插件名叫 <code>TapTheAt</code> ，但它的使用方式不是按两下而是按住<code>@</code>，这个体验没有很好的传承下来，而且“按住”这个操作会跟另外一款重要却更强大的提高输入效率的插件——<code>KeyShortCut</code>冲突。</p>
<p>而直到2014年的12月，在 iOS 8 上，<code>Double At</code> 的真正继承人才出现——<code>DoubleCut</code>。它的作者是 <a href="https://twitter.com/r_plus">@r_plus</a>，Safari的手势插件 <a href="http://www.tudou.com/programs/view/xyOZMPlzVA8">Sleipnizer for Safari</a>（插件在 iOS 8 是可用的，但视频是好久以前的，现在看看都是眼泪）等插件的作者。</p>
<p><code>DoubleCut</code> 的操作和 <code>Double At</code> 完全一致，并且作者在 GitHub 上公布了 <a href="https://github.com/r-plus/DoubleCut">Source Code</a>。</p>
<p>在使用上，在设置里找到<code>DoubleCut</code>的选项，然后填入你的常用邮箱：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/01/11.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/01/11.png" alt="1" /></a></p>
<p>插件很简单，但它的好用从 iOS 4 到 iOS 8 从未变过。</p>
 ]]></content:encoded></item><item><title><![CDATA[ 借 CacheClearer 这款插件谈谈缓存好不好，要不要清 ]]></title><guid>https://jbguide.me/2015/cacheclearer</guid><link>https://jbguide.me/2015/cacheclearer</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sun, 18 Jan 2015 08:03:57 +0000</pubDate><content:encoded><![CDATA[ <h2 id="toc_1">插件基本信息</h2>
<div class="block-list"><ul>
<li>作者：<a href="https://twitter.com/rpetrich">Ryan Petrich</a></li>
<li>系统版本：iOS 8.x</li>
<li>适用机型：全部</li>
<li>需要添加作者个人源：<a href="http://rpetri.ch/repo/">http://rpetri.ch/repo/</a></li>
</ul>
</div><p>CacheClearer 是 Ryan Petrich 近日发布的一款清理缓存的插件。说到「缓存」很多人都一个反应，该清。可是，缓存到底是什么，它们占着我储存空间干嘛？</p>
<p>在 iOS 中，每个软件都有个自己玩耍的沙盒，软件把网络上下载来的数据放到沙盒的 Cache（缓存） 里，把用户产生的数据放到沙盒的 Documents（文档）里。前者（缓存）不会备份到 iTunes 或 iCloud 中，后者因为保存着重要的用户数据，所以会备份下来以备不时之需。那，是不是说缓存不重要，我们要随时清理呢？</p>
<h2 id="toc_2">TL;DR</h2>
<p><strong>一般情况下我们不需要手动清理软件的缓存，除非你急需空出闪存空间并且不希望把软件删除，而且无所谓删除缓存后可能带来的严重后果。</strong></p>
<p>如果你只想了解插件的特性，请点击<a href="#cacheclearer">这里</a>。</p>
<h2 id="toc_3">缓存里有什么？</h2>
<p>以墨客（或者任何一个微博客户端 ）为例。缓存里有你上个星期看过的一张图片，有今天早上打开过的网页的静态文件，有你上次关闭软件前最后一次刷新留下的微博，有私信里的图片，有好友的头像……这些文件都有一个共同的特点：有可能浏览第二次，甚至第十次；他们都是可以被重复下载的。3G 流量有限，我们不希望重复下载同一个文件，所以就设计了缓存这个特性，让你加载一次之后就能重复使用这些保存在本地的文件。时间长了之后，这些文件越积越多，有时候甚至会有几百兆。</p>
<h2 id="toc_4">怎么处置缓存？</h2>
<p>如果是一个涉及网络访问的 App，在有设计缓存的情况下它必然会无止境地增多，任何一个有常识的开发者都会在这时考虑如何处置（注意，不是清理）这些缓存文件，不论是自动清理，还是提供一个按钮让用户手动清理，还是保留在储存空间里。一些开发者可能因为各种原因，无法实现一套完美的清理机制，则只好让它们静静地躺在缓存里，直到你删除这个软件，或者恢复手机。剩下的情况就是某个无知的程序员开发了一个不能清理缓存的 App，慢慢地吞噬着你的闪存。所以大家也能够看出，遇到最后一种情况的机会是少之又少的。你又想，哪个开发者会任由应用存着你一个月前看过的图片，这不是吃错药了吗。</p>
<p>说到这里就要举个栗子了 —— Tweetbot。Tweetbot 提供了自动和手动清理两种办法，只不过很尴尬，这两种清理方法有的时候也不尽人意，一些用户在官博下抱怨软件占用了大量空间，唯独删除软件才能释放。官方一开始都会建议使用应用内的手动清理功能，效果不明显再重新安装应用。笔者也尝试着手动清理缓存，结果一点效果都没有，甚至还变大了……我是个 Tweetbot 的重度用户，清理前的占用为60兆，如果不自动清理不可能才这么点的。不论如何，我是不用担心 Tweetbot 缓存占用过大的。</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/01/tweetbot.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/01/tweetbot.jpg" alt="Tweetbot 的大小反而变大了" /></a></p>
<h2 id="toc_5">我该不该担心缓存？</h2>
<p>不该。如今 iOS 设备一般都有 16G 的储存空间，一个应用占着二、三百兆的空间看起来好像也没什么，10个这样的应用也没什么。前面也说了，开发者通常都会考虑如何处置缓存，即便他们选择不自动清理缓存也是有原因的。比如微信，在清理缓存页面里有这样一段话：</p>
<div class="blockquote"><blockquote><p>微信仅占据不到1%的储存空间，可用储存空间充裕，可不清理。</p>
</blockquote></div>
<p><a href="https://cdn.jbguide.me/wp-files/2015/01/IMG_1936.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/01/IMG_1936-168x300.jpg" alt="IMG_1936" /></a></p>
<p>你和家人互发的照片，短视频都在缓存中，每次打开对话都能够快速打开，这不是件很正确的事情吗？</p>
<p>所有音乐应用的离线功能都是通过缓存实现的，开发者的初衷都是让你能够直接播放已经播放过的歌曲，所以他们不推荐你频繁地清理软件的缓存。Spotify 直接无法在软件里找到清理缓存的按钮，原因很简单，我为什么要一口气删掉离线了数 G 的音乐？</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/01/IMG_1933.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/01/IMG_1933.jpg" alt="Spotify" /></a></p>
<p>升级系统前，很多朋友都会遇到空间不足无法升级的情况。这时你要做的不应该是疯狂地删除程序，或是用今天要介绍的这款软件大肆清理，而是通过 iTunes 来升级。</p>
<h2 id="toc_6"><a href=""></a>CacheClearer</h2>
<p>这款插件直接植入到系统本身的选项里，没有增添多余的图标和设置选项。你可以在<code>设置——通用——用量</code>中的<code>管理储存空间</code>这个选项里选择任何一个应用来查看和删除应用缓存，效果也很明显。</p>
<div class="block-list"><ol>
<li>Tweetbot。清理之后打开应用会显示空白，仿佛第一次打开应用，可是用户信息还保留在应用中。</li>
</ol>
</div><p><a href="https://cdn.jbguide.me/wp-files/2015/01/tweetbot2.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/01/tweetbot2.jpg" alt="tweetbot2" /></a></p>
<div class="block-list"><ol start="2">
<li>Instagram。并没能完全清理掉缓存，并且 CacheClearer 说下次打开应用可能会动作慢点儿。</li>
</ol>
</div><p><a href="https://cdn.jbguide.me/wp-files/2015/01/instagram.jpg" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/01/instagram.jpg" alt="instagram" /></a></p>
<h2 id="toc_7">最后</h2>
<p>这是一个功能不能再简单的插件，却解决了一个「刚需」，可是笔者仍然强调：缓存有用，不到万不得已不要清理。即使清理也先使用应用内提供的清理功能，再使用 CacheClearer。如果你不计后果，那就爽快地清理吧。</p>
<div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">CacheClearer</td><td style="text-align: left;">rpetri.ch/repo</td><td style="text-align: left;">Free</td><td style="text-align: left;">iPhone 6</td><td style="text-align: left;">★★★★</td></tr></tbody></table></div>
 ]]></content:encoded></item><item><title><![CDATA[ 【IDBox】在 iOS 设备上快速切换 Apple 账户 ]]></title><guid>https://jbguide.me/2015/idbox</guid><link>https://jbguide.me/2015/idbox</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Thu, 15 Jan 2015 05:24:20 +0000</pubDate><content:encoded><![CDATA[ <h3 id="toc_1">插件基本信息</h3>
<div class="block-list"><ul>
<li>作者：国人<a href="http://www.weibo.com/ioodo">@ioodo</a></li>
<li>系统版本：iOS 7.x ~ 8.x</li>
<li>机型：全部</li>
<li>价格及购买相关： - 下载免费，激活收费（可使用支付宝）</li>
<li>一个激活码可以激活三台机型</li>
</ul>
</div><h3 id="toc_2">使用情境</h3>
<p>一般来说，用苹果设备时间久了的人都会对设备上的软件开始挑剔，希望用到同类软件里最适合自己的。这些人会在排行榜里淘软件，但是会发现我国的 Apple Store 排行榜被刷的不堪入目；这些人也会看测评，可有时候会发现他们看上的软件中国区竟然没有需要去其它区下载……各种各样的原因人们需要<strong>不止一个 Apple ID</strong>，但是 Apple ID 多了以后也并不只有好处。切换 Apple ID 是一件很麻烦的事，你需要注销原来的 Apple ID、需要重新输入你另一个 Apple ID、再重新输入你的密码……</p>
<p>如果是 Mac，可以用 Keyboard Maestro 来切换 Apple ID<a href="#fn:1" title="see footnote">[1]</a>，但在 iOS 上，如果你不越狱，你就只能老老实实地按部就班地来切换。如果你越狱了，在 iOS 7 之前，你可以用 <a href="https://twitter.com/filippobiga">FilippoBiga</a> 的 PasswordPilot Pro 来切换账户。但 PasswordPilot Pro 在 iOS 8 无法使用，作者似乎也不打算再对其进行更新。于是在 iOS 8，有多个 Apple ID 的话就得按步骤来。直到今天翻 Cydia 的更新，看到了来自国人插件作者<a href="http://www.ioodo.com/">@ioodo</a> 的 IDBox。</p>
<h3 id="toc_3">插件设置及功能</h3>
<p>IDBox 没有设置选项，桌面也没有图标。它显示在 App Store 这个软件最下层，点了 <code>IDBox</code> 的按钮就会看到账户切换界面和设置界面：</p>
<p><a href="https://cdn.jbguide.me/wp-files/2015/01/1.png" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2015/01/1.png" alt="1" /></a></p>
<div class="block-list"><ul>
<li>在 Apple 帐号的右边会显示国籍。</li>
<li>设置选项很简单，只有一项就是是否跟随账户所在区域修改 AppStore 的语言。</li>
<li>不购买授权是无法试用的</li>
</ul>
</div><h4 id="toc_4">评价和问题</h4>
<p>一个字，快！如果你用过 PasswordPilot 的话你可能会对这类软件的效果有点怀疑，但是 IDBox 的效果要比预期得好，选择 ID 马上就会切换成功，不拖泥带水。</p>
<p>我个人在使用过程中发现和想到了三个问题，跟作者进行了沟通：</p>
<p><strong>问题一：是安全问题，这个插件是怎么处理用户的密码的？</strong></p>
<p>回答：通过iOS系统的私有接口<strong>只能</strong>读取到账号名称，国家代码信息，<strong>密码是读取不到的</strong>，切换账户也是依据账户名去切换的，所以无需担心安全问题，请放心使用。</p>
<p><strong>问题二：为什么只在 App Store 下有选项，有没有考虑 iTunes Store。</strong></p>
<p><em>其实在 App Store 切换后 iTunes 也会自然切换，只是我认为很多因为买歌而注册多国账户的人会想要直接可以在 iTunes Store 切换账户</em></p>
<p>回答：第二个问题，关于iTunes Store还没有了解相应的API，所以不能确定是否可以实现切换</p>
<p><strong>问题三：为什么不在设置里提供一个选项？</strong></p>
<p><em>因为把选项放在 App Store 那个界面里，一是打开软件时花费读取的时间、二是需要滚动到页面底部。在设置选项里切换的话会省掉这些步骤更方便。</em></p>
<p>回答：的确按钮在底部有些不便，后续可能会考虑放到AppStore的更新栏的导航按钮上。</p>
<p>除了 IDBox 之外，作者在 Cydia 里也发布过一些其它的插件（iOS 设备上点击插件名可以直接跳转到 Cydia，具体插件介绍见<a href="http://www.ioodo.com/">作者网站</a>）：</p>
<div class="block-list"><ul>
<li>个人隐私保护插件：<a href="cydia://package/com.ioodo.appro">Appro</a></li>
<li>微信隐私保护插件：<a href="cydia://package/com.ioodo.safewechat">SafeWeChat</a></li>
<li>Whatsapp隐私保护插件：<a href="cydia://package/com.ioodo.safewhatsapp">Asuo</a></li>
<li>一键退出所有软件：<a href="cydia://package/com.ioodo.release">iRelease</a></li>
</ul>
</div><div class="block-html"><table><colgroup><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col><col style="text-align: left;"></col></colgroup><thead><tr><th style="text-align: left;">插件名</th><th style="text-align: left;">源名称</th><th style="text-align: left;">价格</th><th style="text-align: left;">测试机型</th><th style="text-align: left;">评分</th></tr></thead><tbody><tr><td style="text-align: left;">[IDBox](cydia://package/com.ioodo.idbox)</td><td style="text-align: left;">Bigboss</td><td style="text-align: left;">$1.99</td><td style="text-align: left;">iPhone 6 Plus</td><td style="text-align: left;">★★★★★</td></tr></tbody></table><div class="footnotes">- - - - - -</div>
<div class="block-list"><ol>
<li>具体办法可以看 <a href="https://twitter.com/roamlog">@roamlog</a> 的<a href="http://readful.com/post/77044128470/keyboard-maestro-appstore">利用 Keyboard Maestro 切换 Appstore 帐户</a>这篇文章。但他写的不是很细，具体步骤在 Yosemite 也好像有些变化，关于菜单的选项跟系统语言也有关，所以如果是新手需要好好想想。 <a href="#fnref:1" title="return to article"> ↩</a></li>
</ol>
</div><div class="block-html"></div></div>
 ]]></content:encoded></item><item><title><![CDATA[ 【Workflow 教程】如何上手 Workflow ]]></title><guid>https://jbguide.me/2014/getting-started-with-workflow</guid><link>https://jbguide.me/2014/getting-started-with-workflow</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Tue, 30 Dec 2014 10:58:39 +0000</pubDate><content:encoded><![CDATA[ <p><a href="http://jbguide.me/2014/12/18/workflow-review-what-is-workflow/">上篇文章</a>算是大略地介绍 Workflow 是什么的引文，这篇开始将要正式地使用 Workflow 了。第一篇文章将直接以大家最常用的社交网站为例来介绍 Workflow 的基础用法。</p>
<p>具体内容是：</p>
<div class="block-list"><ol>
<li>把同样的<strong>文字内容</strong>一次性发送到 <strong>Weibo 或/和 Twitter</strong>。</li>
<li>把同样的<strong>文字+图片</strong>一次性发送到 <strong>Weibo 或/和 Twitter</strong>。</li>
<li>通过 Share Sheet 分享任意链接并且加上自己想说的话，然后发送到 <strong>Weibo 或/和 Twitter</strong>。</li>
<li>将以上三步合并为一个 Workflow，执行时选择其中一个然后让 Workflow 自动进行后面的工作。</li>
</ol>
</div><h2 id="toc_1">将<strong>文字内容</strong>送到<strong>Weibo 或/和 Twitter</strong></h2>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/1.png" alt="在这里用到的动作只有三个" /></figure></div><h3 id="toc_2">Text</h3>
<p><code>Text</code>是最简单也比较常用的动作，最关键的是我们对它非常熟悉——“就是个输入框嘛，往里打字就可以了呗。”如果你这么想就对了，这软件上手就是这么的傻瓜式——你要做的就是把想发的微博内容输入到 Text 的文本框里。</p>
<h3 id="toc_3">Ask for Input</h3>
<p>上面介绍的是 <code>Text</code> 文本框，我们看到它非常熟悉，但是它的一大缺点是会保留上一个操作留下的内容。也就是说，你每一次通过 Workflow 发微博，都需要把上一次发的内容先删了才行。所以我实际上建议在这个 Workflow 里实用<code>Ask for Input</code> 这个动作。</p>
<p><code>Ask for Input</code> 这个动作也是 Workflow 里最常用的动作，我在<a href="http://jbguide.me/2014/12/18/workflow-review-what-is-workflow/">上一篇文章</a>也提到过它。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/1-1.png" alt="1-1" /></figure></div><p>你把 <code>Prompt</code> 里填上“微博内容”，这样每次打开这个 Workflow，直接点击运行。它就会弹出个对话框让你输入微博内容。</p>
<h3 id="toc_4">Tweet</h3>
<p><code>Tweet</code>的动作框里，前半部分写着“Show Compose Sheet”意思是“显示内容编辑框”，后面是一个开关：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/22.png" alt="内容编辑框" /></figure></div><p>如果你把开关打开，那么就是选择显示内容编辑框，这么做的优势在于：</p>
<div class="block-list"><ol>
<li>可以看到文本（图片）内容、字数。</li>
<li>如果你是多账户的话，临时可以选择账户。</li>
<li>可以临时修改内容。</li>
<li>可取消该步骤</li>
</ol>
</div><p>但想必你会马上意识到“妈的我刚写好的东西有什么可修改的？”所以其实显示内容编辑框的优势并不明显。而关闭那个开关，也就是不显示内容编辑框的话，界面就会变成这样：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/32.png" alt="关闭开关" /></figure></div><p>它的好处是：直接后台发送内容，省掉你点击编辑框的时间，以及等待发送成功再进行下一步的时间。</p>
<p>但是如果你确实有选择账户的需求，又不想看到内容编辑框浪费时间呢？Workflow 同样可以做到：按下 Tweet 动作框里选择账户的部分，你就能看到一个弹出菜单，里面会有<code>Ask When Run</code>、<code>Clipboard</code>、<code>Input</code>三个选项，你选择<code>Ask When Run</code>，就能在动作进行到这一步的时候自动出现一个对话框来问你选择哪个账户发送。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/44.png" alt="选择账户" /></figure></div><p>注意，在内容编辑框里，我们需要先按一下选择账户那个位置——也就是说我们要先看一下那个位置在哪——然后再选择账户。而在 <code>Ask When Run</code> 这种方式下，我们是直接选择账户。</p>
<p>另外，记住，在 Workflow 这款软件里，凡白皆可点，每个动作框里只要有白色的区域就是可以点的，只要有菜单出现就至少能看到 <code>Ask When Run</code>、<code>Clipboard</code>、<code>Input</code> 这三个选项，<strong>活用 <code>Ask When Run</code> 能让你做到一些你认为你做不到的事。</strong></p>
<h3 id="toc_5">Share</h3>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/51.png" alt="分享按钮" /></figure></div><p>Share 这个动作就是大家最熟悉的分享按钮了，之所以要用到它是因为 Workflow 在当前版本（1.0.1）还没有支持微博的分享功能，等到支持了应该就能和 Tweet 这个动作一样，可以在后台发送。也就是说，你只要编辑好内容，点一下发送，剩下的 Workflow 帮你做好。</p>
<h2 id="toc_6">将<strong>文字+图片</strong>发送到<strong>Weibo 或/和 Twitter</strong></h2>
<p><em>在这一步我们将谈到变量，你会发现它果然也很容易。</em></p>
<p>会发文字微博了，图文微博怎么办。在文字微博那个 Workflow 上再加几步就能做到。</p>
<h3 id="toc_7">选择照片</h3>
<p>在动作列表里找到 <code>Select Photots</code> 这个动作，用它来选择照片。拖到你的 Workflow 里以后你会发现有个 <code>Select Multiple</code> 的开关，打开就能多选图片，但是 iOS 本身不能上传多图到社交网站——你可以自己试试在相册里选择多图的话，Twitter 和微博这两个选项都会不见的——所以 Workflow 以及任何通过 iOS 内置的功能去分享照片的办法只能分享一张照片。所以这个开关在这个 Workflow 关上就行了。</p>
<p>另外，如果你经常分享最后一张照片（或者是手机截图）的话，你可以在 Workflow 的动作列表里找到 <code>Get Latest Photos</code> 和 <code>Get Latest Screenshots</code>这些选项，拖到 Workflow 里试试看会有什么效果~</p>
<h3 id="toc_8">设定变量</h3>
<p><em>终于看见“变量”这俩字了，是时候克服你从初中数学开始就对这两个字产生的恐惧了。</em></p>
<p>为了节省时间，我们要使用 Workflow 把两种不同的内容（文字和图片）作为一个整体发送出去。这一点的困难就是你得告诉 Workflow 他们俩（文字和图片）是一起的。在 Workflow 里的做法，就是：把文字放到一个变量里，把图片放到一个变量里，然后把这俩变量合成一个变量，交给 Workflow。</p>
<p>具体的操作是，在动作列表里找到 <code>Set Variable</code> 也就是“设定变量”这个动作，然后拖到 <code>Select Photos</code> 这一步的下面，你会发现这两个动作中间连起了一条线，这就说明 Workflow 明白了你要把你选的那张照片设为一个变量。然后你可以在 <code>Set Variable</code> 后面的空白处输入你想输入的东西，我在这里输入了“图片”，你可以输入“img”，它就像给这张图片起了个临时的名字，什么名字都可以，中文英文符号只要你明白就都可以。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/71.png" alt="给图片设置变量" /></figure></div><p>所以你可以这样看 Workflow 里的变量——给前面那一步的结果起个名字。</p>
<h3 id="toc_9">添加变量</h3>
<p>前面说到，我们在这里用变量的原因是要用 Workflow 把两种不同的内容（文字和图片）作为一个整体发送出去。所以要给图片起个名字（设个变量）、给文字也起个名字（也设个变量），然后把它俩放在一起成为一个组合，再给组合起个名字（设个新变量）。</p>
<p>在 Workflow 里，这个步骤要分开来做。也就是说，图片起了名字以后，直接就可以成立组合，等一会儿给文字起名字以后把他加到这个组合里就行了。这在 Workflow 里的具体做法是：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/81.png" alt="将一个变量添加到另一个变量" /></figure></div><p>在动作列表里找到 <code>Add to Variable</code> 也就是“添加到变量”这个动作，拖到你的 Workflow 里，<code>Set Variable</code> 这一步下面，那条连接的线就又会出现，你应该已经懂得它代表什么了。同样，这个组合的名字你可以随便给，我给的是“图文”。</p>
<h3 id="toc_10">对文字的处理</h3>
<p>我们现在已经把文字和组合的变量设妥了，现在要处理文字了。我们要给文字设个变量，再把文字这个变量加入到组合的变量里。具体做法是：</p>
<p>把 <code>Set Variable</code> 拖到 <code>Ask for Input</code> 下面，给它起个名字；再把 <code>Add to Variable</code> 拖到 <code>Set Variable</code> 下面，<strong>注意，这里现在要填的是组合的名字，你不能再胡给名字了</strong>。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/9.png" alt="9" /></figure></div><h3 id="toc_11">删除照片</h3>
<p>Workflow 可以在处理完照片以后删除这张我们再也不会用的照片，在这个 Workflow 里，只要你把 <code>Delete Photos</code> 这一步放到 <code>Share</code> 这一步的下面就可以了：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/10.png" alt="10" /></figure></div><p><em>Workflow 里有修改图片的功能叫做 <code>Edit Photo</code>，这个在分享照片的时候很实用，一般你给人看图片就会有希望让他看的那个“点”，通过 <code>Edit Photo</code>你就可以把你想让对方看的地方标记出来。那么你能不能在这个环节介绍的 Workflow 里加上 <code>Edit Photo</code> 这个动作，让你的 Workflow 更实用？</em></p>
<p><em>有时候人们分享图片是只想分享图片，不加字儿，但是新浪微博要求必须加字才能发微博。所以它官方客户端在只分享图片的时候的做法是自动添四个字“分享图片”。通过 Workflow 能不能做到？</em></p>
<h2 id="toc_12">通过 Share Sheet 分享任意链接发送到<strong>Weibo 或/和 Twitter</strong></h2>
<p>有时候你看到了一篇网站或者在你的 RSS/Read Later 客户端里读到了一篇你想分享的文章，你在 App Store 看到了一个好的 App 或者游戏，你想把它同时分享到 Twitter 和微博，通过 Workflow 也可以轻松做到。</p>
<h3 id="toc_13">Workflow Type</h3>
<p>在这个环节我们要接触 Workflow Type，它只有两种，所以没什么难的。</p>
<p>查看 Workflow Type 的方法是在每个具体的 Workflow 的右上角寻找齿轮图标，里面是一个菜单，其中有一项是让我们选择 Workflow Type：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/11.png" alt="Workflow Type" /></figure></div><div class="block-list"><ul>
<li><code>Normal</code> 类型的 Workflow 不会出现在 iOS 的分享菜单里面，只能通过 Workflow 这个程序本身运行。前面的内容都是在 Narmal 这个类型里完成的。</li>
<li><code>Action Extension</code> 类型的则<strong>可在 Workflow 程序内运行</strong>也可在分享菜单中运行（Workflow 的相应位置有图解）。我们在这里要用到它，比较强力的 Workflow 一般都要用到它。</li>
</ul>
</div><p>我们选择 <code>Action Extension</code> 能看到 <code>Accepts</code> 这个选项，打开后里面有一个列表，这个列表里显示的是 Workflow 分享菜单里接受的数据类型。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/12.png" alt="选择 URLs" /></figure></div><p>我们在这里是要分享链接到微博和 Twitter，所以可以把其它的都删掉只要留下 URLs 就可以。</p>
<p>这其实已经是“分享链接到微博和 Twitter”这个 Workflow 的第一步——获取链接，下一步我们要做的，就是要给链接设一个变量——我在这里设置的是“链接”——好把这个链接和我们一会想发的微博放在一起。</p>
<p><img src="https://cdn.jbguide.me/wp-files/2014/12/13.png" alt="直接把获取的 URL 设为变量" />直接把获取的 URL 设为变量</p>
<p>然后下一步，我们要开始输入微博正文了，我们还是和以前一样要用到 <code>Ask for Input</code> ，然后给它的结果也设置一个变量，我在这里设置的是“正文”。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/14.png" alt="14" /></figure></div><p>最后通过 Text 框把两个变量放到一起。这一步有点小技巧：当你点进 Text 框，你会发现弹出的键盘上有 <code>Ask When Run</code>、<code>Variable...</code>、<code>Clipboard</code>这三个按钮，选择 <code>Variable...</code>，你就可以看出一个弹出的菜单，里面有你在前面设置好的所有变量。比如说我前面设定了选择其中的变量，就会在 Text 框里出现一个套着蓝色框的变量——<strong>这就是 Workflow 的自定义变量的表现方式</strong>：</p>
<p><img src="https://cdn.jbguide.me/wp-files/2014/12/15.png" alt="Workflow 里变量的表现方式" />Workflow 里变量的表现方式</p>
<p>到了这一步的逻辑是，你给链接设了个变量（link），然后输入微博，给这个微博内容也设个变量（正文），最后在 Text 框里面给这两个变量排一下顺序，决定让微博内容在先还是链接在先，最后将 Text 框里的整体作为微博发送出来。所以最后不要忘记加上 <code>Tweet</code> 跟 <code>Share</code> 这两个动作。</p>
<p><em>既然是分享链接（一般是文章）到社交网站，比较方便的办法其实是直接引用文中一段话作为对这个链接的介绍。所以你可以想想，能不能这个环节介绍的 Workflow 稍作改动，做一个“<code>Clipboard</code>+ <code>link</code>的 Workflow”？</em></p>
<p><em>如果你不只想分享链接，还想分享 Safari 里看到的文章的标题，要怎么做？试试看 <code>Get Name</code>这 个动作。</em></p>
<h2 id="toc_14">将以上三步合并为一个 Workflow</h2>
<p><em>我们用效率软件是因为我们“懒”，所以既然懒了，就要有懒到底的精神。</em></p>
<p>现在你已经分别掌握了发送文字内容/图文内容/链接内容到微博和 Twitter 的方法。如果你三种使用情境都有的话，这就意味着你要做3个 Workflow 了。做三个 Workflow 没什么不好，唯一的缺点是“不够懒”。既然都是把东西发送到微博和 Twitter，我们能不能把它们做到同一个 Workflow？让我们做到在分享内容的时候只用这一个 Workflow，然后弹出一个菜单里面有“文字微博”、“图文微博”、“分享链接”，然后我们需要哪种分享方式就选哪种分享凡事，剩下的交给 Workflow 来处理。</p>
<p>答案自然是可以。在这里我们要介绍 Workflow 这款软件里复杂动作的核心内容——<code>List</code>、<code>If</code> 和 <code>Choose from Menu</code>。</p>
<h3 id="toc_15">List——列表</h3>
<p>我们要做的是要弹出一个菜单，里面有“文字微博”、“图文微博”、“分享链接”给我们选，所以这第一步，可以是一个列表。从 Workflow 里找到 <code>List</code> 拖到你的 Workflow 里，在里面分别写上“文字微博”、“图文微博”、“分享链接”，行不够了可以按添加按钮来添加行。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/16.png" alt="16" /></figure></div><p>然后我们要从这个列表里选一样，所以要用到 <code>Choose from List</code> 这个动作。同样，找到它然后拖到你的 Workflow 里。因为我们选的是其中“一项”，所以可以把“Select Multiple”这个开关关闭。</p>
<p>然后下一步，就是选完其中一项以后，让 Workflow 知道你选的是什么，然后执行之后的操作。那么其实这里面的逻辑是：</p>
<div class="block-list"><ul>
<li>“如果”我选择的是文字微博，“那么”就让 Workflow 执行关于文字微博的操作；</li>
<li>“或者”我选择的是图文微博，“那么”就让 Workflow 执行关于图文微博的操作；</li>
<li>“又或者”我选择的是分享链接，“那么”就让 Workflow 执行关于分享链接的操作。</li>
</ul>
</div><h3 id="toc_16">If——条件</h3>
<p>这个“如果……那么……”在 Workflow 里就是 “If 语句”，上述的逻辑在 Workflow 里的操作是：</p>
<p>把 <code>If</code> 拖进 Workflow，你会发现它和其它动作不太一样。If 会带下来 <code>otherwise</code> 和 <code>End If</code> 两个配套的动作。</p>
<p>我们在 <code>If</code> 框里的“String Contains”后面，输入“文字微博”。然后在这一步的下面，把发文字微博的 Workflow 的动作——<code>Ask for Input</code>、<code>Tweet</code>、<code>Share</code> 依次排好：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/17.png" alt="使用 If" /></figure></div><p>图片中 <code>If</code> 下面的内容，都会有一个缩进，它的意思就是这些缩进了的内容都是在 <code>If</code> 框里设定的条件达到后才会运行的。这整个一步完整的意思是：如果我们在 <code>List</code>——列表里选择的内容里有“文字微博”，我们就执行文字微博的 Workflow。</p>
<p>做好文字微博这部分了，我们反回头看 <code>Otherwise</code> 跟 <code>End If</code>。</p>
<p>如果你的 Workflow 只匹配一个条件，匹配到了就执行该条件下的内容，匹配不到就拉倒的话。你就不需要管这个 <code>Otherwise</code> 跟 <code>End If</code>。比如说，你想吃苹果，不想吃任何其他水果，然后你去菜市场买苹果。这个情境用 If 来表示就是：</p>
<p><code>If</code> 有苹果，买——<code>Otherwise</code> 没苹果，不买东西——<code>End If</code>。</p>
<p>在发微博这个情境里，我们有三种情况。第一个 <code>If</code> 我们匹配了“文字微博”，第二个 <code>If</code> 要加到哪？加到 <code>Otherwise</code> 下面：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/18.png" alt="Otherwise If" /></figure></div><p>这就成立了一个新的关系：<code>If</code>——如果匹配到“文字微博”，就执行文字微博的 Workflow；<code>Otherwise If</code>——或者匹配到“图片微博”，就执行图片微博的 Workflow……所以相信剩下内容已经不用再说了，包括最后一个“分享链接”的 Workflow 你也应该知道该怎么办了。</p>
<h3 id="toc_17">Choose from Menu——从菜单中选择</h3>
<p><em>通过 <code>List</code> 和 <code>If</code>，你已经做到了把 3 个同类 Workflow 合并到一起，它们两个的合作还会有更多强大的功能。但是，在我们这个“分享微博”的 Workflow 里，它们不是最合适的。因为 <code>If</code> 只是</em><em>匹配我们在 <code>List</code> 列表里选出的结果的内容的字符</em><em>，不是我们想要的“选了菜单的某一项就自动进行这一项下的内容”，两者有本质上的不同。</em></p>
<p>最合适这个 Workflow 的功能是 <code>Choose from Menu</code>：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/19.png" alt="Choose from Menu" /></figure></div><p>把动作拖到你的 Workflow 里，在菜单填上“文字微博”、“图文微博”、“分享链接”，然后相关部分的名字自然也会发生改变，然后你可以在“文字微博”这一项目下做你的文字微博的 Workflow ，在“图文微博”的条目下做图文微博的 Workflow……</p>
<p><code>Choose form Menu</code> 在这个分享微博这个需求下明显直观许多，也比 <code>If</code> 要精确。但也正因如此，它没有 <code>If</code> 的应用面广。在 Workflow 里，做出来一个能运行的 Workflow 是第一步，找到最适合它的动作把它优化到最简单最直观是终极目的。</p>
<p>整篇教程正文到此结束，最后把成品的链接分享给大家：<a href="https://workflow.is/workflows/041ca3815b9546f98bb2604c458286db">Post to T/W</a></p>
<h2 id="toc_18">为什么用这种办法发微博？</h2>
<div class="block-list"><ol>
<li>方便</li>
<li>减少干扰</li>
<li>减少对别人的干扰</li>
</ol>
</div><h3 id="toc_19">方便</h3>
<p><em>如果通过 Workflow 做某件事不如用以前的方法简便，就不要用 Workflow。</em></p>
<p>在“同时发送微博和 Twitter ”这个情境下，使用 Workflow，你就不需要分别打开两款软件的微博客户端，不需要等待客户端的读取，不需要看某些客户端的启动广告，然后不需要去点击编写按钮，甚至不需要去点击发送按钮；在分享链接的情况下，你不需要去点 Safari 的地址栏去全选链接，然后再复制链接，然后再分别打开两个客户端，重复前面提到的动作……高下立判。</p>
<h3 id="toc_20">减少干扰</h3>
<p>微博客户端不只是个分享内容的地方，还是个浏览内容的地方。所以它的问题在于，你虽然最初是只想“发一条微博”，但开了微博客户端以后，你就不只是发微博了，你的 Timeline 吸引着你，瞥了一眼搞笑图片结果“哈哈哈哈哈”个不停，一不小心一个小时就没了，说不定最初你想发的那条微博都没发出来。</p>
<h3 id="toc_21">减少对别人的干扰</h3>
<p>其实如果只是图方便，用 IFTTT 也可以做到，而且好像比 Workflow 还简单些。但是 IFTTT 是无条件地将一个服务的所有内容全部转到另一个服务，这点很蠢，更重要的是这样很骚扰人。如果你的微博昵称跟 Twitter 的用户名一样，当那些用 IFTTT 的人用微博和 Twitter 中的一个服务 at 你，另一个服务就也会 at 你。此外，你在微博转发一条内容 IFTTT 会把你说的话同步到 Twitter 但不会把你转发的原微博同步到 Twitter，所以如果你 Fo 了一些用 IFTTT 的人，你会看到他们总是在说一些摸不着头脑没有上下文的话。</p>
<p>如果你希望同时把内容微博发到微博和 Twitter，你就要首先学会取舍。这里有一个很简单的逻辑，如果你两个地方说的话都永远一样，那别人（除了表示关系好以外）有什么必要两个地方都 Follow 你？你可能会说你的粉丝里有那种只用其中一种服务而不用另一种服务的人，这点其实没那么有必要担心，只要用 Twitter 的人，几乎都会用微博。相信我，那些故意不用微博只用 Twitter 的中文 microblog 使用者，不太会在意一个用 IFTTT 无筛选地同步所有内容的人所发的东西。</p>
<h2 id="toc_22">与 Launch Center Pro 比较的优势</h2>
<p>使用 Launch Center Pro 时间久的朋友应该都知道通过 Launch Center Pro 也是可以做到分享文字+图片或纯文字内容到 Weibo 和 Twitter 的。<a href="http://weibo.com/u/3183472515">@饺子如何是好</a>就曾做过一个 Launch Center Pro 的<a href="https://launchcenterpro.com/dhh0sw">动作</a>来完成这两个功能。</p>
<p>你可以点开网站看一下那个 URL Schemes 。它和 Workflow 到底谁简单我们另论，且说功能本身，与 Launch Center Pro 相比，Workflow 在这个动作上就有至少两个优势：</p>
<p>第一：我们总会遇到那种想发到微博或 Twitter 其中某个地方而，由于 Launch Center Pro 不支持 <code>x-cancel</code>，所以如果你是按照先发推后发微博的顺序写好 Url Scheme 的话，你就不能临时取消发推这个动作，因为一旦你取消发推的话，动作就被中止了，后面发到微博的那一步就不会执行了。而 Workflow 则能够中断其中一步而执行下一步。换句话说，比如你习惯了通过 Workflow 来发送原创微博，有些内容你不想发到 Twitter 只想发到微博，那你可以在 Workflow 里取消发送到 Twitter 而进行下一步发送到微博的操作。</p>
<p>第二：Workflow 支持分享插件，这一点是非常聪明的，它让 Workflow 直接渗透到了 iOS 的各个角落。</p>
<h2 id="toc_23">复习</h2>
<p>读完这篇文章，你应该熟悉的关于 Workflow 的内容有：</p>
<div class="block-list"><ul>
<li><code>Text</code> 文本框</li>
<li><code>Ask for Input</code> 功能（以及它和文本框的区别）</li>
<li><code>Tweet</code> 功能（Show Compose Sheet 开或关有何不同？）</li>
<li>凡白皆可点</li>
<li><code>Ask When Run</code> 的作用以及何时使用</li>
<li><code>Set Variable</code>设定变量</li>
<li><code>Add to Variable</code> 添加到变量</li>
<li>部分关于图片的动作</li>
<li><code>Workflow Type</code> &amp; <code>Action Extension</code></li>
<li><code>List 列表</code></li>
<li><code>If</code> 条件语句</li>
<li><code>Choose From Menu</code> 从菜单中选择</li>
</ul>
</div><h2 id="toc_24">相关阅读</h2>
<p><a href="http://jbguide.me/2014/12/18/workflow-review-what-is-workflow/">【Workflow 测评】Workflow 是款什么软件</a></p>
 ]]></content:encoded></item><item><title><![CDATA[ 【Workflow 测评】Workflow 是款什么软件？ ]]></title><guid>https://jbguide.me/2014/workflow-review-what-is-workflow</guid><link>https://jbguide.me/2014/workflow-review-what-is-workflow</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Thu, 18 Dec 2014 12:38:00 +0000</pubDate><content:encoded><![CDATA[ <h2 id="toc_1">为什么我们要“折腾”效率软件</h2>
<p><a href="http://zh.wikipedia.org/wiki/%E6%8B%89%E9%87%8C%C2%B7%E6%B2%83%E5%B0%94">Larry Wall</a> 说程序员（黑客）有三大美德：</p>
<div class="blockquote"><blockquote><p>懒惰、傲慢、缺乏耐性。</p>
</blockquote></div>
<p>这里的<strong>懒惰</strong>说的是“为了让事情变得轻松一点而不辞辛苦”，原文是：</p>
<div class="blockquote"><blockquote><p>驱使你极力努力以减少精力的总的消耗的美德。</p>
</blockquote></div>
<p>这话这么说可能看起来怪，但中文也有含义差不多的谚语——“磨刀不误砍柴工”。</p>
<p>使用电脑和手机这样的“智能”设备，想实现某个结果都有一定的流程，很多时候这些流程里的某些步骤是<strong>重复</strong>的。重复就会有两个弊端：第一是浪费时间，试想如果你能把某个常用的流程缩短了几步，那么每一次用这个流程你都省了一点儿时间，长久累积起来你能节省的时间就很可观了；第二个弊端是增加干扰，从锁屏就能看到的通知开始，智能设备里一切元素都是为了吸引你的注意力，步骤越多你受到的干扰就越多被打断的可能就越高，很多时候你想到一件事需要用手机完成，但是你拿出手机划了一会就忘了你当初为什么要拿出手机了。</p>
<p>所以在智能设备上我们需要那些能够缩短我们流程的软件，能够帮我们直击任务，从而让我们保持注意力并且节省时间。</p>
<p>试想你看到一个网页上有部分设计不错要分享给同事，在 iOS 上，它的流程就是这样：</p>
<div class="blockquote"><blockquote><p>截图——打开一个编辑图片的软件——选择刚才的截图——圈出你认为设计好的部分——保存到相机胶卷——分享给朋友——删除截图</p>
</blockquote></div>
<p>这里面有许多多余的干扰，比如你会想“我用哪个图片编辑软件好”？打开图片编辑软件后有的可能还会让你登录；不同的编辑软件取图的逻辑不一样，有的是按从新到旧排有的是从旧到新排序，所以你需要找一下你刚截的那张图；然后修改完保存完分享的时候又要找一下刚保存的截图，而且注意你现在有两张截图了，一张是改过的，一张是原始截图；最后你要把两张图都删除掉。</p>
<p>通过 Workflow，这整个过程就会化简很多：**它会自动地获取你刚截的那张图片，通过 Workflow 内置的<a href="https://developers.aviary.com">Aviary SDK</a>，你获取了刚刚的截图就可以直接开始编辑图片，编辑完毕以后自动弹出 iOS 内置的分享选项（你也可以设定某个具体软件、某个具体联系人，这样每次就会直接通过你惯用的软件发给固定的同事），最后删除刚才的截图。由于图片修改并未保存到相机胶卷所以被修改的截图本来就不存在。</p>
<p>这样的操作，首先目前只有 Workflow 才能做到不说，关键在于 Workflow 使用的图形操作模式，让整个流程变得<strong>可见</strong>所以<strong>容易</strong>。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/照片-14-12-18-下午3-22-47.png" alt="1" /></figure></div><p>有的人不看好这样的软件，因为在目前的 iOS 平台上它们看起来“实用性”不大，跳来跳去的，折腾半天可能也成功不了。说它们是效率软件还不如说它们是爱折腾那帮人的“玩具”。这让我想到凯文•凯利的话：</p>
<div class="blockquote"><blockquote><p>在1800年，200年前的时候，当时的高科技就是帆船，就是能够远航的船，非常的复杂，非常的高科技。它也是在全世界运输产品的好方式，这些运营公司都是全球性的公司，他们都是当时世界上最大的工作。当出现第一艘蒸汽船的时候，大家都嘲笑这些蒸汽船，说很可笑，很滑稽，很没有效率。他们经常出故障，然后成本也很高。大家把它们称作玩具，他们的确是玩具，因为他们没有用。但是他们做了一件事情是那些帆船做不了的，那就是他们能够往上游走。人类数千年来总是从上游到下游，但是你无法从下游到上游，这些蒸汽船就可以往上游走。然后，他们把这个小小的发明，这种小玩具的发明一直不断地持续，年复一年，日复一日，直到有一天在1875年的时候，基本上没有一家帆船运输公司留下来，他们都破产了。</p>
</blockquote></div>
<h2 id="toc_2">Workflow 是一款让所有人开心的效率软件</h2>
<p>能够缩短我们日常操作流程的效率软件 iOS 上已经出来了不少，Launch Center Pro、Drafts、Editorial、Pythonista 等软件各有所长，可以说各自坐稳了自己的江山，看起来这块领域已然无肉可分。但越狱开发者出身<sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup>的 <a href="https://twitter.com/AriX">Ari Weinstein</a> 却在这种市场环境下做出了 Workflow ，不仅一炮而红，而且获得了几乎整个 iOS 生态圈的认可：从小白到 Power User，再到软件开发者一片赞誉；苹果在 Workflow 发布当天就将其置为 Editor's Choice；而越狱相关的开发者们也都向以前的同行道喜祝贺。</p>
<p>小白能喜欢说明它简单——在 Launch Center Pro 里很多行“天书”的动作，在 Workflow 里只要拖几个动作块过来排排队就行了；Power User 喜欢说明它坑深——对于 Power User 来说，一个工具如果一折腾就到底就没意思了，这个工具的能力必须大于 Power User 的脑洞，才能被 Power User 认可；上面提到的那些效率软件的开发者之所以无一不称赞 Workflow，不仅因为 Workflow 本身优秀，还因为 Workflow 与这些软件之间的配合相得益彰。Workflow 开售后甚至带动了 Launch Center Pro 的销量<sup class="footnote-ref" id="fnref-2"><a href="#fn-2">2</a></sup>；Workflow 这次在分享菜单里弄这么大的动静苹果都给了 Editor's Choice ，回想起 Launcher 的境遇，觉得有点看明白苹果的意思了：通知中心就是来看的，想办事就用分享插件，随你折腾；插件开发者的祝贺是理所应当的——不仅因为作者曾是越狱开发团队 Chronic Dev Team 的一员，还因为插件开发本身就是为了拓展 iOS 设备的能力，所以 Workflow 这样的“Pushing the boundaries of automation on iOS.”的软件自然会被他们承认。</p>
<h2 id="toc_3">Workflow 的操作逻辑</h2>
<p>当你第一次进入 Workflow，这款软件会引导你做一个“Make GIF”的动作来让你了解整个软件的操作逻辑。基本来说，它就是拖拽和排列，只要你能想清楚整个流程发展的顺序，你就能成功地制作一个 Workflow。</p>
<p>就拿 GIF 这个来说，你当然必须先拍照，再合成 GIF。Workflow 的工作流程是从上到下的，所以你必须把拍照放在合成 GIF 之上，然后你要想分享这张 GIF，就得把分享放在 GIF 之下。整个逻辑很自然。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/21.png" alt="2" /></figure></div><p>第一版 Workflow 给了你<a href="https://s3.amazonaws.com/f.cl.ly/items/031m050u0B39231z0Z2k/Workflow_Actions_List%20copy.pdf">超过150个内置的动作</a>，在此之上作者还可以<strong>直接向软件加入动作而无需通过苹果审核</strong>，通过这些内置的任务理论上你可以做的事情非常多。所以它给了你足够的发展空间，就看你能不能根据自己的需求和能力制作出好用的 Workflow 了。</p>
<h2 id="toc_4">Workflow 的优势</h2>
<p>前面提到 iOS 上的效率软件的格局似乎已经写定，但 Workflow 却能够在这样的格局下一鸣惊人，没有自身的优势是做不到的。</p>
<h3 id="toc_5">直观所以简单</h3>
<h4 id="toc_6">易于摸索</h4>
<p>对于效率软件新手来说，Workflow 的优势就是直观——”看得见&quot;很重要。你知道你在干什么，你知道下一步将会发生什么，如果运行失败你也比较容易查出来问题出现在哪。让一个 Workflow 新手弄出来“将一张图片同时分享到微博和 Twitter 并配上想说的话”这样的动作很容易的，而在 Launch Center Pro 里通过 URL Schemes 来完成同样的话，恐怕就不是一个新手能够做到的。Workflow 门槛很低，会不会你都可以根据自己的需求把几个方块来回摆弄摆弄运行运行试试，先从两三个方块儿那种做起，慢慢把积木搭起来。</p>
<h4 id="toc_7">易于分享</h4>
<p>做成一个 Workflow ，想分享给别人是非常容易的，只要点击 Workflow 界面右上角的齿轮就可以看到分享的选项。Workflow 的分享机制只要是生成一个链接，然后将链接通过你选择的分享渠道分享出去。任何人只要点这个链接就可以看到你的 Workflow 的大概内容，然后点按下载就可以直接下载到自己的 Workflow 里。下载了的 Workflow 可以直接查看具体的内容和编辑，所以这非常利于学习和交流。</p>
<h4 id="toc_8">易于学习</h4>
<p>同时由于它直观，你不仅容易摸索，而且容易学习。学习有很多种，学校教授的内容由于系统性是很强的，所以我们一般要从头学起，从基础学起，那样的弊端就是漫长且枯燥。Workflow 不一样，Workflow 不一样，打开软件，你就可以看到顶部状态栏有个 Gallery：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/2.5.png" alt="2.5" /></figure></div><p>Gallery 里内置了不少作者已经编写好的 Workflow 供你使用参考学习。你可以直接下载别人的 Workflow，看看他是怎么弄的。这样的软件实用目的很强，你有什么目标，你就参考什么方面的 Workflow，然后自己再结合自己的情况修改，就能做成一个为你所用的 Workflow。</p>
<h3 id="toc_9">哪哪都能用</h3>
<p>大多数效率软件执行动作的时候最大的问题是“离不开自己”，每一次想启动某个特别的动作都需要进入特定的软件才能进行。Launcher 想到了从通知中心激活这些动作，然后就<a href="http://jbguide.me/2014/09/28/apple-takes-off-launcher/">被苹果封印了</a>。Workflow 则是运用了 iOS 8 的 Extension，分享插件是 iOS 上覆盖度仅次于通知中心的操作界面，这就让 Workflow 在不越线的情况下超越了“一个软件”而遍布于 iOS 的各个角落。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/31.jpg" alt="3" /></figure></div><p>结合 Workflow 支持 URL Schemes，它就能充当很多软件临时的分享插件，比如 Command C、instagram、Editorial等等。</p>
<p>而且 Workflow 也可以在 Safari 里大显身手。比如下载某个视频网页中正在播放的这个视频；又比如在网页里选择了某一句话，把它按照“出处，引用文本，日期”的格式保存到 Evernote 等等。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/4/fa/b38ebf5789deb5696f0b5f7a2212b.png" alt="3.5" /></figure></div><h3 id="toc_10">独特的内置动作</h3>
<p>Workflow 与大多数效率类软件最不同的一点是，它的主要内置动作不在于串联第三方软件的配合（当然和第三方配合得也很好），而是挖掘 iOS 内置功能。通过软件内部的引导你已经知道了 Workflow 可以调用相机，并且可以设定拍一定数量的照片后启动下一个动作。其它的内置功能还有获取联系人信息、查询日历中某一天的事件等等。在 Workflow 里，如果你使用 Apple 的地图软件的话，当你要计算到某地的事件的时候，它甚至可以让你先选步行还是坐车。</p>
<p>除此之外 Workflow 里有许多功能型<sup class="footnote-ref" id="fnref-3"><a href="#fn-3">3</a></sup>的内置动作是效率软件里独有的，比如把文件压缩、把结果制作成一张 PDF、把内容保存到 iCloud 等等。</p>
<p>而对于第三方软件它也有很多独特之处，比如你一定没有用过任何一款软件在分享照片到 instagram 的时候，是可以自动帮你把你想要加上的那句话给填好的。Workflow 就可以，而且仅是<strong>一个</strong>内置的动作。</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/43.png" alt="4" /></figure></div><h3 id="toc_11">复杂动作</h3>
<p>Workflow 可以通过“Variable（变量）”、“If（条件匹配）”、“Repeat（重复）”、“List（列表）”、“Menu（菜单）”之间的配合来制作相对来说较为复杂的动作，这些是你不需要具备编程知识，只要思路清晰就能摸索出来的。</p>
<h4 id="toc_12">变量</h4>
<p>举例来说，你要在 Day One 里记一篇模式化的日记<sup class="footnote-ref" id="fnref-4"><a href="#fn-4">4</a></sup>，里面要写上你今天读了什么书，做了什么有意义的事，吃到了什么特别的东西等等，最后可能还要附上今天拍到的一张好照片。这些内容在 Dayone 你打算用表格来呈现，所以会用 Markdown 来制作表格：</p>
<div class="block-table"><table><thead>
<tr>
  <th>日记</th>
  <th></th>
</tr>
</thead>
<tbody>
<tr>
  <td>读了什么书</td>
  <td>《书名1》、《书名2》</td>
</tr>
<tr>
  <td>吃了什么好吃的</td>
  <td>菜名1、菜名2</td>
</tr>
<tr>
  <td>做了什么有意义的事</td>
  <td>事件1、事件2</td>
</tr>
<tr>
  <td>…</td>
  <td>…</td>
</tr>
</tbody>
</table></div><p>我们来看这个表格，“书名”、“菜名”、“事件”都是变量，它们是变化的，但表格左边那一栏的内容是每次都一样的，所以你不应该每次都制作这个表格，而应该让某个软件帮你把表格制好，你就直接填空就行了。这个活交给 Workflow 干非常合适，因为你可以通过“Ask for input”在 Workflow 里自制对话框：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/5.jpg" alt="5" /></figure></div><p>按照图里的填好的话，每次你的 Workflow 运行到这个“Ask for input”，就会出现一个对话框，来提示你填写什么内容：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/61.png" alt="6" /></figure></div><p>然后它你可以把你临时输入的内容设为变量，这些变量最后会全部进入表格结构里，一起发送到 Dayone。</p>
<p>变量是 Workflow 的神髓之一，变量让你整个 Workflow 变得更加灵活。比如你做一个兑换汇率的 Workflow ，你把两种货币如果定死（比如说是 USD 跟 CHY），那这个 Workflow 的功能就很局限，只能转换你设定的这两种汇率。但如果你把两种货币设为你临时填写（或通过列表选择）的变量，这个 Workflow 就能应付多种货币间的汇率转换了。掌握好变量你就可以通过 Workflow 做到很多其它效率软件做不到的事情。</p>
<h4 id="toc_13">条件</h4>
<p>我们所说的条件就是“当'什么什么'满足的时候，就会发生'什么什么'。”这个“当”是假设，英文就是 If。</p>
<p>Workflow 提供了 If 语法，你把它拖到你的 Workflow 里就会看到</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/7.png" alt="7" /></figure></div><p>If 框里有一个“String Contains”，它的意思是“字符串包含”，后面空余的部分是要你来填写包含的内容。这个动作的原理是从上一步的结果中匹配需要的字符，来精简选项（理想的话可以精简到一项），让整个 Workflow 更智能。</p>
<p>比如说搜索歌词，我在播客<sup class="footnote-ref" id="fnref-5"><a href="#fn-5">5</a></sup>里说这可能是上手 Workflow 以后的人玩的最多的一个东西了。但是大家一般做的都是“获取名称”——“google.com/search?=||input||”。这样做出来的 Workflow 还不如你直接从 Spotlight 搜呢对吧。我们用 Workflow 起码要让它直接打开正在播放的歌曲的歌词网页才过得去吧。这就需要用 If 来匹配内容，比如在 Google 搜索英文歌词，一般“Azlyrics”这个歌词站的内容都会出现在最前排，那么你就可以使用 If 来进行条件匹配，在“String Contains”后面输入“azlyrics”。这样的话你就能直接打开你搜索的歌词在 Azlyrics 这个网站的页面。</p>
<h4 id="toc_14">重复</h4>
<p>玩手机的人都知道自己的手机里会经常留下很多屏幕截屏，这些截屏你要么是发给朋友看一下，要么是在社交网站上晒一下，要么是写测评要用到。无论什么用途，一部分截图在一次使用以后就没有保留的意义了。但是大多数人应该不会用完就删，所以低头看你手机相册你大概会发现很多截图。怎么一次性地选择所有截图，然后有选择的消灭掉这些截图？</p>
<p>用了 Workflow 的话你就会知道，它可以帮你读取截图，也可以一次性帮你都删了。但如果你想自己决定删哪张不删哪张，就需要用到重复。在 Workflow 里要用的是“Repeat With Each”这个动作。</p>
<p>Repeat 和 If 经常会搭配起来用，用于匹配内容会很有帮助。</p>
<h3 id="toc_15">Web 相关的动作</h3>
<p>Workflow 这个软件目前能力的上限，应该就是它与 Web 编程相关的能力。如果你具备 JSON、正则表达式的匹配语法等知识，你就可以直接从开放了 API 的网站获取其实时的消息。</p>
<p>内置的 Gallery 里就有个 Workflow 是匹配正则表达式来获取二维码中的 html 链接：</p>
<div class="photo"><figure><img src="https://cdn.jbguide.me/wp-files/2014/12/8.png" alt="8" /></figure></div><p>比如你可以通过 Google Exchange Rate API 获得实时的汇率，你可以通过 Yahoo Weather API 获得实时的天气数据等等。然后你可以把它们作为你 Workflow 的一部分，设定变量，最后在 Workflow 里写出一个个汇率程序或者天气程序。</p>
<h2 id="toc_16">结语</h2>
<p>一般这样的软件都要回答“适合我吗”这样的问题，但这样的问题其实只有了解自己使用情境的你才能回答。如果你担心你不会用，这问题不大，因为我接下来还会出教程，而且这个软件小白是很容易上手的。很多人包括折腾老手上手这个软件的困难在于不知道怎么用，不知道思维怎么从 Launch Center Pro 这样的软件逻辑里跳出来，结果就做了类似于“百度搜索”这样的谁都能干而且不能体现这款软件价值的 Workflow。在这点上，效率软件新手可能要比老手有优势，因为没有思维桎梏。</p>
<p>文章里影影绰绰地提到了一些 Workflow 的逻辑和用法，但是没有给出链接。这是因为这篇不是教大家怎么具体制作 Workflow 的文章，而只是简述 Workflow 是个什么软件。在之后的教程里，我会给把文章提到的 Workflow 还有我制作和搜集到的 Workflow （的链接）分享给大家，并且分析讲解值得学习的 Workflow。如果你很有欲望获得一些现成的 Workflow 并自己开始学习或者折腾，那么你可以看看 Reddit 的 <a href="reddit.com/r/workflow">Workflow 区</a>（Workflow 的作者偶尔会出现在这里），或者人们分享到 Twitter 里的 <a href="https://twitter.com/search?q=workflow.is/workflows">Workflow 动作</a>。</p>
<p>Workflow 目前并不是个成熟的软件。硬伤方面就有中文支持不佳<sup class="footnote-ref" id="fnref-6"><a href="#fn-6">6</a></sup>、某一步运行失败就有可能闪退（或者有时竟然可以继续运行下去，但当然已经毫无意义）、偶尔会挂起（软件一直处于登录界面）、其他软件中打开 Workflow 时有时无、在其他软件运行 Workflow 后不消失……除此之外，使用体验方面的考量也非常一般，比如你做一个比较长的 Workflow 的话，每一次拖动作到你的 Workflow 里都得从最上面拖到最下面，软件本身要是特别稳定还好，拖到一半儿就闪退可真受不了。</p>
<p>就目前的使用体验来说，我想说它是爱折腾的人的玩具更为合适，但是 Workflow 的团队并不是一个只顾利益的态度高冷的商业团队，Workflow 的团队是一堆热血的年轻人，他们还在 Twitter 上<a href="https://twitter.com/WorkflowHQ/status/543868075431305217">招募</a>那些乐于助人又想挣点外快的人作为 Workflow 的客服人员，所以我想他们是能够听进用户意见并能积极地进行修改的。</p>
<p>最后，如在播客里所说，我觉得这款软件的未来将会是一片光明。</p>
<section class="footnotes">
<ol>
<li id="fn-1"><p><a href="http://techcrunch.com/2013/09/04/from-jailbreaks-to-app-store-awards-developers-grow-up-iphone/">From Jailbreaks To App Store Awards, Developers Grow Up iPhone</a><a href="#fnref-1" class="footnote">&#8617;</a></p></li>
<li id="fn-2"><p>见 Contrast 创始人 David Barnard 在 <a href="https://twitter.com/drbarnard/status/544219666722201600">Twitter 上公布的数据</a><a href="#fnref-2" class="footnote">&#8617;</a></p></li>
<li id="fn-3"><p>功能型动作就是它本身是一个完整的功能，而不是参数匹配之类的中继型动作。<a href="#fnref-3" class="footnote">&#8617;</a></p></li>
<li id="fn-4"><p>模式化日记可以参看格志这款软件的思路，对于想写日记但不知道写什么的人来说，模式化日记是个很好的开端。<a href="#fnref-4" class="footnote">&#8617;</a></p></li>
<li id="fn-5"><p><a href="http://jbguide.me/2014/12/14/talkjb-46/">TalkJB 第46期：关于 Workflow 的头脑风暴</a><a href="#fnref-5" class="footnote">&#8617;</a></p></li>
<li id="fn-6"><p>一些 URL 里包含中文就会必然闪退，向上文提到的发送中文日记到 Day One 就会导致闪退。<a href="#fnref-6" class="footnote">&#8617;</a></p></li>
</ol>
</section>
 ]]></content:encoded></item><item><title><![CDATA[ TalkJB 第46期：关于 Workflow 的头脑风暴 ]]></title><guid>https://jbguide.me/2014/talkjb-46</guid><link>https://jbguide.me/2014/talkjb-46</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sun, 14 Dec 2014 09:36:00 +0000</pubDate><content:encoded><![CDATA[ <p>最近出了一款 App，小白喜欢，Power User 也喜欢；功能相近的软件的开发者对其敞开胸怀，格调甚高的独立开发者也对其赞誉有嘉；苹果在其上架第一天就给了它 Editor’s Choice 的殊荣。这期 <a href="http://www.weibo.com/jailbreakhum">@JailbreakHum</a> 就跟 <a href="http://weibo.com/wendaohansan">@文刀刀漢三</a> 聊了聊这两天折腾这款神器的软件—— <a href="my.workflow.is">Workflow</a> 的心得以及对这款软件现在和未来的看法。</p>
<h2 id="toc_1">本期提到的文章/软件/Workflow：</h2>
<div class="block-list"><ul>
<li><a href="https://itunes.apple.com/app/workflow-powerful-automation/id915249334">Workflow 软件下载</a></li>
<li><a href="http://www.reddit.com/r/workflow/">Workflow Reddit 社区</a></li>
<li><a href="https://twitter.com/search?q=workflow.is%2Fworkflows&amp;src=typd">Twitter 搜索 Workflow</a></li>
<li><a href="http://www.macstories.net/reviews/workflow-review-integrated-automation-for-ios-8/">Workflow Review: Integrated Automation for iOS 8</a></li>
<li><a href="http://www.geekswithjuniors.com/note/8-reasons-to-love-the-new-workflow-app-for-ios.html">8 Reasons to Love the New Workflow App for iOS</a></li>
<li>指南的测评还在路上</li>
</ul>
</div><h2 id="toc_2">订阅TalkJB：</h2>
<div class="block-list"><ul>
<li><a href="https://jbguide-static.b0.upaiyun.com/media/talkjb/TalkJB-046.m4a">本期节目下载</a></li>
<li><a href="http://talkjb.jbguide.me/feed">通过播客源订阅</a></li>
<li><a href="http://www.lizhi.fm/#/141551">通过荔枝FM</a></li>
</ul>
</div><h2 id="toc_3">联系我们：</h2>
<div class="block-list"><ul>
<li>微博<a href="http://www.weibo.com/talkjb">@TalkJB</a></li>
</ul>
</div><div class="block-html"><div class="powerpress_player" id="powerpress_player_7540">[![Play](http://jbguide.me/wp-content/plugins/powerpress/play_video_default.jpg "Play")](http://media.blubrry.com/talkjb/p/cdn2.jbguide.me/media/talkjb/TalkJB-046.m4a "Play")</div>Subscribe: [iTunes](itpc://jbguide.me/feed/podcast/ "Subscribe on iTunes") | [Android](http://subscribeonandroid.com/jbguide.me/feed/podcast/ "Subscribe on Android") | [RSS](http://jbguide.me/feed/podcast/ "Subscribe via RSS")</div>
 ]]></content:encoded></item><item><title><![CDATA[ 【无需越狱】强制放大那些在移动设备上不能放大的网页 ]]></title><guid>https://jbguide.me/2014/use-javascript-to-enlarge-website-on-ios</guid><link>https://jbguide.me/2014/use-javascript-to-enlarge-website-on-ios</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Wed, 10 Dec 2014 07:00:34 +0000</pubDate><content:encoded><![CDATA[ <h3 id="toc_1">使用情境</h3>
<p>大多数的网站如今都会针对移动设备优化，去调整排版、展示内容以优化阅读体验。</p>
<p>我们在各个网站上看到自己喜欢的内容，可能会节选然后对内容进行复制、转发等等。这些动作有一个基础就是选取，但 iOS 在选取上有一个特点，就是如果它不能精确地判断你是选取的哪一个字/词，它就会直接选取整个句子甚至段落。</p>
<p>为了能够具体地选取我们想要的某句话的其中一个词，进而选择整句话看，我们很多时候需要去“放大网页”这个操作。但是这个操作，在有些网站不能做到，比如在 <a href="https://www.quora.com/">Quora</a> 会出现这样的结果：</p>
<p><a href="http://jbguide.me/2014/12/09/use-javascript-to-enlarge-website-on-ios/1-8/" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2014/12/11.gif" alt="1" /></a></p>
<p>我们无法选择其中的具体词汇来进行复制等操作。</p>
<p>今天的文章就是为了解决这个问题。</p>
<h3 id="toc_2">具体步骤</h3>
<p>这个功能是利用 Javascript，而在 Safari 里使用 Javascript 就要靠书签了。所以我们首先要制作一个书签：</p>
<h4 id="toc_3">第一步：随便选择一个网页保存书签</h4>
<p>反正这个书签只是个容器，你一会连书签名和书签地址都要改，所以你不需要专门寻找某个网站去保存书签，比如你保存现在你看的这篇文章为书签也是可以的：</p>
<p><a href="http://jbguide.me/2014/12/09/use-javascript-to-enlarge-website-on-ios/2-6/" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2014/12/2-1024x716.png" alt="2" /></a></p>
<div class="block-list"><ul>
<li>你会发现在你最初保存这个网页的时候你不能修改地址。</li>
<li>对于初学者或者第一次进行这个操作的人，我建议你保存这个书签的时候，把位置就放到“个人收藏”里，也就是<strong>不用管“位置”这个选项</strong>。</li>
</ul>
</div><h4 id="toc_4">第二步：找到这个书签然后修改它了：</h4>
<p><a href="http://jbguide.me/2014/12/09/use-javascript-to-enlarge-website-on-ios/3-9/" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2014/12/31-1024x716.png" alt="3" /></a></p>
<p>打开你的个人收藏，按右下角的编辑，选择刚刚保存的这个网站</p>
<div class="block-list"><ul>
<li>上面的一行修改为：<strong>强制放大网页</strong>（或你喜欢的名字，这不重要，这一行是显示在书签里的名字，你看到了知道这个书签是干吗的就可以）</li>
<li>下面的一行填入代码： javascript:(function(){var vp = document.querySelector(&quot;meta[name=viewport]&quot;); if(vp){vp.setAttribute(&quot;content&quot;, &quot;width=device-width,initial-scale=1.0,maximum-scale=4.0,minimum-scale=1.0,user-scalable=yes&quot;);}})();</li>
<li>如果你的书签不多，这个书签的“位置”选项你可以仍然不动，还是停留在“个人收藏”就可以。如果书签挺多，找起来东西已经变得困难，那就最好找找复杂的选项</li>
</ul>
</div><p>最后的书签内容应该是这样的效果：</p>
<p><a href="http://jbguide.me/2014/12/09/use-javascript-to-enlarge-website-on-ios/4-8/" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2014/12/42.png" alt="4" /></a></p>
<p>以后你再遇到那些不让你放大的网站，只要用这个书签，就可以让它乖乖放大了：</p>
<p><a href="http://jbguide.me/2014/12/09/use-javascript-to-enlarge-website-on-ios/2-9/" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2014/12/2.gif" alt="2" /></a></p>
<h3 id="toc_5">参考文章：</h3>
<p><a href="http://hitoriblog.com/?p=27736">拡大操作禁止のWebページを強制的に拡大可能にする方法（iOS向け）</a></p>
<p><a href="http://stackoverflow.com/questions/3588628/can-i-change-the-viewport-meta-tag-in-mobile-safari-on-the-fly">StackOverflow:Can I change the viewport meta tag in mobile safari on the fly?</a></p>
 ]]></content:encoded></item><item><title><![CDATA[ Activator 带来的双击图标功能让你的主屏幕暗藏玄机 ]]></title><guid>https://jbguide.me/2014/activator-double-tap-icon</guid><link>https://jbguide.me/2014/activator-double-tap-icon</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 06 Dec 2014 07:12:24 +0000</pubDate><content:encoded><![CDATA[ <p>双击，我们最熟悉不过的操作之一。Activator 把它带到了手机上，解决了“同类软件不两立”的难题。</p>
<h2 id="toc_1">使用情境及功能介绍</h2>
<p>使用情境部分较长，想看如何做到直接跳转<a href="http://jbguide.me/2014/12/06/activator-double-tap-icon/#1">功能介绍</a>部分。</p>
<h3 id="toc_2">使用情境</h3>
<p>“原生应用好还是第三方应用好”、“Shazam 好还是 SoundHound 好”、“xx官方客户端好还是第三方客户端好”，这些问题问法都不对，又或者可以说，答案已经蕴含在问题里了。任何有这个疑问的人，都已经知道了双方各自的不可替代性。第三方软件功能丰富，设计优良。但是原生的软件几乎都有它们不可代替的优势，它们的权限最高，所以它们跟自己生态系统结合得是最好的。可是主屏幕每屏的位置就那么多，尤其是首屏和 Dock 的位置个个珍贵，不可能浪费位置让好几个同类软件摆一排。只有把自己最偏爱的那款放到首页，而把“偶尔”会用到的且不得不用的同类软件放到后面几页。</p>
<p>但这样效率吗，答案当然是否定的。因为所有被你放到后几页的软件，你都记不住位置了。首页软件的位置你大概都不能完全记住，每次只是根据大概知道某个软件在某个方位来找，所以更不要提后面几页的软件了，它们在哪一页你可能都不知道。</p>
<p>而且更让人困窘的是，出现了非常严重的两立局面：在某个时期，你使用同类软件 A 和同类软件 B 的机率几乎等同，且二者完全不能相互代替……</p>
<p>比如今天我买了 MacSparky 的 <a href="http://macsparky.com/omnifocus">OmniFocus Video Field Guide</a>，这是个分章节的系列视频教程，但是它也可以作为“一个”视频来播放。你把它放到大多数 Mac 上的播放器和全部 iOS 上的第三方播放器里，这个都只能作为“一个” .mp4 格式的视频来播放。只有在 Mac 上的 iTunes 跟 iOS 上的 Video.app（中文系统是“视频.app”）里它才可以分章节浏览。所以被我跟“报刊杂志”那些放到一个文件夹又放到主屏幕最后一页的 Video.app 终于要重见天日了。</p>
<p>可是每个使用 iOS 久的人主屏幕都有一个风格，这个风格会造成这个人的使用手机的习惯。<strong>因为一个软件</strong>改换整个主屏幕布局会造成一定时期的不适应。我非常不想因为最近突然要用到 Video.app 了就来改换我的主屏幕布局。再者说了，我知道看完视频了就会继续抛弃它的，可到了该抛弃的时候脑子却又适应它在那了，又得再花一段时间忘记它？</p>
<p>如果你不越狱，以上问题的最优解可能就是使用 Spotlight 搜索，但越狱了的话就会有更好的解决方案（不然越狱干啥）。</p>
<h3 id="toc_3">功能介绍</h3>
<p>Activator 在 1.9 版的更新里加入了不少新的“条件”和“功能”，所谓条件，在 Activator 的中文版里翻译为“事件”，比如“双击电源键”、“按住状态栏”……都是一个“事件”，这些“事件”如果被满足，在 Activator 的设定里就会触发一个你设定好的“动作”。比如安装过 Display Recorder 这款插件的朋友应该都知道“按住电源键”就能够触发“屏幕录制”，在这里“按住电源键”是“事件”（果然叫条件更合适吧），“屏幕录制”是“动作”。</p>
<p>这次我们要用到的事件是“按两下图标”这个自定义事件，它的定义是：按两下某个应用程序的图标，这个应用程序的图标是可以由用户自己决定的。</p>
<p>我使用的例子是：双击 Spotify.app 打开 音乐.app，你也可以双击个其它的什么然后打开微信，这些你都要灵活运用才行~</p>
<p>具体的设置办法是：在设置选项里找到 Activator，然后选择“在主屏幕”（希望你能想一下为什么是主屏幕而不是<strong>任何位置</strong>），点击右上角的更多：</p>
<p><a href="http://jbguide.me/2014/12/06/activator-double-tap-icon/3-6/" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2014/12/3-1024x320.png" alt="3" /></a></p>
<p>然后选择自定义事件的第一个<strong>按两下图标</strong>，找到 Spotify，并选择，你会看到后面打了个√：</p>
<p><a href="http://jbguide.me/2014/12/06/activator-double-tap-icon/4-5/" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2014/12/41-974x1024.png" alt="4" /></a></p>
<p>然后回到“在主界面”这一项，你就能看到有了“按两下 Spotify 图标这个选项”。</p>
<p><a href="http://jbguide.me/2014/12/06/activator-double-tap-icon/5-4/" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2014/12/5.png" alt="5" /></a></p>
<p>点进去，往下划，找到“系统应用程序”，然后找到“音乐”，Done。</p>
<p><a href="http://jbguide.me/2014/12/06/activator-double-tap-icon/6-4/" class="img-link"><img src="https://cdn.jbguide.me/wp-files/2014/12/6-1024x525.png" alt="6" /></a></p>
<p>同理，你可以设置：</p>
<div class="block-list"><ul>
<li>双击 Omnifocus 打开 Reminder（提醒事项）</li>
<li>双击 Funtastical 打开 Calander（日历）</li>
<li>双击 Tweetbot 打开 Twitter</li>
<li>……</li>
<li>双击 xxx 打开 微信（什么你不会把微信图标隐藏吗？用Springtomize）</li>
</ul>
</div><h2 id="toc_4">相关文章</h2>
<p><a href="http://jbguide.me/2014/12/01/activator/">用 Activator 来遥控 ta 的手机</a>：因为两篇文章用的都是 Activator 的新功能，设定方面有许多相似之处，两篇文章里的东西都试试你会能记得更牢，有问题和需求的时候思路也会往这边延伸。</p>
 ]]></content:encoded></item><item><title><![CDATA[ TalkJB 第45期：“中国人”在越狱圈越来越“值钱”了 ]]></title><guid>https://jbguide.me/2014/talkjb-45</guid><link>https://jbguide.me/2014/talkjb-45</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Sat, 06 Dec 2014 04:36:13 +0000</pubDate><content:encoded><![CDATA[ <p>本期内容较多，谈及了太极发布的新版本越狱；唱衰越狱为何不靠谱；太极向盘古伸出橄榄枝，二者是否可能合作；Cydia 支持支付宝等内容。而且聊了聊我国越狱后的插件圈现在越来越光明，正版意识越来越高，反而软件圈现在又黑下去了的现状。</p>
<h2 id="toc_1">本期出来讲话的人：</h2>
<div class="block-list"><ul>
<li><a href="">@JailbreakHum</a></li>
<li><a href="weibo.com/ghoulvendetta">@MIUI_张扬</a></li>
</ul>
</div><h2 id="toc_2">绪前期</h2>
<div class="block-list"><ul>
<li><a href="http://www.lizhi.fm/141551/12754598492833414">TalkJB 第38期：扒一扒这次越狱</a></li>
<li><a href="http://jbguide.me/2014/11/01/talkjb-43/">TalkJB 第43期：所以首发越狱是为了争夺盗版市场？</a></li>
</ul>
</div><h2 id="toc_3">本期提到的文章/软件：</h2>
<div class="block-list"><ul>
<li><a href="http://weibo.com/2569291082/ArOJF5unR">iKeywi 那条推特</a></li>
<li><a href="http://www.weibo.com/3195118452/ByYZtkzFv">太极越狱的中文公告</a></li>
<li><a href="http://www.reddit.com/r/jailbreak/comments/2o17q8/taig_just_made_a_public_announcement_full/">太极越狱的英文公告</a></li>
<li><a href="http://www.weibo.com/2668923610/ByVsBagV3">大概能表示盘古团队态度的微博</a></li>
<li><a href="http://www.reddit.com/r/jailbreak/comments/2o158j/cydia_store_vendors_can_now_opt_in_to_accepting/">Cydia Store 支持支付宝支付英文原文</a></li>
<li><a href="http://jbguide.me/2014/12/04/cydia-store-alipay/">Cydia Store 支持支付宝支付中文翻译</a></li>
</ul>
</div><h2 id="toc_4">订阅TalkJB：</h2>
<div class="block-list"><ul>
<li><a href="https://jbguide-static.b0.upaiyun.com/media/talkjb/TalkJB-045.m4a">本期节目下载</a></li>
<li><a href="http://http://talkjb.jbguide.me/feed">通过播客源订阅</a></li>
<li><a href="http://www.lizhi.fm/#/141551">通过荔枝FM</a></li>
</ul>
</div><h2 id="toc_5">联系我们：</h2>
<div class="block-list"><ul>
<li>微博<a href="http://www.weibo.com/talkjb">@TalkJB</a></li>
</ul>
</div><div class="block-html"><div class="powerpress_player" id="powerpress_player_7538">[![Play](http://jbguide.me/wp-content/plugins/powerpress/play_video_default.jpg "Play")](http://media.blubrry.com/talkjb/p/cdn2.jbguide.me/media/talkjb/TalkJB-045.m4a "Play")</div>Subscribe: [iTunes](itpc://jbguide.me/feed/podcast/ "Subscribe on iTunes") | [Android](http://subscribeonandroid.com/jbguide.me/feed/podcast/ "Subscribe on Android") | [RSS](http://jbguide.me/feed/podcast/ "Subscribe via RSS")</div>
 ]]></content:encoded></item><item><title><![CDATA[ Cydia Store 支持支付宝支付 ]]></title><guid>https://jbguide.me/2014/cydia-store-alipay</guid><link>https://jbguide.me/2014/cydia-store-alipay</link><dc:creator><![CDATA[ geekdada ]]></dc:creator><pubDate>Thu, 04 Dec 2014 10:41:41 +0000</pubDate><content:encoded><![CDATA[ <p><em>本文翻译自来自 Saurik 在 Reddit 上的<a href="http://www.reddit.com/r/jailbreak/comments/2o158j/cydia_store_vendors_can_now_opt_in_to_accepting/">发帖</a>，以下为全文翻译：</em></p>
<p>过去的几年，中国的iPhone用户群体日渐庞大，这一点在Cydia上尤为明显。我们的用户有接近一半来自中国。而iOS 7.1以及8.0–8.1的越狱都是由来自中国的团队完成的。</p>
<p>基于这些原因，我们最近请了专业的翻译公司将Cydia进行了多国语言本地化，而加入中文也是其中的主因；我们在六月的时候开放了完全由中文构成的Cydia首页。</p>
<p>尽管对于越狱软件的需求很大，中国的用户很多时候由于没有国际信用卡而不能进行相应的支付。这就导致有些用户转而向“黑市”寻求帮助，客观上滋长了信用卡盗刷的现象:(。所以我们花了很多时间来开发对于支付宝的支持。好事多磨，这项功能（当时只提供给一小部分的软件销售者供他们选择）终于和我们针对iOS 8的Cydia升级同时上线了。</p>
<p>就在上个月，我们欣喜地看到已经有数以千计笔交易通过支付宝成功完成！（目前我们没有收到任何有关支付宝的投诉，这或多或少让我有点提心吊胆……不过说回来，我们既然花了很长时间来做，这其实并不意外;P）</p>
<p>今天，我们将向所有的软件销售方提供支付宝支付的选项。（作为一项选择提供给他们的原因是，我们还没有完全搞清楚与支付宝相关的支付延迟、风险等问题，所以我们想给销售方一些灵活性。）</p>
<p>如果一切顺利的话（我们收到了一些来自支付宝的银行转账，所以确定这其中是有一定交易延迟的，不过属于“正常现象”），几个月后我们会把支付宝定为Cydia上所有商品的一项常规支付选项。</p>
<p>（注：只有语言选择为中文的用户才能看到通过支付宝支付的按钮；这是因为支付宝本身在UI上设计只能在中文环境下渲染，只向中国用户开放，而且在支付流程上一旦开始很难取消。）</p>
<p>（另外，我明白我们现在还缺一个针对中国用户的登录选项。我考量了一部分备选项，包括人人，新浪微博，百度，还有支付宝本身，结果很难作出决定，因此只好把这项功能的整合暂缓。）</p>
 ]]></content:encoded></item></channel></rss>