2012-08-28 4 views
3

나는 (아마도) 사용자에게 두 차례의 토스트 알림을 차례대로 보여줄 수있는 앱을 가지고있다. 그런 시나리오가 발생하면 두 가지 알림 중 하나만 사용자에게 표시되지만 사용자가 앱을 시작한 다음 동일한 알림이 메시지 상자의 사용자에게 표시되고 첫 번째 메시지에 대해 '취소'를 클릭하고 다음 통지가 표시됩니다. 그래서 의심의 여지가 있습니다. 두 번의 토스트 알림이있는 경우 어떻게 처리할까요? 두 가지 중 어느 것이 사용자에게 표시됩니까? 그리고 사용자에게 알림 만 표시되는 경우 (기본적으로 장치의 동작에 따라) 알림을 차례로 표시하는 방법이 있습니까?같은 앱에 대한 두 개의 토스트 알림을 동시에 표시합니다. 장치가 우선 순위를 매기고 처리하는 방법은 무엇입니까?

이것은 QUESTION과 비슷하지만 WP7의 동작을 다른 많은 스마트 폰 OS 인 WP7의 기능으로 알고 싶습니다.

모든 제안, 의견 및 답변은 ​​높이 평가됩니다. 고맙습니다

답변

0

이이

public static void ShowToast() 
    { 
     try 
     { 
      string langKey = CacheManager.getInstance().getDataFromConfigFile(CacheManager.APP_CURRENT_LANGUAGE); 
      string flag = CacheManager.getInstance().getDataFromConfigFile(CacheManager.APP_UPGRADE_STATUS); 
      string catalogUpdateFlag = CacheManager.getInstance().getDataFromConfigFile(CacheManager.APP_CATALOG_UPGRADE_STATUS); 

      CultureInfo ci; 
      if ((null == langKey) || (langKey.Equals(Utils.LANGUAGE_EN))) 
      { 
       ci = new CultureInfo("en-US"); 
      } 
      else 
      { 
       ci = new CultureInfo("fr-FR"); 
      } 
      AppResources.Culture = ci; 

      if (!Utils.isNullString(flag)) 
      { 
       var toast = new ShellToast 
       { 
        Title = AppResources.APP_NAME, 
        Content = getMessageStatus(flag), 
        NavigationUri = new System.Uri("/MainPage.xaml", System.UriKind.Relative) 
       }; 

       Logger.log(TAG, ":ShowToast():MessageToUser" + AppResources.APP_NAME + getMessageStatus(flag)); 


       toast.Show(); 
      } 
      if (!Utils.isNullString(catalogUpdateFlag)) 
      { 
       var toast = new ShellToast 
       { 
        Title = AppResources.APP_NAME, 
        Content = getMessageStatus(catalogUpdateFlag), 
        NavigationUri = new System.Uri("/MainPage.xaml", System.UriKind.Relative) 
       }; 

       Logger.log(TAG, ":ShowToast():MessageToUser" + AppResources.APP_NAME + getMessageStatus(catalogUpdateFlag)); 


       toast.Show(); 
      } 
     } 
     catch (Exception ex) 
     { 

      Logger.log(TAG, "Exception in ShowToast: " + ex.Message + "\n" + ex.StackTrace); 

     } 
    } 
    private static string getMessageStatus(string flagType) 
    { 
     //string flag = CacheManager.getInstance().getApplicationSettings(CacheManager.APP_UPGRADE_STATUS); 
     string flag = CacheManager.getInstance().getDataFromConfigFile(CacheManager.APP_UPGRADE_STATUS); 
     string catalogUpdateFlag = CacheManager.getInstance().getDataFromConfigFile(CacheManager.APP_CATALOG_UPGRADE_STATUS); 

     if (flagType == flag) 
     { 
      if (flag.Equals(CacheManager.MAJOR_UPGRADE)) 
      { 
       return AppResources.APP_UPGRADE_CONFIRM; 
      } 

      else if (flag.Equals(CacheManager.MINOR_UPGRADE)) 
      { 
       return AppResources.APP_UPGRADE_MINOR_CONFIRM; 
      } 
     } 
     else if (flagType == catalogUpdateFlag) 
     { 
      return AppResources.APP_CATALOG_CONFIRM; 
     } 
     return ""; 
    } 

가 나는 그것의 응용 프로그램을 업그레이드하거나 카탈로그 업그레이드 (새로운 항목이 기존에 추가됩니다) 알고 두 개의 서로 다른 변수를 촬영 한 것입니다. 따라서 카탈로그 업그레이드 및/또는 애플리케이션 업그레이드 사용자에게는 알림이 전송됩니다.

+0

굉장합니다. 코드가 나에게 잘 어울립니다. 두 메시지를 서로주고받는 것을 기쁘게 생각합니다! – KingPancake

1

Windows Phone 7은 두 가지 메시지를 모두 표시 할 가능성이 있으며, 먼저 전화가 어느 것이 먼저 수신되는지에 따라 달라집니다.

이 페이지의 다이어그램을 보면 http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff402558(v=vs.92).aspx 푸시 (토스트, 타일 또는 원시) 알림을 보내는 데 많은 의사 소통이 있음을 알 수 있습니다. 또한 Microsoft 푸시 알림 서비스 (First Push First Service)를 정상적으로 보내는 Microsoft 푸시 알림 서비스에 따라 다릅니다.

그래서 소리를 통해 응용 프로그램이 토스트 알림을 보내는 방식을 제한하려고합니다. 그래서 토스트 알림이 특정 시간 내에 전화로 전송되었는지 확인하십시오. 그 시간이 지나기 전까지 다음 알림을 보류하고 있으면 알림을 보냅니다. 또한

MPN이 실제로 전화가 내가 게시 링크에서 알림

을받은 수는 전송에 대한 자세한 내용이 많이 들어가는 경우 결정하는 데 도움이됩니다에 푸시 알림을 보내 있는지 확인하는 기억 푸시 알림을 수신하는 단계를 포함하는 방법. 내가 무슨 짓을

+0

문제는 두 알림이 모두 다시 돌아 오는 것입니다. 그래서 그 중 하나만 따기. 나는 빠른 응답을 위해 Thnx 링크를 점검 할 것이다! – Apoorva

+0

알림이 연속적으로 전송되는 경우 2 대신 토스트 1 개로 만들 수없는 이유는 무엇입니까? 링크 하단에있는 푸시 알림 보내기 링크를 체크 아웃하면 설정됩니다 (또는 http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202945(v=vs.92)). aspx) 토스트 알림 페이로드 섹션을 확인하고 토스트 알림을 전달할 수있는시기를 설정할 수 있습니다. – KingPancake

+0

사실 나는 그것을 다른 방식으로 고쳤으며 정상적으로 작동합니다. 다시 알림을받습니다 .. 나는 코드 tmrw를 게시합니다 :) thnx는 모든 도움을 요청합니다. 당신의 대답은 정말로 도움이되었습니다. – Apoorva

관련 문제