2015-01-04 2 views
1

내 응용 프로그램에는 WebView를로드하는 페이지가 있습니다. 때로는 Phone \ Sms \ Store \ 등의 다른 응용 프로그램을 여는 Url을 수신합니다. 나는 이러한 URL로 인해 내 페이지가 백그라운드로 이동하는 시나리오를 감지 할 수있는 방법을 찾으려고합니다.Windowsphone 8.1 webview 열린 전화 응용 프로그램

누구나 아이디어가 있습니까? 들으

+0

질문에 더 자세히 설명해 주시겠습니까? 질문에 답하기 위해 직감으로 나갔습니다. 그러나 나는 당신을 도울 수 있을지도 모른다고 생각한다. – Barnstokkr

답변

0

당신이 시도하고 웹보기가하고있는 곳 또는 알아낼 수있는 4 가지 옵션이 있습니다 :

를보고 문서화 그것 것 같은 가장 좋은 방법은 NavigationStarting 이벤트에 있으며 WebViewNavigationStartingEventArgs.Cancel property

<WebView NavigationStarting="webView1_NavigationStarting" /> 

true에 C#을

설정 우리는 저장하고 우리가 가고있는 웹 페이지가 유효한 웹 페이지

있는지 여부를 확인하기 위해 Dictionary<string, bool>를 사용할 수 있는지
private Dictionary<string, bool> knownWebSites; 
void webView1_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args) 
{ 
    string url = ""; 
    try { 
     url = args.Uri.ToString(); 
     if(knownWebSites.ContainsKey[url]) 
     { 
      if(knownWebSites[url] == flase) 
      { 
       args.Cancel = true; 
      } 
      // contine this is a known webpage without issues 
     } 
     else 
     { 
      args.Cancel = true; 
      CheckHttpWebpage(url); // first inspect the page 
     } 
    } 
    finally 
    { 
     // Do stuff 
    } 
} 

async void CheckHttpWebpage(string url) 
{ 
    HttpClientResponse response = await HttpGet(url); // this is a custom http get function 
    if(IsValidResponse(response)) 
    { 
     knownWebSites.Add(url, false); // this page has issues 
    } 
    else 
    { 
     knownWebSites.Add(url, true); // this page is good 
     webview.Navigate(new Uri(url)); 
    } 
} 

bool IsValidResponse(HttpClientResponse response) 
{ 
    // In here you can examine 
    // 1. response content to make sure it does not return phone numbers, and you have it, so you can do something pretty with it now :-) 
    // 2. url to make sure it isn't a redirect 
    // 3. lots of other stuff to ensure that the navigating to webpage is valid 
} 

웹 페이지에 대한 인증이 필요한 경우 HttpWebResponse을 사용하는 것이 좋습니다.

+0

안녕하세요. 정상적으로 작동하지 않을까 걱정됩니다. 타겟팅하는 최종 URL이 Win으로 이어질 수 있습니다. store를 선택하면 WebView는 자동으로 알림없이 저장소를 엽니 다. 완료된 이벤트가 도착하지만 Store 또는 Phone \ SMS \ Email과 같은 다른 타사 응용 프로그램으로 리디렉션되지 않습니다. – rbd

+0

@rbd 답변이 업데이트되었습니다. 도움이 되었기를 바랍니다. – Barnstokkr

+0

안녕하세요, 자세한 답변을 주셔서 감사합니다. 이미 NavigationStarting 이벤트를 사용하고 있지만 문제는 서버 응답이 리디렉션 인 경우입니다 (예 : tel : +17337373883). OS가 자동으로 전화를 엽니 다. 내 편에서 뭔가를하지 않고도 응용 프로그램을 사용할 수 있습니다. 그냥 좀 더 구체적으로, Sniffer 추적에서 서버 응답이 200 (HttpOk)이 아닌 302 (리디렉션)이고 응답에서 Location 요소가 tel : +17337373883임을 확인할 수 있습니다. – rbd

관련 문제