<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iOS &#8211; 张三太爷</title>
	<atom:link href="https://www.somedoc.net/category/ios/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.somedoc.net</link>
	<description>看前面，黑洞洞</description>
	<lastBuildDate>Fri, 08 Nov 2024 06:52:17 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://www.somedoc.net/wp-content/uploads/2016/12/cropped-dandycheung-1-32x32.jpg</url>
	<title>iOS &#8211; 张三太爷</title>
	<link>https://www.somedoc.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>用 Cursor，得永生</title>
		<link>https://www.somedoc.net/2024/11/08/%e7%94%a8-cursor%ef%bc%8c%e5%be%97%e6%b0%b8%e7%94%9f/</link>
					<comments>https://www.somedoc.net/2024/11/08/%e7%94%a8-cursor%ef%bc%8c%e5%be%97%e6%b0%b8%e7%94%9f/#comments</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Fri, 08 Nov 2024 06:52:17 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[问题解决]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6226</guid>

					<description><![CDATA[原来有个页面需求，就是在 iOS 上打开后，自动适应亮或者暗 <a href="https://www.somedoc.net/2024/11/08/%e7%94%a8-cursor%ef%bc%8c%e5%be%97%e6%b0%b8%e7%94%9f/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>原来有个页面需求，就是在 iOS 上打开后，自动适应亮或者暗主题模式。因为不是前端选手，所以当时就按下不表，直至这两天又想起来。然后想到正好可以问一下被人传的神乎其神的 Cursor。于是有了下面的记录。</p>
<p>Q：在一个 iOS app 中，要实现生成一个本地 HTML 页面，使用 WebView 显示出来。据我所知，手机目前都有明亮、暗黑两种模式，为了保证用户体验，HTML 页面应该能自动检测当前处于那种模式，并将适当的适应性 CSS 应用到页面元素上（如页面背景以及文字的颜色），可以帮助写一个简单的示例页面吗？</p>
<p>A：当然可以。以下是一个简单的示例 HTML 页面，它能够自动适应系统的明亮/暗黑模式：</p><pre class="crayon-plain-tag">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;title&gt;自适应主题示例&lt;/title&gt;
    &lt;style&gt;
        /* 默认样式（明亮模式） */
        :root {
            color-scheme: light dark;
        }

        body {
            margin: 0;
            padding: 16px;
            background-color: #ffffff;
            color: #000000;
        }

        .card {
            padding: 16px;
            margin: 16px 0;
            border-radius: 8px;
            background-color: #f0f0f0;
            border: 1px solid #e0e0e0;
        }

        /* 暗黑模式样式 */
        @media (prefers-color-scheme: dark) {
            body {
                background-color: #000000;
                color: #ffffff;
            }

            .card {
                background-color: #1c1c1e;
                border-color: #2c2c2e;
            }

            a {
                color: #0a84ff;
            }
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h1&gt;自适应主题示例&lt;/h1&gt;
    
    &lt;div class="card"&gt;
        &lt;h2&gt;示例卡片&lt;/h2&gt;
        &lt;p&gt;这是一个示例卡片，用于展示明暗模式的自动切换效果。&lt;/p&gt;
        &lt;p&gt;这里是一个 &lt;a href="#"&gt;链接&lt;/a&gt; 示例。&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class="card"&gt;
        &lt;h2&gt;另一个卡片&lt;/h2&gt;
        &lt;p&gt;当系统切换到暗黑模式时，页面会自动调整颜色方案。&lt;/p&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre><p></p>
<section id="markdown-section-71ca3a80-5479-459c-9d70-57fde8e3dc47-4" class="markdown-section" data-markdown-raw="
这个示例页面的特点：" data-section-index="4">这个示例页面的特点：</section>
<section id="markdown-section-71ca3a80-5479-459c-9d70-57fde8e3dc47-6" class="markdown-section" data-markdown-raw="
1. 使用 &#96;color-scheme: light dark&#96; 告诉浏览器支持明暗两种模式。" data-section-index="6"></p>
<ol>
<li>使用 <code><span class="markdown-inline-code">color-scheme: light dark</code></span> 告诉浏览器支持明暗两种模式。</li>
<li>使用 <code><span class="markdown-inline-code">@media (prefers-color-scheme: dark)</code></span> 媒体查询来检测系统的暗黑模式。</li>
<li>为明暗两种模式分别定义了不同的：
<ol>
<li>背景色</li>
<li>文字颜色</li>
<li>卡片背景色和边框颜色</li>
<li>链接颜色</li>
</ol>
</li>
<li> 使用了一些基本的样式来美化页面：
<ol>
<li>卡片式布局</li>
<li>圆角边框</li>
<li>适当的内外边距</li>
</ol>
</li>
</ol>
</section>
<section id="markdown-section-71ca3a80-5479-459c-9d70-57fde8e3dc47-17" class="markdown-section" data-markdown-raw="
   - 卡片式布局" data-section-index="17"></section>
<section id="markdown-section-71ca3a80-5479-459c-9d70-57fde8e3dc47-18" class="markdown-section" data-markdown-raw="
   - 圆角边框" data-section-index="18"></p>
<div class="markdown-section-toolbar">
<div></div>
</div>
</section>
<section id="markdown-section-71ca3a80-5479-459c-9d70-57fde8e3dc47-19" class="markdown-section" data-markdown-raw="
   - 适当的内外边距" data-section-index="19"></p>
<div class="markdown-section-toolbar">
<div></div>
</div>
</section>
<section id="markdown-section-71ca3a80-5479-459c-9d70-57fde8e3dc47-21" class="markdown-section" data-markdown-raw="
当用户的系统在明暗模式之间切换时，页面会自动调整配色方案，无需刷新页面。" data-section-index="21"></p>
<div class="markdown-section-toolbar">
<div></div>
</div>
<p>当用户的系统在明暗模式之间切换时，页面会自动调整配色方案，无需刷新页面。</section>
<section class="markdown-section" data-markdown-raw="
当用户的系统在明暗模式之间切换时，页面会自动调整配色方案，无需刷新页面。" data-section-index="21">如果您需要在 iOS 中使用这个页面，可以将其保存为本地文件，然后使用 WKWebView 加载：</p><pre class="crayon-plain-tag">if let htmlPath = Bundle.main.path(forResource: "example", ofType: "html") {
    let url = URL(fileURLWithPath: htmlPath)
    let request = URLRequest(url: url)
    webView.load(request)
}</pre><p>您可以根据需要调整颜色、字体大小等样式，使其更好地匹配您的应用设计。</p>
<p>Q：明白了。我之前一直以为是要用 JavaScript 自行动态调整，没想到是用响应式样式，谢谢你！</p>
<p>A：是的！使用 CSS 的 <code><span class="markdown-inline-code">@media (prefers-color-scheme)</code></span> 媒体查询是一个更优雅的解决方案。它不仅代码更简洁，而且响应更快，因为：</p>
<section id="markdown-section-af2f76df-c5e4-4b10-a4ae-7fa6ba6559f3-4" class="markdown-section" data-markdown-raw="
1. 不需要运行 JavaScript 代码来检测和切换主题" data-section-index="4"></p>
<ol>
<li>不需要运行 JavaScript 代码来检测和切换主题</li>
<li>系统切换主题时会自动响应，不需要监听事件</li>
<li>即使禁用了 JavaScript，主题切换依然可以工作</li>
<li>页面加载时就能直接应用正确的主题，不会出现闪烁</li>
</ol>
<p>不过，如果您确实需要在 JavaScript 中检测当前主题（比如需要根据主题做一些其他处理），也可以使用：</p><pre class="crayon-plain-tag">if (window.matchMedia &amp;&amp; window.matchMedia('(prefers-color-scheme: dark)').matches) {
    // 当前是暗黑模式
}

// 监听主题变化
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event =&gt; {
    if (event.matches) {
        // 切换到暗黑模式
    } else {
        // 切换到明亮模式
    }
});</pre><p>但在大多数情况下，仅使用 CSS 媒体查询就足够了！</p>
</section>
</section>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2024/11/08/%e7%94%a8-cursor%ef%bc%8c%e5%be%97%e6%b0%b8%e7%94%9f/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>[Swift] Swift 中的指针相关的知识</title>
		<link>https://www.somedoc.net/2024/06/27/swift-swift-%e4%b8%ad%e7%9a%84%e6%8c%87%e9%92%88%e7%9b%b8%e5%85%b3%e7%9a%84%e7%9f%a5%e8%af%86/</link>
					<comments>https://www.somedoc.net/2024/06/27/swift-swift-%e4%b8%ad%e7%9a%84%e6%8c%87%e9%92%88%e7%9b%b8%e5%85%b3%e7%9a%84%e7%9f%a5%e8%af%86/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Thu, 27 Jun 2024 15:18:52 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[技术]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6060</guid>

					<description><![CDATA[年初的时候，在开发过程中遇到要在 Swift 语言里跟 C  <a href="https://www.somedoc.net/2024/06/27/swift-swift-%e4%b8%ad%e7%9a%84%e6%8c%87%e9%92%88%e7%9b%b8%e5%85%b3%e7%9a%84%e7%9f%a5%e8%af%86/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>年初的时候，在开发过程中遇到要在 Swift 语言里跟 C 语言的部分进行指针互访，在网上找到几篇相关文章，收录于此。</p>
<ul>
<li><a href="https://zhuanlan.zhihu.com/p/380637263">Swift 指针：Swift Pointers Overview: Unsafe, Buffer, Raw and Managed Pointers</a>；</li>
<li><a href="https://github.com/949478479/Using-Swift-with-Cocoa-and-Objective-C-in-Chinese/blob/master/02-Interoperability/05-Interacting%20with%20C%20APIs.md">与 C 语言 API 交互</a>；</li>
<li><a href="https://nemocdz.github.io/post/%E5%9C%A8-swift-%E9%87%8C%E5%AE%89%E5%85%A8%E7%AE%A1%E7%90%86%E6%8C%87%E9%92%88/">在 Swift 里安全管理指针</a>；</li>
<li><a href="https://articles.oyoung.cc/2020/07/28/Swift%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B-UInt8-%E9%82%A3%E4%BA%9B%E4%BA%8B/">Swift 学习笔记之 [UInt8]/[Int8] 那些事</a>；</li>
</ul>
<p>以上。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2024/06/27/swift-swift-%e4%b8%ad%e7%9a%84%e6%8c%87%e9%92%88%e7%9b%b8%e5%85%b3%e7%9a%84%e7%9f%a5%e8%af%86/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>初代 iPad 开发环境搭建 —— 实操（二）</title>
		<link>https://www.somedoc.net/2024/04/17/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%ae%9e%e6%93%8d%ef%bc%88%e4%ba%8c%ef%bc%89/</link>
					<comments>https://www.somedoc.net/2024/04/17/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%ae%9e%e6%93%8d%ef%bc%88%e4%ba%8c%ef%bc%89/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Tue, 16 Apr 2024 16:10:20 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[问题解决]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=5972</guid>

					<description><![CDATA[下载的 iOSOpenDev 安装包是 .pkg 格式的，执 <a href="https://www.somedoc.net/2024/04/17/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%ae%9e%e6%93%8d%ef%bc%88%e4%ba%8c%ef%bc%89/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>下载的 iOSOpenDev 安装包是 .pkg 格式的，执行总是失败。开始摸不着门道，用 cmd-L 打开日志视图，浏览全部日志才发现是下载部分发生了错误。<br />
​<br />
​开始以为是网络问题，排查来排查去，最后发现在浏览器里直接访问目标网址是正常的，只好继续排查。只能寄望于把 pkg 文件打开，看看葫芦里卖的究竟是什么药。有个<a href="https://www.timdoug.com/unpkg/">叫作 unpkg 的工具</a>正是干这个的，但是最新版本的在山狮上跑不起来，退到版本 4.6 可以了。<br />
​<br />
​打开看里面其实是两个比较大的脚本，顺藤摸瓜找到了下载的语句，是调用 curl。然后到终端里模拟执行这个下载，果然报错。看上去跟安全性有关，也不知道是要更新什么，大概率是要更新系统的根证书，恐怕还不太好搞。小四支招加上 <code>-k</code> 参数试试，试试就试试，试试也还是不行。报的错是 curl: (35) error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:Tlsv1 alert protocol version，貌似需要升级工具本身。而 <code>-k</code> 的适用症应该是 (60) 的错。</p>
<p>于是寻找预编译好的高版本的 curl。到其<a href="https://curl.se/download.html">官网</a>上看，最新版本是 8.7.1，它列出了两条路子，一个是下载 Travis Lee 的项目里的包，链接 https://guthub.com/stunnel/static-curl/releases/download/8.7.1/curl-macos-x86_64-8.7.1.tar.xz。另一个是到 conda-forge.org 网站去。后者看的比较蒙，没接触过，于是先搞下来了前者，痛苦的事情来了，<code>tar x</code> 命令解不开，显然，这个系统不支持 xz 命令。首先想到的是 7z，也去看了一眼，看完苦笑，它的命令行版本在 macOS 平台下也是 xz 格式的 tar 包。</p>
<p>如此一来，只好找到 <a href="https://github.com/tukaani-project/xz/releases/download/v5.4.6/xz-5.4.6.tar.bz2">xz 的源码</a>，特意选了非 xz 格式的源码包。下载后解压，按惯例执行 <code>./configure</code>，最后报错，说没有找到 C 编译器。打开 Xcode（5.1.1 新装的版本，从官网下载的），从 Preferences 的 Downloads 里下载，发现空空如也，看来苹果的服务端已经放弃支持。又到命令行下执行 <code>xcode-select --install</code> 碰运气，报 <code>--install</code> 不认识。最后还是再次登录开发者账户后下载到的 Command Line Tools（期间还经历了要解锁因不明安全原因锁定了的账户）。安装之后，xz 配置、构建、安装一气呵成。</p>
<p>这下就可以把 curl 从 xz 里释放出来了。第一时间执行 <code>curl --help</code> 成功，满心欢喜地将之把系统自带的 <code>/usr/bin</code> 下的原始档给替换掉了。再次执行 iOSOpenDev 的 .pkg 安装包，再次失败。再次查看日志，发现这个新版本的 curl 运行竟然报错！错误信息是 <code>_clock_gettime</code> 这个符号找不到。搜到 curl 官方项目中的<a href="https://github.com/curl/curl/issues/2905">一个 issue</a>，正是此事，但可惜没有看到可靠的解决方案。</p>
<p>其实吧，变通方案心里一直是有的。那就是老夫自己写个名为 curl 的脚本临时替掉系统内的 curl，把已经在其他地方下载好的文件直接放到期望的目录中，一次性即可完成此工作。再探探正路，不行就这个办法了。</p>
<p>更新（2024-04-24）：已经使用变通方案搞定。</p>
<p>另，存一个开发介绍贴：<a href="https://www.jianshu.com/p/9d046b953546">iOS越狱开发指南 &#8211; 简书 (jianshu.com)</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2024/04/17/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%ae%9e%e6%93%8d%ef%bc%88%e4%ba%8c%ef%bc%89/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>初代 iPad 开发环境搭建 —— 实操</title>
		<link>https://www.somedoc.net/2024/04/13/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%ae%9e%e6%93%8d/</link>
					<comments>https://www.somedoc.net/2024/04/13/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%ae%9e%e6%93%8d/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Sat, 13 Apr 2024 09:10:07 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[技术]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=5965</guid>

					<description><![CDATA[说几句废话。首先是硬件，老夫有一台 MacBook Pro  <a href="https://www.somedoc.net/2024/04/13/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%ae%9e%e6%93%8d/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>说几句废话。首先是硬件，老夫有一台 MacBook Pro 2011 Late 13&#8243; （OS X 10.8.5）以及一台 iPad 一代（iOS 5.1.1）。iPad 的操作系统是再也无法升级的了，所以才要寻找能给 iOS 5.1.1 开发的环境。得知最后支持 iOS 5.1.1 开发的 Xcode 版本也是 5.1.1，而它最高只能运行在 OS X 10.8（Mountain Lion）上，而 10.8.5 是最后的 10.8 发布版本。</p>
<p>下载 OS X 10.8 的安装映像也是需要寻找的，官方有个页面，<a href="https://support.apple.com/en-us/106387">Mac OS X Mountain Lion Installer &#8211; Apple Support</a>，里面号称提供安装器，但这个需要在现有版本的 OS X 上升级，而不是一个支持引导 USB 的映像。最后是在 archive.org 上找到<a href="https://archive.org/details/os-x-mountain-lion-bootable-image">可引导的映像</a>才搞定烧录 U 盘的，直链是 <a href="https://archive.org/download/os-x-mountain-lion-bootable-image/OS%20X%20Mountain%20Lion%20Bootable%20Image.dmg">https://archive.org/download/os-x-mountain-lion-bootable-image/OS%20X%20Mountain%20Lion%20Bootable%20Image.dmg</a>。</p>
<p>接下来要下载 Xcode 5.1.1 的安装包。找到个页面里列出了直链 http://adcdownload.apple.com/Developer_Tools/xcode_5.1.1/xcode_5.1.1.dmg，但是直接访问会报未授权的错误，登录苹果的开发者账户后，再次访问仍然报错。后来在 <a href="https://developer.apple.com/download/all/">https://developer.apple.com/download/all/</a> 页面里不停地点击 View More 向下滚动，就能找到正确的下载入口，可以看到真正的直链是 <a href="https://download.developer.apple.com/Developer_Tools/xcode_5.1.1/Xcode_5.1.1.dmg">https://download.developer.apple.com/Developer_Tools/xcode_5.1.1/Xcode_5.1.1.dmg</a>。</p>
<p>到现如今，开发上架到 AppStore 的供 iOS 5 使用的 app 那就是天方夜谭了，所以趁早转向更加“开放”的方向。多年前就知道 <a href="https://iosopendev.com/">iOSOpenDev</a> 的存在，没想到一直还在。它的下载页面是 <a href="https://iosopendev.com/download/">iOSOpenDev—Download</a>，在列表里面找一个合适的下载安装就行。它在 GitHub 上的项目地址是 <a href="https://github.com/kokoabim/iOSOpenDev">GitHub &#8211; kokoabim/iOSOpenDev: iOSOpenDev</a>，Wiki 页面在 <a href="https://github.com/kokoabim/iOSOpenDev/wiki/">https://github.com/kokoabim/iOSOpenDev/wiki/</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2024/04/13/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%ae%9e%e6%93%8d/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>初代 iPad 开发环境搭建 —— 动念</title>
		<link>https://www.somedoc.net/2024/04/11/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%8a%a8%e5%bf%b5/</link>
					<comments>https://www.somedoc.net/2024/04/11/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%8a%a8%e5%bf%b5/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Thu, 11 Apr 2024 14:16:31 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[软件]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=5960</guid>

					<description><![CDATA[iPad 第一代是个神奇的机器，越狱之后能打电话这个特性是老 <a href="https://www.somedoc.net/2024/04/11/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%8a%a8%e5%bf%b5/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>iPad 第一代是个神奇的机器，越狱之后能打电话这个特性是老夫一直不舍得扔掉它的一个重要原因。当然了，由于它实在太老了，几乎没有什么可以使用的应用了。酷狗音乐还能联网收听，是个让人惊奇的东东，老夫用它来听郭德纲相声。不过，由于去年底收回来的一台 2011 年前后的 MacBook Pro 在手，在证明了它可以支持 8GBx2 的内存之后，一个念头蠢蠢欲动，要不，重温一下给它开发？</p>
<p>首先当然是要知道开发环境的需求，苹果那揍性，高不成低不就，说的就是它。在 <a href="https://stackoverflow.com/questions/19445534/xcode-5-can-i-still-create-application-for-ios-5">SO 的一个帖子</a>里有人说了，系统最高只能是 Mountain Lion（山师），到 Mavericks（独行侠）就不行了。Xcode 也是要用版本 5。这些老古董，还真是得找找。</p>
<p>下一步再说。</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2024/04/11/%e5%88%9d%e4%bb%a3-ipad-%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba-%e5%8a%a8%e5%bf%b5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>iOS 系统下，浏览器向桌面放置书签的一些细节</title>
		<link>https://www.somedoc.net/2024/02/18/ios-%e7%b3%bb%e7%bb%9f%e4%b8%8b%ef%bc%8c%e6%b5%8f%e8%a7%88%e5%99%a8%e5%90%91%e6%a1%8c%e9%9d%a2%e6%94%be%e7%bd%ae%e4%b9%a6%e7%ad%be%e7%9a%84%e4%b8%80%e4%ba%9b%e7%bb%86%e8%8a%82/</link>
					<comments>https://www.somedoc.net/2024/02/18/ios-%e7%b3%bb%e7%bb%9f%e4%b8%8b%ef%bc%8c%e6%b5%8f%e8%a7%88%e5%99%a8%e5%90%91%e6%a1%8c%e9%9d%a2%e6%94%be%e7%bd%ae%e4%b9%a6%e7%ad%be%e7%9a%84%e4%b8%80%e4%ba%9b%e7%bb%86%e8%8a%82/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Sun, 18 Feb 2024 11:04:00 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=5890</guid>

					<description><![CDATA[一直以来，iOS 都有一种把链接放置于桌面的途径，那就是在浏 <a href="https://www.somedoc.net/2024/02/18/ios-%e7%b3%bb%e7%bb%9f%e4%b8%8b%ef%bc%8c%e6%b5%8f%e8%a7%88%e5%99%a8%e5%90%91%e6%a1%8c%e9%9d%a2%e6%94%be%e7%bd%ae%e4%b9%a6%e7%ad%be%e7%9a%84%e4%b8%80%e4%ba%9b%e7%bb%86%e8%8a%82/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>一直以来，iOS 都有一种把链接放置于桌面的途径，那就是在浏览器打开该链接时，选择那个带着向上箭头的分享按钮，然后再选择添加到桌面即可。</p>
<p>这个功能虽然长期存在，但是苹果对其控制相当严格，近期才有所松动，而且也仅仅是“有所”。根据其<a href="https://developer.apple.com/documentation/safari-release-notes/safari-16_4-release-notes">官方文档</a>，在 Safari 16.4 及以上，开始允许其它的第三方浏览器应用也能集成此功能，原文为“Added support for third-party browsers to offer Add to Home Screen from the Share menu”。</p>
<p>但同时，对要使用此功能的 app 又作了若干前提限制。其详细描述在<a href="https://webkit.org/blog/13878/web-push-for-web-apps-on-ios-and-ipados/">这儿</a>里的“Third-party browser support for Add to Home Screen”一节。一共四条：</p>
<ol>
<li>The application has the <a href="https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_web-browser">com.apple.developer.web-browser</a> managed entitlement</li>
<li>A WKWebView is included in the array of <pre class="crayon-plain-tag">activityItems</pre></li>
<li>The WKWebView is displaying a document with an HTTP or HTTPS URL</li>
<li>If the device is an iPad, it must not be configured as a <a href="https://support.apple.com/guide/deployment/shared-ipad-overview-dep9a34c2ba2/web">Shared iPad</a></li>
</ol>
<p>其中的第三条，恐怕跟最近在产品里遇到的一个问题有很大的关联。</p>
<p>Firefox 的用户<a href="https://support.mozilla.org/en-US/questions/1434223">在支持论坛里宣称</a>在一些版本里找不到“Add to Home Screen”按钮了，Firefox 官方项目的问题跟踪页在<a href="https://github.com/mozilla-mobile/firefox-ios/issues/15172">这儿</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2024/02/18/ios-%e7%b3%bb%e7%bb%9f%e4%b8%8b%ef%bc%8c%e6%b5%8f%e8%a7%88%e5%99%a8%e5%90%91%e6%a1%8c%e9%9d%a2%e6%94%be%e7%bd%ae%e4%b9%a6%e7%ad%be%e7%9a%84%e4%b8%80%e4%ba%9b%e7%bb%86%e8%8a%82/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>iOS 下用 Swift 语言实现文件上传</title>
		<link>https://www.somedoc.net/2024/02/05/ios-%e4%b8%8b%e7%94%a8-swift-%e8%af%ad%e8%a8%80%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0/</link>
					<comments>https://www.somedoc.net/2024/02/05/ios-%e4%b8%8b%e7%94%a8-swift-%e8%af%ad%e8%a8%80%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Mon, 05 Feb 2024 03:34:34 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[问题解决]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=5881</guid>

					<description><![CDATA[老夫之前几乎从来没有用过这门语言，但由于维护代码的小伙伴还有 <a href="https://www.somedoc.net/2024/02/05/ios-%e4%b8%8b%e7%94%a8-swift-%e8%af%ad%e8%a8%80%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>老夫之前几乎从来没有用过这门语言，但由于维护代码的小伙伴还有其它事情占着手，只好临时顶上。</p>
<p>虽然 ChatGPT 已经一年多了，但由于各种使用上的封堵导致心理上还没有将其接受作为寻找问题答案的第一选择，故而还是从搜索引擎起步，前卫的技术流小朋友们勿怪。况且本文中的技术点不是难度所在，是“用一门新语言在一个较少接触的开发平台下实现这个功能”略有不便。</p>
<p>Swift 从计算机科学领域的编程语言学角度来看，跟 Kotlin 语言有很多的相似处，不过这是横向比较。纵向比较的话，与苹果自家原先那个糟糕到无以复加的 Objective-C 也颇有渊源。尤其是语言之上的基础设施的构造方面，就尽可能平滑地迁移了很多历史遗产过来，很多类都能在 OC 中找到其祖先，相当多都是去掉了之前的 NS 前缀就是了。</p>
<p>所以，搜到的第一篇（当前是经过粗略的一眼筛选后留下的）就基本上可以搞定三太爷的疑问的，就是这个：<a href="https://stackoverflow.com/questions/55991262/send-multi-part-form-data-in-swift">https://stackoverflow.com/questions/55991262/send-multi-part-form-data-in-swift</a>。其中 boundary 的生成让老夫不禁回想起 1999 年，还在和老陈吭哧吭哧写邮件转发系统的时候，为了在报文中生成随机不同的 boundary 都得思忖半晌，现在直接用固定前缀带一个 GUID 就搞定了。原始提问的 PO 还在代码里用着 NS 开头的老旧类呢，被下面的答主给纠偏了。</p>
<p>基本问题解决后，还想再拓展一下，这也是我一贯的做法。所以又找到了几篇博文看，一篇是 <a href="https://igomobile.de/2020/06/16/swift-upload-a-file-with-multipart-form-data-in-ios-using-uploadtask-and-urlsession/">https://igomobile.de/2020/06/16/swift-upload-a-file-with-multipart-form-data-in-ios-using-uploadtask-and-urlsession/</a>，另一篇组织结构以及视觉效果都更清晰清爽一些，在这里：<a href="https://orjpap.github.io/swift/http/ios/urlsession/2021/04/26/Multipart-Form-Requests.html">https://orjpap.github.io/swift/http/ios/urlsession/2021/04/26/Multipart-Form-Requests.html</a>。其中提及一个老夫很久之前就有所耳闻的 iOS 上的网络库，叫 Alamofire，这次就不杀鸡用牛刀了。如果你追求 Swift 5，或者老年人需要更大的字体，还可以看这篇从日期上看最近的：<a href="https://theswiftdev.com/easy-multipart-file-upload-for-swift/">https://theswiftdev.com/easy-multipart-file-upload-for-swift/</a>。</p>
<p>如果你只想尽快复制粘贴代码，还可以打开这个地址：<a href="https://gist.github.com/codecat15/6c1eaa5b7ea48b26b10d907fef68abf2">https://gist.github.com/codecat15/6c1eaa5b7ea48b26b10d907fef68abf2</a>。实话说，代码写得很一般，不过既然作为一个项目上传到了 GitHub 上，三太爷赌他应该运行成功过，仅此而已。</p>
<p>其实在实现服务端接收的时候，老夫操起二十年不用的 PHP 也仍然犯了一些低级错误，最频繁的是：调试过程中 <code>echo</code> 语句总是因为心急而忘记语句结尾的分号，然后导致脚本错误而停摆。感觉一刻钟的调试过程，平均一分钟一次，真是见了鬼了。当然也有自我感觉不错的地方，第二个接口，几十行的脚本写完，除了把 strlen 靠直觉写成了 len 是个错误外，把丢失的 str 三个字母加上就完全正常地、欢快地跑成功了。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2024/02/05/ios-%e4%b8%8b%e7%94%a8-swift-%e8%af%ad%e8%a8%80%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Xcode 调试高版本设备的方法</title>
		<link>https://www.somedoc.net/2024/02/01/xcode-%e8%b0%83%e8%af%95%e9%ab%98%e7%89%88%e6%9c%ac%e8%ae%be%e5%a4%87%e7%9a%84%e6%96%b9%e6%b3%95/</link>
					<comments>https://www.somedoc.net/2024/02/01/xcode-%e8%b0%83%e8%af%95%e9%ab%98%e7%89%88%e6%9c%ac%e8%ae%be%e5%a4%87%e7%9a%84%e6%96%b9%e6%b3%95/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Thu, 01 Feb 2024 10:45:16 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[问题解决]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=5876</guid>

					<description><![CDATA[XIC iOS 版本的开发环境还是一台比较老的 MacBoo <a href="https://www.somedoc.net/2024/02/01/xcode-%e8%b0%83%e8%af%95%e9%ab%98%e7%89%88%e6%9c%ac%e8%ae%be%e5%a4%87%e7%9a%84%e6%96%b9%e6%b3%95/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>XIC iOS 版本的开发环境还是一台比较老的 MacBook Pro，是 2015 年的，macOS 升级到了可以升级到的最高版本 Monterey。在这个版本的系统上，Xcode 支持的 iOS 设备最高恐怕是 iOS 15。</p>
<p>这几天苹果对 iOS 推出了一组更新，最新的 17.3，版本 16 也推出了最新的 16.7.5。同样是由于 UMP 的问题，对 XIC iOS 也作了必要的流程接入，哪知上架又被狙击。开始是被告知与某已经注销的某开发账号所拥有的某产品雷同。经过不懈的申诉抗辩，最终苹果说雷同为误判，但同时，悲催的来了：由于产品在刚刚推出的 17.3 上不能正常工作，因而仍然不能上架。就是这么寸。</p>
<p>为了验证这个问题的影响面，合作小伙伴把自己的设备从 iOS 16 升级到了 17.3，证明苹果的告知所言非虚。还以为要和 Android 似的，要用他这台 17.3 的设备才能调试定位问题，但后来看了一眼出错截图，似乎与 Safari 的安全策略相关。心道不妙，赶忙把自己手里的一台 iOS 15 的设备升级到了 iOS 16 的最新版本 16.7.5，果不其然担心成为了现实，这个问题也存在。然而尴尬的是，MacBook Pro 2015 上的 Monterey 下的 Xcode 14.2，不能连接刚刚升级到 16.7.5 的 iPhone 了，而之前在 iOS 15 的时候，它们通讯还非常顺畅。</p>
<p>这很尴尬。手里有一台可以复现问题的设备，但是开发环境竟然不能与其通信。于是在网络上寻找解决的可能性，别说，还真有。在 GitHub 上有个项目，名字叫 iOSDeviceSupport，地址是 <a href="https://github.com/filsv/iOSDeviceSupport/">https://github.com/filsv/iOSDeviceSupport/</a>。提供了针对各个不同版本的 iOS 设备的支撑文件，可以用于 Xcode，将其增加到对应目中，即可使 Xcode 连接到相应版本的真实设备上。该项目支持的 iOS 最高版本是 16.5，跟手里的 16.7 差了两个版本，有点狐疑其兼容性。不过注意到该项目有个 PR，点击去一看，是从本项目 fork 出去的一个<a href="https://github.com/yangKJ/iOSDeviceSupport">衍生项目</a>，其中提供了 16.6 的支持文件。满心欢喜以为能有的 16.7 的并不存在。然而，如此接近的版本号，已经可以放手一试了。</p>
<p>把 iOS 16.6 的支持文件下载后，解压放置到 Xcode 的支持文件存放路径下，<code>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport</code>。又在同级目录下为 <code>16.6</code> 这个子目录创建了名为 <code>16.7</code> 的软链接。然后把手机连接到电脑，果然，Xcode 顺利识别，不再提示兼容性问题了。</p>
<p>顺便吐槽下苹果，在设置里要打开开发者模式（它升级系统后竟然自动把之前处于打开状态的开发者模式给关闭了！），在搜索框里输入“开发者”竟然没有结果，需要手动到“隐私与安全”中去寻找，真是够可以的。</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2024/02/01/xcode-%e8%b0%83%e8%af%95%e9%ab%98%e7%89%88%e6%9c%ac%e8%ae%be%e5%a4%87%e7%9a%84%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>iOS 的桌面图标可以动起来？</title>
		<link>https://www.somedoc.net/2022/06/23/ios-%e7%9a%84%e6%a1%8c%e9%9d%a2%e5%9b%be%e6%a0%87%e5%8f%af%e4%bb%a5%e5%8a%a8%e8%b5%b7%e6%9d%a5%ef%bc%9f/</link>
					<comments>https://www.somedoc.net/2022/06/23/ios-%e7%9a%84%e6%a1%8c%e9%9d%a2%e5%9b%be%e6%a0%87%e5%8f%af%e4%bb%a5%e5%8a%a8%e8%b5%b7%e6%9d%a5%ef%bc%9f/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Thu, 23 Jun 2022 13:12:09 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[备忘录]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[软件]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=5046</guid>

					<description><![CDATA[今天看到一篇时间上有点久远的文章，看着挺有趣，但没有实践，留 <a href="https://www.somedoc.net/2022/06/23/ios-%e7%9a%84%e6%a1%8c%e9%9d%a2%e5%9b%be%e6%a0%87%e5%8f%af%e4%bb%a5%e5%8a%a8%e8%b5%b7%e6%9d%a5%ef%bc%9f/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>今天看到一篇时间上有点久远的文章，看着挺有趣，但没有实践，留此备档。</p>
<p>From: <a href="https://www.cultofmac.com/408929/how-to-animate-ios-9s-app-icons/">How to animate iOS 9&#8217;s app icons (cultofmac.com)</a></p>
<p>译文：</p>
<p>默认情况下 iOS 是不支持动画图标的，尽管有几个例外：例如时钟应用程序，或者当下载 OTA 更新时，设置图标曾以动画的方式出现。不过，主屏幕上的每个图标都有动画不是很好吗？是的，是很好&#8230;&#8230;不幸的是，只有越狱者才能实现这一目标。</p>
<p>这个新的系统插件被称为 Fingal，它填补了另一个旧的 Cydia 系统插件 Motion 曾经填补的利基：通过微妙而且酷的动画让主屏幕的应用图标变得生动。</p>
<p>感谢 ShakeIt 包，Fingal 得以默认带有一些很酷的图标动画：寻找我的 iPhone 的旋转雷达、地图图标中的移动车辆，以及设置应用中的旋转齿轮。我认为它为 iOS 主屏幕带来了一些动态的生命，你觉得呢？</p>
<p>如果你想安装 Fingal，可以通过把 <a href="https://www.cydiarepo.com/195/add-modmyi-repo-cydia/">ModMyi repo</a> 添加到 Cydia 后而从中下载。</p>
<p>效果视频：<a href="https://www.youtube.com/embed/dSc3XgkBD4E">Fingal iPhone Tweak &#8211; YouTube</a></p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2022/06/23/ios-%e7%9a%84%e6%a1%8c%e9%9d%a2%e5%9b%be%e6%a0%87%e5%8f%af%e4%bb%a5%e5%8a%a8%e8%b5%b7%e6%9d%a5%ef%bc%9f/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
