0

私のアプリケーション (Symfony2) では、デバイスのカレンダーに追加するために、UI からユーザーが .vcs および .ics ファイルを利用できるようにする必要があります。私はiPhone用にそれを行いましたが、Android用の私のソリューションは機能していません. ダウンロードプロセスが続き、完了することはありません。

プレーンな PHP で同じコードを実行すると、動作し、ファイルがダウンロードされ、デバイス カレンダーに統合されます。

プレーン PHP のコード:

<?php
header("Content-Type: text/x-vCalendar");
header("Content-Disposition: attachment; filename=calendar.vcs");
?>
BEGIN:VCALENDAR
PRODID:-//AT Content Types//AT Event//EN
VERSION:2.0
METHOD:PUBLISH
BEGIN:VEVENT
DTSTAMP:20120801T133822Z
CREATED:20120801T042948Z
LAST-MODIFIED:20120801T043003Z
SUMMARY:My Event
DTSTART:20130719T000000Z
DTEND:20130720T000000Z
LOCATION:London
URL:https://www.myurl.com/
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR

Symfony2 のコード:

public function getCalendarAction()
    {
        //$filename = "calendar_".date("Y_m_d_His").".vcs";
        $content = "BEGIN:VCALENDAR
PRODID:-//AT Content Types//AT Event//EN
VERSION:2.0
METHOD:PUBLISH
BEGIN:VEVENT
DTSTAMP:20120801T133822Z
CREATED:20120801T042948Z
LAST-MODIFIED:20120801T043003Z
SUMMARY:My Event
DTSTART:20130719T000000Z
DTEND:20130720T000000Z
LOCATION:London
URL:https://www.myurl.com/
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR";

        $headers = array('Content-Type'     => 'text/x-vCalendar',
            'cache-control'=>'no-store, no-cache, must-revalidate',
            'Content-Disposition' => 'attachment; filename="calendar.vcs"');

    return new Response($content, 200, $headers);    
}

ここに画像の説明を入力ここに画像の説明を入力

誰かが問題の解決策を持っている場合は、投稿してください。

4

1 に答える 1

0

問題は解決しました。有効な信頼できる SSL 証明書を使用してサーバーでコードをテストすると、ファイルがダウンロードされ、Android デバイスのカレンダーに統合されます。

于 2013-07-24T14:00:19.980 に答える