更新订阅的Google日历

时间:2018-11-02 11:32:38

标签: php laravel icalendar

首先,让我解释一下我需要做的事情。

我正在使用Laravel项目。 Laravel项目将为用户提供Webcal URL。用户将通过“添加URL”功能在Google日历中订阅该日历。现在,当任何事件在Laravel项目中更新时,它也应反映在Google日历中。

现在,我要面对什么问题。

用户已成功订阅日历。但是在更新任何事件时,该更新都不会反映在Google日历中。我知道这不会很快反映出来。我们必须等到谷歌检查更新(我认为是一天)。但是我必须在日历文件中设置该时间段(例如1小时)。因此,Google日历应该每隔一小时检查一次更新。

我知道一些观点(我不确定这些观点是对还是错)

  • 日历网址应包含webcal://,而不是http://
  • 您可以在.ics文件中设置刷新时间
  • Google会在一段时间(也许3个小时或一天)后自动检查更新

我做了什么

我已经创建了一个返回.ics文件的URL(即https://example.com/icalendar

这是代码(我使用过https://github.com/markuspoerschke/iCal软件包)

$prodID = 'https://example.com/icalendar';

$vCalendar = new Calendar($prodID);
$vCalendar->setName('PlanetX Leaves');
$vCalendar->setPublishedTTL('PT1H');

$vEvent = new Event('EVENT1ID');
$vEvent
        ->setDtStart(new \DateTime('2018-11-06'))
        ->setDtEnd(new \DateTime('2018-11-06'))
        ->setSummary('Test Event 1')
        ->setNoTime(true);
$vCalendar->addComponent($vEvent);


$vEvent = new Event('EVENT2ID');
$vEvent
        ->setDtStart(new \DateTime('2018-11-14'))
        ->setDtEnd(new \DateTime('2018-11-16'))
        ->setSummary('Event 2')
        ->setNoTime(true);
$vCalendar->addComponent($vEvent);

return response($vCalendar->render())->withHeaders([
                'Content-Type'        => 'text/calendar; charset=utf-8',
                'Content-Disposition' => 'attachment; filename="example-calendar.ics"',
    ]);

用户通过webcal://example.com/icalendar URL订阅日历。日历已成功订阅。但是问题是我用Google日历检查每天的更新。我必须将该时间设置为1小时。我已经谷歌搜索,也搜索了计算器。但是我没有找到任何办法。如果有人知道答案,将不胜感激。

0 个答案:

没有答案