问题描述
我在网站上有一个按钮,可以在点击时添加日历事件。我对大多数浏览器使用 ics.js,但在 iOS 上的 Safari 上使用不同的解决方案,而在 iOS 上使用 Chrome 浏览器时,我不得不实施 webcal:// 解决方案。
点击后,打开的网址为 webcal://mysite.com?calreminder=[title]&time=[time]
function reminder_output()
{
if (isset($_GET['calreminder'])) {
$title = $_GET['calreminder'];
$time = $_GET['time'];
$Now = new DateTime();
$start = new DateTime('tomorrow ' . $time);
// event duration is 10 minutes
$duration = new DateInterval('PT10M');
$end = $start->add($duration);
header('Content-Type: text/calendar; charset=utf-8');
header('Content-disposition: attachment; filename="My-Site-Reminder.ics"');
$calData = array(
'BEGIN:VCALENDAR','PRODID:-//My Site//Reminder//EN','VERSION:2.0','BEGIN:VEVENT','RRULE:FREQ=DAILY;INTERVAL=1','DTSTAMP:' . $Now->format('Ymd') . 'T' . $Now->format('His'),'UID:4088E990AD89VW3DBB4849094','DTSTART:' . $start->format('Ymd') . 'T' . $start->format('His'),'DTEND:' . $end->format('Ymd') . 'T' . $end->format('His'),'SUMMARY:' . $title,'DESCRIPTION:' . $title,'X-ALT-DESC;FMTTYPE=text/html:' . $title,'END:VEVENT','END:VCALENDAR'
);
$calData = implode("\r\n",$calData);
echo $calData;
exit;
}
}
打开这个提示:
一切正常,但理想情况下,我想从显示中隐藏 URL,而是显示事件的名称:“您想订阅 [事件名称] 吗?”
我知道一定有可能做到,因为他们在 https://www.addevent.com/add-to-calendar-button 上做到了:
但是,我不知道如何以这种方式显示而不是显示 URL。有人知道吗?
解决方法
出现在提示中的日历名称,可以通过include...设置
X-WR-CALNAME:Your Custom Name
...在 ics 输出的正文中。