iPhone Event Kit: программно ПОДПИСАТЬСЯ на новый календарь

Меня привели к этому ответу, который говорит нам, как создать автономный календарь (я думаю), но как мне подписаться на URL-адрес на сервере, который выдает календарь в формате ics? Это возможно?


person Mike S    schedule 30.05.2012    source источник


Ответы (1)


Почему бы не использовать это: Как программно добавить подписки календаря на iOS?

Резюмируя принятый ответ:

NSString *url = @"http://server/filename.ics";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

Изменить: использовал это в своем собственном приложении и убедился, что оно работает...

Редактировано MitchR: для тех, кто создает свои собственные фиды ics на сервере, URL-адрес должен заканчиваться на .ics, чтобы получить приглашение на подписку. Тип MIME ответа также должен быть текстовым/календарным. Мой сервер является сервером .NET/MVC, поэтому я добавил собственный маршрут, чтобы иметь .ics в конце действия контроллера.

person gtmtg    schedule 06.06.2012
comment
Да, я пробовал это, хотя я генерирую свой канал ics по URL-адресу, который не заканчивается на .ics. В этом разница? - person Mike S; 07.06.2012
comment
@MitchR Вероятно, в этом проблема - возможно, iOS не распознает это как подписку на календарь. Что происходит, когда вы пытаетесь использовать код? - person gtmtg; 07.06.2012
comment
Он просто открывает Safari на iPhone и показывает исходный текст ics. Я могу подписаться на него в приложении iCal для Mac OS X, так что это доказывает, что это действующий канал. Я попытаюсь изменить свой канал .NET, чтобы он заканчивался на .ics, и отчитаюсь. - person Mike S; 07.06.2012
comment
@MitchR Это, вероятно, будет вашим лучшим вариантом ... это, вероятно, глупое предложение, но, может быть, вы можете просто взять свой URL-адрес и добавить .ics в его конец. Поскольку он в формате ICS, он может работать... - person gtmtg; 07.06.2012
comment
Хм - оказывается, это был не бит ics в конце, который он искал, но мне пришлось установить тип MIME как текст/календарь. Теперь работает так, как вы описали. К сожалению, он просто позволяет импортировать эти события в ваш календарь, а не подписываться на них. - person Mike S; 08.06.2012
comment
@MitchR Похоже, что он обновляется и повторно синхронизируется, по крайней мере, для меня. Я не знаю точно, когда он обновляет подписку на календарь, но если я запущу свое приложение, добавлю подписку на календарь (используя этот код), выйду из симулятора, добавлю новое событие в календарь или изменю детали существующего, и снова откройте симулятор и откройте мое приложение, информация обновится. Если это имеет значение, я использую URL-адрес подписки iCal (ics) Календаря Google. - person gtmtg; 08.06.2012
comment
Хм. Когда я это делаю, вы выбираете (или создаете) новый календарь и копируете события. Сам процесс, похоже, указывает на то, что он только импортирует, а не настраивает подписку. Вы используете iOS5? - person Mike S; 12.06.2012
comment
@MitchR Да, я использую iOS 5.1 в симуляторе iPhone. Я только вчера купил членство в программе для разработчиков, поэтому я протестирую его на своем устройстве и посмотрю, отличается ли он. - person gtmtg; 12.06.2012
comment
K это было бы здорово, так как я тестирую на устройстве. - person Mike S; 13.06.2012
comment
@MitchR На моем устройстве, когда я нажимаю кнопку для выполнения этого кода, появляется предупреждение с вопросом «Подписаться на календарь «Проверить календарь»? и две кнопки с надписью «Подписаться» и «Отмена». При нажатии на кнопку «Подписаться» через несколько секунд появляется новое предупреждение, в котором говорится, что календарь «Проверить календарь» был добавлен, и две кнопки с пометками «Просмотр событий» и «Готово». Я тестирую iPod Touch 4-го поколения под управлением iOS 5.1.1... Это то, что вы получаете? - person gtmtg; 13.06.2012
comment
Нет, я получаю стандартный открытый экран — без упоминания о подписках. Если я открываю приложение календаря, оно просто дает мне возможность импортировать в существующий календарь или создать новый. Канал ics, к которому я подключаюсь, является моим собственным, который я создаю с помощью плагина DDay .NET. Может, есть какая-то разница с гугловскими? - person Mike S; 13.06.2012
comment
Отредактировал ваш ответ, чтобы включить мои выводы. Интересный результат. Спасибо за вашу помощь @gtm. - person Mike S; 15.06.2012
comment
Как насчет использования webcal вместо http? Я знаю, что если вы коснетесь ссылки в Mobile Safari, которая начинается с webcal, она использует приложение «Календарь», чтобы открыть связанный файл и подписаться на него, даже если он не заканчивается на .ics. - person Tom Hamming; 18.09.2012
comment
@Mr.Jefferson Я пытался изменить обработчик URL на webcal://, но он не работает. Он просто ничего не делает. - person gtmtg; 15.10.2012