Во-первых, позвольте мне объяснить требования, что я должен делать.
Я работаю с проектом Laravel. Проект Laravel предоставит пользователям веб-URL. Пользователь будет подписывать этот календарь в календаре Google с помощью функции Добавить URL. Теперь, когда какие-либо события обновляются в проекте Laravel, это также должно отражаться в календаре Google.
Теперь, с чем я столкнулся?
Пользователь успешно подписывается на календарь. Но при обновлении любого события это обновление не отражается в календаре Google. Я знаю, это не отразится в ближайшее время. Надо подождать, пока гугл проверит наличие обновлений (думаю, это один день). Но я должен установить этот период времени в файле календаря (например, 1 час). Так что календарь Google должен проверять наличие обновлений каждый час.
Некоторые моменты, которые я знаю (я не уверен, что они правильные или неправильные)
- URL календаря должен содержать
webcal://
, а не http://
- Вы можете установить время обновления в файле .ics
- Google автоматически проверяет наличие обновлений через некоторое время (возможно, через 3 часа или в день)
Что я сделал
Я создал URL (т.е. https://example.com/icalendar), который возвращает файл .ics
Вот код (я использовал 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 час. Я гуглил, а также искал по стеку overflow. Но я не нахожу для этого никакого пути. Если кто-то знает ответ, он будет оценен.