将* .ics / Calendar事件导入黑莓日历

时间:2012-09-10 20:37:27

标签: php blackberry calendar icalendar

我正在用PHP创建一个日历活动/约会。创建事件后,它可以通过超链接下载和导入:

     $icsFilename=sprintf("calTruthUniversal%dFile.ics",$randNum);

     $fp = fopen($icsFilename, 'w');
     fwrite($fp, 'BEGIN:VCALENDAR'."\r\n");
     fwrite($fp, "PRODID:-//Truth Universal, LLC//Truth Universal Calendar 70.9054//EN\r\n");
     fwrite($fp, "VERSION:2.0\r\n");
     fwrite($fp, "CALSCALE:GREGORIAN\r\n");
     fwrite($fp, "METHOD:REQUEST\r\n");
     fwrite($fp, "BEGIN:VEVENT\r\n");
     fwrite($fp, "DTSTART:".$dtstart."\r\n");
     fwrite($fp, "DTEND:".$dtend."\r\n");
     fwrite($fp, "ORGANIZER;CN=truthuniversal@yahoo.com:mailto:truthuniversal@yahoo.com\r\n");
     fwrite($fp, "DESCRIPTION:".$description."\r\n");
     fwrite($fp, "LOCATION:".$c_address."\r\n");
     fwrite($fp, "SUMMARY:".$c_event."\r\n");
     fwrite($fp, "END:VEVENT\r\n");
     fwrite($fp, "END:VCALENDAR\r\n");
     fclose($fp);
      //echo "<br>";
      //echo "<hr>";

     echo"<a href=\"download.php?icsFile=".$icsFilename."\"><img src=\"../images/icon_cal.png\" border=\"0\"></a><br><br>";

脚本download.php设置标头/内容类型并流式传输文件以供下载:

      <?php

      $myFile = $_GET['icsFile'];

      $size=filesize($myFile);

      header("Content-Type: text/calendar; charset=utf-8");
      header("Content-Disposition: attachement; filename=".$myFile);
      header("Content-Length: ".$size);
      header("Content-Transfer-Encoding: binary");

      $fh = @fopen($myFile, 'rb');
      $theData = fread($fh, $size);
      fclose($fh);

      echo $theData;
      ?>

当通过iPhone和Android手机上的超链接下载ics文件时,它会被导入到手机的日历中。然而,黑莓并没有这样做。它会下载文件,但只有在显示此警告后:“您选择的项目无法显示。是否要保存该项目?”它不会将文件导入日历。

我甚至尝试将Content-Type更改为“application / x-rimcalendarevent”,但无济于事。

有没有人有解决方案?!?

沮丧,

Ujasiri

1 个答案:

答案 0 :(得分:0)


我遇到了同样的问题。
我做的是我用黑莓制作了一个活动并将它发回给我。这样我就有了一个“正确”的文件。我发现有几个不同,但解决问题的是文件的结尾。我不得不在ics文件的末尾添加两到三行空行。

类似的东西:

fwrite($fp, "END:VCALENDAR\r\n");
fwrite($fp, "\r\n\r\n\r\n");
fclose(4fp);

为我工作。

祝你好运!