<?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>Web Push &#8211; mylogs.cn</title>
	<atom:link href="https://mylogs.cn/tag/web-push/feed/" rel="self" type="application/rss+xml" />
	<link>https://mylogs.cn</link>
	<description>发现、记录、分享</description>
	<lastBuildDate>Fri, 14 Aug 2026 15:54:08 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>用 Cloudflare 自建推送，给 iPhone 发原生提醒</title>
		<link>https://mylogs.cn/cloudflare-self-hosted-web-push/</link>
		
		<dc:creator><![CDATA[steve, zhang]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 15:53:54 +0000</pubDate>
				<category><![CDATA[科技]]></category>
		<category><![CDATA[Cloudflare]]></category>
		<category><![CDATA[iOS 18.4]]></category>
		<category><![CDATA[Web Push]]></category>
		<category><![CDATA[开发者工具]]></category>
		<category><![CDATA[服务器推送]]></category>
		<category><![CDATA[自建服务]]></category>
		<guid isPermaLink="false">https://mylogs.cn/cloudflare-self-hosted-web-push/</guid>

					<description><![CDATA[需要「必须处理」的提醒，往往被埋在 Telegram 频道、Discord 服务器或邮件里；另一种上锁屏的方式 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">需要「必须处理」的提醒，往往被埋在 Telegram 频道、Discord 服务器或邮件里；另一种上锁屏的方式，是专门开发一款原生应用，而它唯一的用途可能就是发那一行通知。一个名为 Kukuroo 的开源方案，试图用单个 Cloudflare Worker 解决这个问题——把推送端点握在自己手里。</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a7f3f1f8227a&quot;}" data-wp-interactive="core/image" data-wp-key="6a7f3f1f8227a" class="wp-block-image size-large aligncenter wp-lightbox-container"><img fetchpriority="high" decoding="async" width="1200" height="630" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://mylogs.cn/wp-content/uploads/2026/08/02379092c1b446afc0c385eb9b159d3b_header.webp" alt="用 Cloudflare 自建推送，给 iPhone 发原生提醒" class="wp-image-4854" style="max-width:100%;height:auto;" srcset="https://mylogs.cn/wp-content/uploads/2026/08/02379092c1b446afc0c385eb9b159d3b_header.webp 1200w, https://mylogs.cn/wp-content/uploads/2026/08/02379092c1b446afc0c385eb9b159d3b_header-300x158.webp 300w, https://mylogs.cn/wp-content/uploads/2026/08/02379092c1b446afc0c385eb9b159d3b_header-1024x538.webp 1024w, https://mylogs.cn/wp-content/uploads/2026/08/02379092c1b446afc0c385eb9b159d3b_header-768x403.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">图片来源：Kukuroo 项目页</figcaption></figure>





<h2 class="wp-block-heading">一个 Worker 就能跑</h2>



<p class="wp-block-paragraph">Kukuroo 的核心是一个自托管的 Web Push 服务，部署在一个 Cloudflare Worker 中。它只需一个 Worker 加一个 KV 命名空间，没有需要常驻的服务器，也无需续期或凌晨三点重启。</p>



<p class="wp-block-paragraph">更重要的是「中间没有公司」：密钥留在你自己的 Worker 里，推送内容以加密形式发往设备，任何第三方后台都看不到你的提醒。</p>



<h2 class="wp-block-heading">iOS 原生渲染，无需上架</h2>



<p class="wp-block-paragraph">从 iOS 18.4 起，系统已原生支持声明式 Web Push（Declarative Web Push）。这意味着用户无需从 App Store 下载应用，也不必每年花 99 美元只为在锁屏显示几个字——只要把页面添加到主屏幕，从图标打开即可。苹果（Apple）的规则要求每台设备完成一次这样的添加操作。</p>



<h2 class="wp-block-heading">一行命令完成接入</h2>



<p class="wp-block-paragraph">整套配置不到一分钟。一条命令会写入 Worker、生成所有密钥、安装并配置存储、完成部署：</p>



<p class="wp-block-paragraph"><code>npx kukuroo init my-push</code></p>



<p class="wp-block-paragraph">执行后便拥有了一台属于自己的推送服务器。在 iPhone 的 Safari 中打开打印出的地址，选择「添加到主屏幕」，从图标进入即可。</p>



<h2 class="wp-block-heading">任何能发 HTTP 请求的地方都能触发</h2>



<p class="wp-block-paragraph">触发推送的入口很轻量：正在运行的智能体（agent）跑完或停下来询问时、定时任务（cron）、CI 流程、树莓派（Raspberry Pi）、后端服务，乃至一个 shell 别名——任何能发起 HTTP 调用的程序都能让手机响一声。例如用 curl 带上令牌（token）即可发送：</p>



<p class="wp-block-paragraph"><code>curl -X POST https://push.example.com/push/send -H "authorization: Bearer $KUKUROO_SEND_TOKEN" -d '{"notification":{"title":"任务 W13 完成","body":"W14 已解锁，可以开始"}}'</code></p>



<h2 class="wp-block-heading">免费额度够个人使用</h2>



<p class="wp-block-paragraph">前置条件很克制：仅运行在 Cloudflare Workers 上；声明式 Web Push 目前只在 Safari 落地；需要 iOS 18.4 及以上，且页面在主屏幕、从图标打开；以及一个 Cloudflare 账户。</p>



<p class="wp-block-paragraph">免费套餐已能支撑个人使用：每次发送覆盖 50 台设备、每日 10 万次请求；若规模增长，每月 5 美元可将单次发送扩展到 1 万台设备、每日 1000 万次请求。</p>



<p class="wp-block-paragraph">对于想把关键提醒从聊天群和收件箱里捞出来、又不想为它单独养服务器或开发应用的人来说，用 Cloudflare Worker 自建一套推送，是一个轻量且自主可控的选择。</p>



<p class="has-small-font-size wp-block-paragraph">来源：Kukuroo 项目页 / Hacker News</p>

]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
