0

현재 내 애플 리케이션에 내가 onActivated 리스너를 등록하고에 의해 활성화 실행 등처럼 내 공유 활동에 대한 점검합니다 : 방법과 함께UWP C#을 응용 프로그램 - 통지

 Window.Current.Activated += Current_Activated; 

활성화 상태를 확인하기 위해 다음을 수행합니다.

private async void Current_Activated(object sender, Windows.UI.Core.WindowActivatedEventArgs e) 
     { 
if (e.WindowActivationState == CoreWindowActivationState.Deactivated) 
      { 

      } 
      else 
      {}      } 

이제 백그라운드 작업의 알림을 통해 활성화를 구현하고 싶습니다. 알림을 클릭하면 현재 앱이 열리고 이미 열려있는 경우 포 그라운드로 이동합니다. 이는 표준적인 동작입니다. 이제 알림을 통해 활성화에 대한 코드를 실행하고 싶지만 내 메서드가 호출되지 않으며 Microsoft의 온라인 자료를 비교적 간단하게 이해하지 못합니다.

나는 같은 리스너를 등록하고 :

 (Application.Current as App).Activated = new EventHandler<IActivatedEventArgs>(App_Activated); 

이 같은라는 외모를 얻을 수 없다 방법 :

private void App_Activated(object sender, IActivatedEventArgs e) 
     {              } 

이 서로 충돌하는 두 있습니까? 내 기존 방법으로 알림 활성화를 구현할 수있는 방법이 있습니까?

나는이를 읽고 더 많은 페이지했습니다 : 심지어 내가 정말 할 필요가 무엇인지 이해하지 못하는 다운로드 테스트 응용 프로그램에서

https://blogs.msdn.microsoft.com/tiles_and_toasts/2015/07/08/quickstart-sending-a-local-toast-notification-and-handling-activations-from-it-windows-10/. 그 외에 알림에서 주요 활동으로 정보를 전달할 필요가 없습니다. 단순히 열어서 페이지를 새로 고치는 명령 하나만 실행하면되지만 알림 활성화시에만 실행됩니다.

답변

1

App.xaml.cs에서 OnActivated(IActivatedEventArgs args) 메서드를 무시하고 args.Kind 속성이 ActivationKind.ToastNotification인지 확인해야합니다.

UWP 앱 활성화 here 처리에 대한 자세한 정보를 찾을 수 있습니다.

+0

아아합니다. 그게 다야. 나는 app.xaml.cs.x에서 그것을 오버라이드해야한다는 것을 알지 못했다. 나는 앱의 메인 페이지에서이를 무시하려고 시도했다. 감사 – SunnySonic

1

마리아가 말했듯이 App.xaml.cs 클래스의 OnActivated 메서드를 재정의해야합니다. OnActivated 메서드는 토스트를 클릭 할 때 호출되며 토스트 인수가 포함되어 있으므로 클릭 한 토스트를 알 수 있습니다. OnActivated에서 OnLaunched과 동일한 프레임 초기화를 수행해야합니다. 사용자가 앱을 닫은 상태에서 토스트를 클릭하면 OnActivated 메서드 만 호출되므로 OnLaunched는 호출되지 않기 때문입니다.

이 빠른 토스트 활성화를 처리하는 방법을 정확히 설명하고, 전체 코드 샘플이 포함되어 Quickstart: Sending a local Toast notification

관련 문제