Обновите подписанный календарь Google - PullRequest
0 голосов
/ 02 ноября 2018

Во-первых, позвольте мне объяснить требования, что я должен делать.

Я работаю с проектом 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. Но я не нахожу для этого никакого пути. Если кто-то знает ответ, он будет оценен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...