Погашение и его RDOAppointmentItem, время начала и окончания встречи, в результате чего разные дни в приложении Outlook Mobile - PullRequest
0 голосов
/ 04 июня 2019

Использование dll Interop.Redemption (версия 5.20.0.5298) Мы синхронизируем встречи между нашим приложением .net и Outlook с помощью надстройки. Когда я создаю событие All-Day в моем приложении .net, мы синхронизируем его как элемент встречи типа: «RDOAppointmentItem»

Это приложение RDO при просмотре в настольном приложении Outlook корректно и отображается как событие на весь день с 12:00 до 12:00 следующего дня.

При использовании мобильного приложения Outlook на Android (все, что я могу протестировать) этот RDO-приложение при синхронизации с мобильным приложением будет отображаться в диапазоне от предыдущего до послезавтра.

Я сузил проблему, заключающуюся в том, что мобильное приложение использует время UTC в качестве начала и конца, это было сделано путем смещения времени начала вперед на 10 часов (так как я GMT + 10)

Однако эта проблема становится очевидной только при использовании RDOAppointmentItem, если я изменяю свою логику для использования стандартного Outlook Interop "AppointmentItem" и сохраняю ее, когда она синхронизируется с Outlook Mobile App, событие на весь день происходит с 12:00 дня. до 12:00 следующего дня, т.е. все работает правильно.

StartUTC и EndUTC установлены правильно, и я попытался использовать OutlookSpy для проверки свойств MAPI, и все выглядит одинаково (Start / End / Timezone time) для 2 встреч на рабочем столе Outlook

Использование AppointmentItem

    var apptItem = folder.Items.Add(OlItemType.olAppointmentItem) as AppointmentItem;
    apptItem.AllDayEvent = dotnetAppt.AllDay;
    apptItem.StartUTC = dotnetAppt.StartTime;
    apptItem.EndUTC = dotnetAppt.EndTime;
    apptItem.Subject = dotnetAppt.Subject;
    apptItem.Save();

Использование RDOAppointmentItem

    outlookCalendarFolder = rdoSession.GetFolderFromID(_syncSettings.CalendarEntryId))
    rdoAppointment = outlookCalendarFolder.Items.Add(OlItemType.olAppointmentItem) as RDOAppointmentItem;
    rdoAppointment.AllDayEvent = dotnetAppt.AllDay;
    rdoAppointment.StartUTC = dotnetAppt.StartTime;
    rdoAppointment.EndUTC = dotnetAppt.EndTime;
    rdoAppointment.Subject = dotnetAppt.Subject;
    rdoAppointment.Save();

Есть ли что-то особенное, что RDOAppointmentItem делает в своих свойствах Start, End, StartUTC, EndUTC, TimeZone или любых других возможных элементах, связанных с датой?

Не могу придумать другого объяснения.

Edit: вот реквизиты, которые присутствуют в olAppointmentItem и отсутствуют в RDOAppointmentItem olAppointmentItem

Вот реквизиты, которые есть в RDOAppointmentItem, которые отсутствуют в olAppointmentItem

rdoAppointmentItem

Вот описания двух свойств, которые, по моему мнению, могут быть наиболее релевантными, находятся в olAppointmentItem, но не в RDOAppointmentItem

start timezone

end timezone

Надеюсь, это поможет

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