2012-08-30 2 views
1

우리 서버에서는 우리 이벤트에 대한 동적 iCalendar 피드를 얻을 수있는 방법을 구현했습니다. 이 작업은 먼저 iCalendar 파일을 렌더링하는 Coldfusion 스크립트를 호출하고 "text/calendar; charset = UTF-8"의 내용 유형을 설정 한 후 반환합니다. 호출되는 것은 다음과 같습니다 : http://www.mysite.com/ical.cfm?calendar_id=1iCalendar 구독을 여러 브라우저/운영 체제에서 작동 시키려면 어떻게합니까?

그러나 우리는 모바일 장치와 같은 것들 사이에서 문제를 일으키는 것을 알아 챘습니다. iPad는 "구독"하지 않고 오히려 이벤트를 가져옵니다. 우리가 이것들을 업데이트하기를 바라는 것처럼 좋지 않습니다. 다른 브라우저는 ICS 파일을 다운로드하기 만하면됩니다. 다시 한 번 사람들이 단일 파일을 가져오고 이벤트에 실제로 "가입"하지 않게합니다 (우리는 Content-Disposition 헤더를 사용하여 파일 이름을 ".ics"로 고정 시켰습니다). ".cfm"으로 다운로드).

그런 다음 링크에서 "http : //"대신 "webcal : //"을 사용해 보았습니다. 그게 iPad 문제를 해결하는 것, 그리고 파이어 폭스는 다른 응용 프로그램에서 링크를 열어달라고 요청할 것입니다. (누군가 내가 캘린더 앱을 선택할 수 있다고 생각합니다.) 그러나 이제 Chrome은 아무 것도하지 않습니다. 우리는 링크를 클릭하고 단순히 아무것도하지 않습니다. Webcal은 표준 "프로토콜"이 아니므로 문제가 될 수 있습니다.

이제 Wireshark를 열어 Google iCalendar 파일 (모든 브라우저와 iPad에서 잘 연결되는)을 전달하는 패킷을 검사합니다. 일부 캐싱 헤더와 사용자 정의 "X" 머리글은 콘텐츠 유형이 정확히 우리가 제공하는 것으로 설정되었음을 유의해야합니다.

누구나 모든 브라우저와 iPad/iPhone에서 동일한 작업을 수행 할 수있는 지침이 있는지 궁금합니다. 링크가 ".ics"대신 ".cfm"을 호출한다는 사실이 어떤 것을 던지고있는 것일 수 있습니까? 그렇다면이 문제를 해결하기 위해 다시 쓰기 규칙을 구현할 수 있다고 생각합니다.

답변

2

여러 가지 플랫폼에서 작동하도록하는 확실한 방법이 있는지에 대해서는이 부분을 조금 더 실험 한 후 너무 확실하지 않습니다. iPhone 및 iPads와 같은 것들은 Apple 캘린더 앱을 통해 구독하려면 "webcal : //"링크가 필요합니다. 일부 브라우저는이 형식으로 괜찮습니까?

이것은 실제로 사용자가 장치에 대한 적절한 다운로드를 선택하거나 서버 측의 요청에서 User-Agent를 사용하여 주어진 장치/브라우저에 적합한 형식의 링크를 대상으로 지정할 수있는 인터페이스를 만드는 것을 포함합니다.

관련 문제