2013-02-19 2 views
0
NSURL *url = [NSURL URLWithString:@"valid_webcal_url"]; 
if (![[UIApplication sharedApplication] openURL:url]) 
{ 
    // failure callback 
    NSLog(@"%@%@",@"Failed to open url:",[url description]); 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:LCHLocalizedString(@"SUBSCRIBE_ERROR", nil) message:nil delegate:self cancelButtonTitle:@"Okay" otherButtonTitles: nil]; 
    [alert show]; 
} 

Итак, я выяснил, как увидеть, была ли ошибка загрузки webcal, но как я могу узнать, когда webcal был загружен успешно? Я показываю загрузчик, когда кнопка «подписаться» используется, и просто нужно знать, когда ее отключить.ios webcal request - завершение обратного вызова?

+0

Почему вы изнасиловали бедный 'NSLog()'? Строки формата могут содержать постоянные части, а 'NSLog (@" Не удалось открыть url:% @ ", url);' более читаем **. ** – 2013-02-19 18:13:50

+1

Не открыта ли OpenURL ваше приложение в фоновом режиме? – Mundi

+0

По-видимому, при использовании протокола webcal это не так. Funky, я знаю, но ваш комментарий помог мне найти подходящее решение. – Jacksonkr

ответ

1

Поскольку это использует openURL для извлечения элемента с помощью WebCal протокола, нет визуального разделения приложения и WebCal поиска.

Что мне нужно сделать, так это прослушать уведомление UIApplicationWillResignActiveNotification после звонка openURL, и когда увольняется уведомление, я предполагаю, что это вебкаль, захвативший мой вызов openURL.

Это сложное дело и рудиментарное исправление, но эй, оно работает! Спасибо за любую помощь/предложения.

1

Как уже сказано в комментариях, это положит ваше приложение в фоновом режиме без гарантированных средств автоматического возврата.

Предполагая, что вы действительно хотите вызвать веб-страницу (в отличие от вызова веб-ави), вы должны создать собственный подкласс UIViewController со встроенным UIWebView.

Установка вашего подкласса в качестве делегата UIWebView позволит вам реагировать на неудачу/успех. Вы даже можете перехватить и остановить UIWebView звонков с - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

Смежные вопросы