Использование iCal.net с Календарем Google
Я заменил библиотеку DDay iCal на iCal.Net в приложении для должностных лиц. Многие официальные лица любят добавлять свой игровой календарь, используя "добавить из URL" в свой календарь Google, чтобы они могли видеть свое расписание на своих телефонах. Однако, похоже, что календарь Google не похож на файл.ics, который создается сейчас. Он импортирует нормально, но попытка добавить его по URL не приводит ни к каким событиям. У меня не было проблем с добавлением ссылки по URL-адресу с другими клиентами (Outlook, O365 и т. Д.), И файл в текстовом редакторе выглядит нормально.
1 ответ
Эта проблема, по-видимому, была вызвана методом OpenTextFileWriter, включающим метку порядка байтов (BOM) в кодировке ASCII по умолчанию. Вот как выглядел оригинальный код для создания этого файла:
Dim MySerializer As New CalendarSerializer()
Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter(strPath, False)
file.Write(MySerializer.SerializeToString(MyCal))
file.Close()
Мне пришлось изменить свой код, создавший файл ICS, на следующий, прежде чем сработал Календарь Google, и Apple "Подписаться на этот календарь":
Dim MySerializer As New CalendarSerializer()
Dim file As System.IO.StreamWriter
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
file = My.Computer.FileSystem.OpenTextFileWriter(strPath, False, utf8WithoutBom)
file.Write(MySerializer.SerializeToString(MyCal))
file.Close()
Интересно, что Outlook и Office 365 не были разборчивы в спецификации и там работали нормально.