跳至内容
WebViewGold 从 Vibe Coding 到 App Store
中文
获取 WebViewGold

ChatGPT & Codex + 日历

为您的 ChatGPT & Codex 应用添加“添加到日历”按钮

没有进入用户日历的预订,很可能就是一次爽约。在 iOS 上,WebViewGold 让用户通过指向 .ics 文件的普通链接把事件添加到“日历”App,因此您的 ChatGPT & Codex 应用只需要一个返回该事件的 URL。WebViewGold 在 Android 上没有专门的日历 API;下面介绍在那里可行的替代方案。

每个平台一次性 $109 起,或由我们的团队全程代劳,$698 起。

  • 审核通过保证 – 否则 14 天内退款
  • 无需编程
  • 一次性付费,免费更新
  • 7×24 小时人工支持
  • 2014 年起德国出品 · ISO 27001

各平台上可行的方案

iOS:链接到 .ics 文件

WebViewGold 已为“日历”(原 iCal)做好设置:一个指向 .ics 文件的普通链接,就能让用户把条目添加到 iPhone 或 iPad 的日历中。无需 URL scheme,无需 JavaScript 桥接,Web 应用也从不读取用户的日历;它只是提供一个事件。

Android:下载或 Google 日历

Android 文档中没有日历 API。有两种可行的方式:在 Config.java 的 downloadableExtension 中加入 .ics,让文件被下载后可以用支持导入 .ics 的日历应用打开;同时提供一个在应用外打开的“添加到 Google 日历”链接。

每个预订一个事件文件

您的服务器为每个预订、课程或预约返回一个小文本文件(包含一个 VEVENT 的 VCALENDAR)。同一个 URL 同时服务于网站、iOS 应用和 Android 下载。

给 ChatGPT & Codex 的提示词

把这段粘贴到 ChatGPT & Codex 中以实现 Web 应用端。检查结果,发布,然后在 WebViewGold 应用中测试。

给 ChatGPT 或 Codex 的提示词
给 Codex 的提示词:为预订添加与 WebViewGold 应用封装层兼容的日历导出,并提交一个 Pull Request。创建 GET /calendar/:token.ics(每个预订一个随机令牌),返回一个 VEVENT,包含稳定的 UID、DTSTAMP、以 Z 结尾的 UTC 格式 DTSTART 和 DTEND、SUMMARY、LOCATION、带预订 URL 的 DESCRIPTION 以及提前一小时的 VALARM,以 text/calendar; charset=utf-8 提供。使用仍在维护的 iCalendar 库。添加 calendarLinks(booking),返回这个 URL 和一个 calendar.google.com/calendar/render?action=TEMPLATE 链接。.ics 链接在所有平台显示,Google 链接在 navigator.userAgent 包含 WebViewGold-Android 时显示。如果预约是用 OpenAI API 从自由文本中解析出来的,就要求返回包含 ISO 8601 时间和时区的结构化 JSON,并在服务器上据此生成文件。添加测试,并把规则记录在 AGENTS.md 中。

把 Web 应用转换成原生应用的绝佳方式!周转速度快,无需开发完整的原生应用就能把应用上架到应用商店!

Kevin Joling · FlightConnections & TrainConnections · Trustpilot

添加“添加到日历”按钮

约一小时,大部分时间花在 .ics 端点上。

  1. 创建 .ics 端点

    添加一个路由,例如 /calendar/BOOKING_TOKEN.ics,以 Content-Type: text/calendar; charset=utf-8 返回事件。按照 WebViewGold 示例,让路径以 .ics 结尾,并使用无法猜测的令牌,而不是依赖登录会话。

  2. 填写关键字段

    每个预订一个稳定的 UID、DTSTAMP、以 UTC 表示(以 Z 结尾)的 DTSTART 和 DTEND、SUMMARY、LOCATION,以及包含返回预订链接的 DESCRIPTION。文本中的逗号和分号需要转义。

  3. 在同一标签页中打开链接

    一个普通的 <a href="https://yourdomain.com/calendar/TOKEN.ics">。不要在新窗口中打开它,也不要使用 target="_blank";WebView 没有地方显示新窗口。

  4. 处理 Android

    为了下载方案,在 Config.java 的 downloadableExtension 中加入 .ics;再显示一个“添加到 Google 日历”链接,并把 calendar.google.com 加入 BROWSER_BLACKLIST,让它在系统浏览器中打开(大多数用户在那里已登录 Google),而不是在 WebView 内打开。

  5. 在真机上测试

    在 iPhone 上添加一个事件,然后检查时区、时长以及描述中的链接。在 Android 上,试试两个不同厂商的手机;各家日历应用打开已下载 .ics 文件的方式不尽相同。

一个最简 .ics 文件

日历需要的就是这些。按照 iCalendar 规范,每行以 CRLF 结尾;相关库会替您处理。您技术栈的服务端:您自己的 API 或无服务器函数。

text
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//YourApp//Bookings//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20261101T120000Z
DTSTART:20261205T170000Z
DTEND:20261205T180000Z
SUMMARY:Yoga class
LOCATION:Studio 2\, 14 Main Street
DESCRIPTION:Manage your booking: https://yourdomain.com/bookings/123
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
DESCRIPTION:Yoga class in one hour
END:VALARM
END:VEVENT
END:VCALENDAR

按钮逻辑

.ics 链接在所有平台上显示,Google 日历链接作为 Android 和桌面端的补充:

javascript
// 自定义 User-Agent: "... WebViewGold-iOS" (Config.swift), "... WebViewGold-Android" (Config.java)
var ua = navigator.userAgent;
var IS_ANDROID_APP = ua.indexOf("WebViewGold-Android") !== -1;
var IS_IOS_APP = ua.indexOf("WebViewGold-iOS") !== -1;

function icsUrl(b) { return "https://yourdomain.com/calendar/" + b.token + ".ics"; }

function googleCalendarUrl(b) {
  var f = function (d) { return d.toISOString().replace(/[-:]|\.\d{3}/g, ""); };
  return "https://calendar.google.com/calendar/render?action=TEMPLATE" +
    "&text=" + encodeURIComponent(b.title) +
    "&dates=" + f(b.start) + "/" + f(b.end) +
    "&details=" + encodeURIComponent(b.url) +
    "&location=" + encodeURIComponent(b.location);
}

// 渲染: 始终显示 .ics 链接; 除非 IS_IOS_APP, 否则同时显示 Google 链接

常见陷阱

  • 时区:用以 Z 结尾的 UTC 时间书写,或者包含正确的 VTIMEZONE 块。浮动的本地时间会让出行中的用户和其他时区的用户看到错位的时间。
  • 每次下载都生成新的 UID 可能会产生重复条目。每个预订保持一个 UID;日历如何处理重复导入因应用而异。
  • 受登录保护的 .ics URL:获取文件的请求可能不会携带用户的 Web 会话。为每个预订使用随机令牌是可靠的选择。
  • 日历订阅(webcal:// 订阅源)是另一项功能;WebViewGold 文档涵盖的是单个 .ics 文件。
  • 日历按钮是一个不错的原生细节,但它本身不足以让应用通过审核。请把它与推送提醒以及返回预订的深度链接结合使用。

常见问题

WebViewGold 有 Android 日历 API 吗?

没有专门的 API;文档中的日历集成仅适用于 iOS。在 Android 上,请把 .ics 文件作为下载提供(在 Config.java 的 downloadableExtension 中加入 .ics),并提供一个在应用外打开的“添加到 Google 日历”链接。

应用能读取用户的日历来检查空闲时间吗?

不能。.ics 流程只是提供一个由用户自行添加的事件。空闲时间的判断应放在您的服务器上,基于您自己的预订数据。

能添加重复事件或提醒吗?

可以,在 .ics 文件中添加:用 RRULE 行表示重复的课程,用 VALARM 块表示提醒。提醒如何显示取决于用户的日历应用;如果需要由您掌控的提醒,请使用推送通知。

如何为我的 ChatGPT & Codex 应用生成 .ics 文件?

一个小的服务器路由就能生成这段文本。单个事件不需要任何库,不过 ical-generator(Node)或 icalendar(Python)在处理重复事件和转义时很有帮助。让 ChatGPT & Codex 创建一个端点,根据预订令牌返回 text/calendar。

日历链接在浏览器中也能用吗?

能。同一个 .ics URL 在桌面和移动浏览器中会下载或打开该事件,所以一个按钮就能同时服务网站和两个应用。

让您的应用上架商店的三种方式

结果相同,只是您需要投入的工作量不同。三种方式都附带审核通过保证和 7×24 小时人工支持。

自己动手

$109 每个平台,一次性付费

WebViewGold 许可证:一个现成的 Xcode 或 Android Studio 项目。粘贴您的 URL,设置名称和图标,开启所需功能,构建并提交。永久免费更新。

在主页查看方案

Cloud Builder

$349 每个许可证,一次性附加购买

无需 Mac、Xcode 或 Android Studio:在浏览器中完成配置,我们在云端构建两个应用,并将其交付到 App Store Connect 和 Play Console。

Cloud Builder 如何运作 试用免费演示

Full Service

$698 每个平台 $798

把您的 URL 和图标发给我们。我们的团队在 72 小时内完成配置、构建并交付您的应用,白标,附源码项目。两个平台共 $1,158。

Full Service 详情 服务提供方: WeSetupYourWebViewApp

冬季特惠价格有效期至 2026年12月31日。

准备好发布您的 ChatGPT & Codex 应用了吗?

App Store & Google Play 审核通过保证 – 否则 14 天内退款

想直接交给我们?Full Service:我们在 72 小时内完成配置、构建并交付,每个平台 $698 起。有疑问?通过 7×24 小时在线聊天联系我们。

退款依据我们 FAQ 中列出的条件:应用因非内容原因被 Apple 和/或 Google 拒审,并在购买后 14 天内提出申请。