2014-07-07 5 views
0

Ive는 Windows Phone app에 BugSense를 추가하고 이에 따라 app.xaml.cs를 수정했습니다. 그러나 일부 사용자는 충돌이 발생하지만 BugSense는이를보고 있지 않습니다. 새로운 세션을 볼 수있는 BugSense와 라이선스가 맞지 않는 것은 무엇입니까?특정 코드에서 Bugsense를 사용하여 예외를 catch하는 방법은 무엇입니까?

나는이 코드 내에서 충돌이 발생한다고 생각한다. 특히 webclient를 생각하면 더욱 그렇다. 이 코드에 무엇을 추가하여 문제가 발생하면 BugSense가이를보고합니까?

private void LongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     LongListSelector selector = sender as LongListSelector; 

     // verifying our sender is actually a LongListSelector 
     if (selector == null) 
      return; 

     SoundData data = selector.SelectedItem as SoundData; 

     // verifying our sender is actually SoundData 
     if (data == null) 
      return; 


     if (data.IsDownloaded) 
     { 
      this.PlaySound(IsolatedStorageFile.GetUserStoreForApplication().OpenFile(data.SavePath, FileMode.Open, FileAccess.Read, FileShare.Read)); 
     } 
     else 
     { 
      if (!SimpleIoc.Default.GetInstance<INetworkService>().IsConnectionAvailable) 
      { 
       MessageBox.Show("You need an internet connection to download this sound."); 
      } 
      else 
      { 
       WebClient client = new WebClient(); 

       client.DownloadProgressChanged += (senderClient, args) => 
        { 
         Dispatcher.BeginInvoke(() => 
          { 
           data.DownloadProgress = args.ProgressPercentage; 
          }); 
        }; 

       client.OpenReadCompleted += (senderClient, args) => 
       { 
        using (IsolatedStorageFileStream fileStream = IsolatedStorageFile.GetUserStoreForApplication().CreateFile(data.SavePath)) 
        { 
         args.Result.Seek(0, SeekOrigin.Begin); 
         args.Result.CopyTo(fileStream); 

         this.PlaySound(fileStream); 
         data.Status = DownloadStatus.Downloaded; 
        } 

        args.Result.Close(); 
       }; 

       client.OpenReadAsync(new Uri(data.FilePath)); 
       data.Status = DownloadStatus.Downloading; 
      } 
     } 

     selector.SelectedItem = null; 
    } 

답변

0

난 그냥 내 WP8 응용 프로그램에 BugSense 자신을 사용하기 시작했는데 좀 더 내 App.xaml.cs를 파일에 코드 한 줄 것보다 아무것도하지 않고 처리되지 않은 예외를 캐치하는 방법을 매우 감동했습니다 :

public App() 
{ 
    BugSenseHandler.Instance.InitAndStartSession(new ExceptionManager(Current), RootFrame, "YourBugSenseApiKey"); 
    ... 
} 

내 경험으로 볼 때 BugSense는 사용자가 별도의 코드를 추가하지 않고 이러한 예외를 잡아야합니다.

이러한 충돌에 대해 어떻게 아십니까? Windows Phone Dev Center에서 제공합니까? 그렇다면 BugSense를 추가하기 전에 이전 버전의 앱이 설치되어있는 사용자로부터보고 된 오류가 계속 표시 될 수 있습니다.

시작시 앱 자체에서 새로운 앱 버전을 확인하고 사용자에게 경고하는 것이 좋은 방법이라는 사실을 알게되었습니다. 많은 사용자가 Windows Phone Store를 장시간 방문하지 않을 수도 있으며 앱을 최신 버전으로 업데이트하지 않아도되므로 이전 버전에 많은 사용자가있을 가능성이 큽니다.

+0

몇 명의 사용자로부터 직접 피드백을받은 후, WP8 사용자가 영향을 받고 WP8.1 사용자가 아닌 것으로 의심되기 시작했습니다. 응용 프로그램은 WP8 버전으로 설정되었습니다. 나는 8.1이 있고 아무 문제도 없다. WP8 사용자를 대상으로 코드가 무언가 충돌을 일으키고 있다고 생각합니다. 요점으로, 나는 app.xaml.cs에 코드를 가지고 있으며 bigsense는 그것을 잡아 내지 못하고있다. 내 가정이 정확하다면 WP8에서 작동하지 않는 코드와 그 코드를 어떻게 처리해야하는지 알아야합니다. – user3568429

+0

내 WP8 앱에 대해 WP8 및 WP8.1에서 기록 된 오류가 표시됩니다. Windows Dev Center - https://dev.windowsphone.com/en-US/CrashReport (위의 그래프에서 지난 30 일 동안의 최상위 스택 추적 내보내기) 링크에서 스택 추적을 내 보낸 적이 있습니까? 실제로 스택이 있는지 확인하십시오. BugSense가 놓친 흔적이 있습니까? – Gavin

+0

예. 거기에 몇 백 개 있습니다. 리뷰를 남기거나 앱 충돌을 이메일로 보내는 사람들을 믿어야합니다. BugSense는 내가 생각하는 세부 사항을 제공하고 적어도 그들이 사용하는 OS 버전을 확인합니다. 예비 전화로 WP 8을 시험해 볼 수 있었으면 좋겠습니다. 8.1 대신에 8을 사용하도록 Visual Studio에서 에뮬레이터 OS 버전을 변경하는 방법이 있습니까? – user3568429