【问题标题】:Using iCal.net with Google Calendar将 iCal.net 与 Google 日历一起使用
【发布时间】:2018-06-16 23:13:21
【问题描述】:

我在调度官员的应用程序中用 iCal.Net 替换了 DDay iCal 库。许多官员喜欢在他们的谷歌日历上使用“从 URL 添加”添加他们的比赛日历,这样他们就可以在手机上查看他们的日程安排。但是,Google 日历似乎不喜欢现在正在生成的 .ics 文件。它会很好地导入,但尝试通过 URL 添加它会导致没有事件出现。我通过 URL 与其他客户端(Outlook、O365 等)添加链接没有问题,并且该文件在文本编辑器中显示正常。

【问题讨论】:

  • 这里没有足够的信息来回答您的问题。我猜您正在生成一些可通过 URL 访问的 ICS 文本,而您正在使用 ical.net 生成该文本?你能展示一些旧的/有效的 ICS 文本吗?新的有什么变化?
  • 是的——你是对的。我使用 ical.net 生成了一个 ICS 文件,然后通过 URL 使其可用。我想我已经解决了这个问题,我会尽快发布答案。

标签: google-calendar-api icalendar dday ical-dotnet


【解决方案1】:

此问题似乎是由 OpenTextFileWriter 方法引起的,该方法包括默认 ASCII 编码中的字节顺序标记 (BOM)。以下是生成此文件的原始代码:

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()

在 Google 日历和 Apple 的“订阅此日历”起作用之前,我必须将生成 ICS 文件的代码更改为以下代码:

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 对 BOM 并不挑剔,并且在那里运行良好。

【讨论】:

    猜你喜欢
    • 2017-11-08
    • 2020-09-08
    • 2012-01-06
    • 2011-08-03
    • 2015-02-14
    • 1970-01-01
    • 2021-02-18
    • 2014-06-14
    • 1970-01-01
    相关资源
    最近更新 更多