2011-08-09 9 views
-1

Webview 내에서 URL을 열고로드하는 동안 알림보기에 회 전자를 표시합니다.URL webview를 감지하면 iPhone 앱이 남아 있습니다.

도청 URL이 iTunes와 같은 내부 앱을 여는 경우 사용자가 대화 상자를 닫을 때 웹보기가 내 앱을 떠났기 때문에 어떻게 감지 할 수 있습니까?

didFailLoadWithError를 사용했는데 작동하지 않았습니까?

아이디어가 있으십니까?

내가 위임 찰흙을 설정하는 것을 잊었다

감사 단

고정 된 !

+0

질문에 대한 답변을 찾았 으면 답변으로 게시하고 질문에 답변으로 표시하고 동의율을 높이기 위해 자신의 대답을 수락해야합니다. –

답변

1

UIWebViewDelegate 방법 webView:shouldStartLoadWithRequest:navigationType:은 웹보기의 대리자를 요청합니다. 해당 메소드에서 url 유형을 확인하고 http 또는 https가 아닌 경우 NO를 반환 한 다음 사용자에게 경고를 표시하고 앱을 열거 나 앱 내에 머물도록 선택하거나 해당 앱이 남아 있는지 기록하도록 선택할 수 있습니다. 다른 것을 열고 YES를 리턴하십시오.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSString *urlString = [NSString stringWithFormat:@"%@", request.URL]; 
    NSArray *urlComponents = [urlString componentsSeparatedByString:@"://"]; 
    NSString *urlType = [urlComponents objectAtIndex:0]; 
    if ([urlType isEqualToString:@"http"] || [urlType isEqualToString:@"https"]) { 
     // present an alert or do whatever you want with this url... 
     return NO; 
    } 
    return YES; 
} 
1

우선 웹보기에서로드 진행률을 표시하는 경고보기를 사용하면로드가 완료 될 때까지 모든 사용자 상호 작용을 차단하므로 나쁜 생각 일 수 있습니다.

이미 웹보기에서 iTunes와 같은 내장 된 앱으로 특정 URL을 처리 할 수있는 코드가 있으므로 [[UIApplication sharedApplication] openURL:...]을 사용하여 외부 URL을 열 때 URL을 사용하면 쉽게 회 전자를 숨길 수 있습니다.

+0

예 공정한 포인트. 하지만 URL을로드 할 때까지 URL을 처리하지 못합니다. 음 ... 어쩌면이 문제를 다시 해결해야 할 것 같습니다. 감사. – Dan

1

applicationWillResignActive을 사용하면 앱이 비활성 상태가 될 때를 감지 할 수 있습니다. 이 앱 위임에 간다 : 당신이 대리자에서있는 UIWebView에 액세스 할 수없는 경우

- (void)applicationWillResignActive:(UIApplication *)application { 
    //close your UIWebView here 
} 

, 당신이 당신의 UIViewController에서 UIApplicationDidEnterBackgroundNotification 알림을 등록 할 수 있습니다. 어느 시점에서 등록을 취소하십시오. 이 엽니 다하기 전에 모든 단일 URL을 열 수있는 경우

//register 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeWebView) name:UIApplicationDidEnterBackgroundNotification object:nil]; 

//un-register 
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil]; 
+0

덕분에 웹보기 대리인이 처리했습니다. 나는 그걸 붙이지 않았어. – Dan

관련 문제