2013-02-19 5 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이 성공적으로로드 된시기를 어떻게 알 수 있습니까? "subscribe"버튼을 누를 때 로더를 표시하고 언제 꺼야하는지 알아야합니다.ios webcal request - 완료 콜백?

+0

가난한 NSLog()를 강간하는 이유는 무엇입니까? 형식 문자열은 상수 부분을 포함 할 수 있으며 NSLog (@ "URL을 열 수 없음 : % @", url);은 ** 읽기 쉽습니다 ** –

+1

어쨌든 openURL을 사용하여 앱을 백그라운드에 두지 않습니까? – Mundi

+0

분명히 webcal 프로토콜을 사용할 때 그렇지 않습니다. 펑키, 나도 알아,하지만 당신의 의견은 내가 실행할 수있는 해결책을 찾도록 도왔다. – Jacksonkr

답변

1

UIWebView 호출을 중지 할 수 있습니다, 응용 프로그램 및 있으며 webcal 검색의 시각적 구분이 없습니다.

openURL을 호출 한 후 UIApplicationWillResignActiveNotification으로 전화를 청취하는 것입니다. 알림이 시작될 때 openURL 통화를 인계받은 것으로 간주합니다.

이것은 까다로운 비즈니스 및 기초적인 수정이지만 이봐, 작동합니다! 모든 도움/제안에 감사드립니다.

1

댓글에 이미 언급했듯이 자동 리턴 보장 수단이없는 앱을 백그라운드에서 사용하게됩니다.

실제로 웹 페이지를 호출하려는 경우 (웹 API 호출과 반대) UIViewController의 사용자 정의 하위 클래스를 UIWebView으로 작성해야합니다.

서브 클래스를 UIWebView의 대표로 설정하면 실패/성공에 대응할 수 있습니다. 당신도 차단이가 있으며 webcal 프로토콜을 사용하여 항목을 검색 할 수 openURL를 사용하고 있기 때문에 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType