내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8의 푸시 알림을 수신하도록 앱 설정

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

 

Microsoft 푸시 알림 서비스를 사용하려면 Windows Phone 앱이 Microsoft 푸시 알림 서비스로부터 푸시 알림을 수신하도록 설정해야 합니다. Windows Phone 의 Microsoft 푸시 알림 서비스는 전력 효율적인 방식으로 클라우드 서비스에서 Windows Phone 앱에 데이터를 보낼 수 있는 채널을 타사 개발자에게 제공하는 비동기적인 최선의 서비스입니다. 푸시 알림 수신을 구현하는 샘플 코드를 보려면 Windows Phone 8의 토스트 알림을 보내고 받는 방법, Windows Phone 8의 타일 알림을 보내고 받는 방법Windows Phone 8의 원시 알림을 보내고 받는 방법를 참조하세요.

푸시 알림을 받으려면 클라이언트 Windows Phone 앱이 다음 조건을 충족해야 합니다.

  • Windows Phone을 위한 앱 인증 요구 사항의 "푸시 알림 앱 섹션"과 Windows Phone의 앱 정책의 섹션 2.9에 나열된 요구 사항을 준수합니다.

  • 푸시 채널이 없으면 새로 열거나, 기존 푸시 채널에 연결합니다. 앱이 이전 인스턴스에서 푸시 채널을 만든 경우 푸시 채널이 존재할 수 있습니다. 푸시 채널은 타일 또는 토스트 알림에 바인딩된 경우 앱이 종료된 후에만 지속되므로 앱이 실행되고 있지 않더라도 이들 알림이 수신됩니다.

  • 원시 알림을 사용할 경우 앱이 실행되고 있지 않으면 푸시 채널이 제거됩니다. VoIP 앱과 같이 지속되는 푸시 채널을 필요로 하는 앱에서는 BindToShellTile() 또는 BindToShellToast()를 호출하여 푸시 채널을 ShellTile 또는 ShellToast에 바인딩해야 합니다. VoIP 앱을 만드는 방법에 대한 자세한 내용은 Windows Phone 8용 VoIP 앱을 참조하세요.

  • 토스트 알림을 받으려면 BindToShellToast() 메서드를 호출하여 채널을 토스트 알림에 바인딩해야 합니다.

  • 타일 알림을 수신하려면 BindToShellTile() 메서드를 호출하여 단말기의 로컬 리소스에 액세스하거나 BindToShellTile(Collection<Uri>) 메서드를 호출하여 원격 리소스에 액세스합니다. 원격 리소스에 액세스하려면 원격 이미지에 액세스할 수 있는 도메인 컬렉션을 제공해야 합니다. 컬렉션의 각 URI는 256자로 제한됩니다.

  • 수신할 이벤트를 등록합니다. 모든 앱은 푸시 알림 URI 변경에 대비하여 ChannelUriUpdated 이벤트를 등록해야 합니다. 이미 채널을 열었더라도 URI가 변경될 경우에 대비하여 ChannelUriUpdated 이벤트를 등록해야 합니다.

    모든 앱은 ErrorOccurred 이벤트를 등록해야 오류를 처리할 수 있습니다.

    원시 알림을 사용하는 앱이 알림으로부터 원시 데이터를 수신하려면 HttpNotificationReceived 이벤트를 등록해야 합니다.

    ShellToastNotificationReceived 이벤트를 등록하지 않으면 앱이 이미 실행 중인 경우 토스트 알림이 무시됩니다. 그러면 앱은 토스트 알림에 대한 응답 방법을 결정할 수 있습니다.

  • 앱이 시작될 때마다 사용자는 푸시 채널에서 푸시 알림을 전송하는 클라우드 서비스로 URI를 전달해야 합니다. 또한 URI가 할당된 단말기를 클라우드 서비스가 추적할 수 있도록 단말기 ID를 클라우드 서비스로 전달하는 것이 좋습니다. 그래야 URI가 변경될 경우 클라우드 서비스가 해당 단말기 ID에 대한 이전 URI를 바꿀 수 있습니다. 대부분의 시나리오에서 앱과 클라우드 서비스는 상호 통신을 위해 사용하는 자체 프로토콜을 이미 가지고 있으므로 Windows Phone 에서는 이 작업을 수행할 프레임워크를 제공하지 않습니다.

    클라우드 서비스와의 통신에 대한 모범 사례에는 다음이 포함됩니다.

    • 앱은 해당 클라우드 서비스를 인증해야 합니다.

    • 앱은 알림 채널 URI를 해당 클라우드 서비스로 보내기 전에 암호화해야 합니다.

    • 클라우드 서비스에서 Windows Phone OS 7.0 에 없는 알림 속성을 사용하는 경우 클라우드 서비스에서 Windows Phone OS 7.0 클라이언트에 대한 알림을 올바르게 다운그레이드할 수 있도록 OS 버전 정보를 클라우드 서비스로 보내야 합니다.

    • 클라우드 서비스는 해당 앱으로부터 수신한 알림 채널 URI의 유효성을 확인하고 안전한 방법으로 저장해야 합니다.

    • 앱에서 세션이 시작된 경우 항상 알림 채널 URI를 해당 클라우드 서비스로 보내야 합니다.

    • 클라우드 서비스는 해당 앱에 보내 이 앱에서 새 알림 채널 URI를 만들도록 하는 상태 코드를 가지고 있어야 합니다.

  • ConnectionStatusChanged 이벤트를 등록합니다. Microsoft 푸시 알림 서비스에 대한 연결 상태를 모니터링하여 알림 기능을 적절하게 저하시킬 수 있습니다.

  • 사용자가 앱에서 설정을 변경하여 알림 기능을 끌 경우 Windows Phone의 앱 정책의 섹션 2.9에서 설명한 것처럼 Close() 메서드를 사용하여 푸시 채널을 닫아야 합니다.

  • 발생하는 예외를 처리합니다. 발생 가능한 예외 목록은 다음 섹션을 참조하세요.

다음 오류는 HttpNotificationChannel 개체의 ErrorOccurred 이벤트 처리기 콜백을 통해 반환될 수 있습니다.

오류

설명

PushErrorTypeChannelOpenFailed

채널이 존재하지 않지만 열 수 없습니다. 채널을 다시 열어 봅니다.

PushErrorTypeMessageBadContent

원격 URL이 타일 알림 페이로드에 지정되었고 다음 조건 중 하나가 충족되지 않았습니다. 1) http://가 아닙니다. 2) 호스트 이름 길이가 256자를 초과합니다. 3) URL 길이가 2055자를 초과합니다. 4) 도메인이 허용 도메인 컬렉션에 지정되지 않았습니다.

토스트 알림 페이로드의 <Param> 태그 값이 256자 제한을 초과했습니다.

PushErrorTypeNotificationRateTooHigh

수신 알림의 속도가 현재 너무 빠릅니다. 메시지가 누락되지 않도록 수신 알림 속도를 낮춥니다.

PushErrorTypePayloadFormatInvalid

XML 페이로드에 형식이 잘못 지정된 XML이 포함되어 있거나, 헤더에 지정된 알림 유형이 사용된 페이로드 유형과 일치하지 않습니다. 또는 채널이 닫혀 있습니다. 오류에 해당하는 XML 페이로드를 확인하고 새 URI를 가져올 수 있도록 채널을 다시 엽니다.

PushErrorTypePowerLevelChanged

푸시 클라이언트가 전원 상태에 따른 어떠한 동작도 취하지 않아 이제 사용되지 않습니다.

PushErrorTypeUnknown

내부 오류가 발생하여 복구할 수 없습니다. 단말기를 다시 부팅해야 합니다.

다음 오류로 인해 HttpNotificationChannel 개체 API 호출에 대한 InvalidOperationException이 반환될 수 있습니다.

오류

설명

PushNotificationTileUriBindFailed

원격 URL이 허용 도메인 컬렉션에 지정되었고 다음 조건 중 하나가 충족되지 않았습니다. 1) http://가 아닙니다. 2) 호스트 이름 길이가 256자를 초과합니다. 3) URL 길이가 2055자를 초과합니다.

PushNotificationChannelBindFailed

BindToShellTile 또는 BindToShellToast가 실패했습니다. 바인딩을 다시 시도해 봅니다.

PushNotificationChannelBindingExists

채널에 이미 바인딩되어 있어 BindToShellTile 또는 BindToShellToast가 실패했습니다. 다시 바인딩하기 전에 IsShellToastBound 또는 IsShellTileBound 속성이나 UnbindToShellToast 또는 UnbindToShellTile을 확인합니다.

PushNotificationChannelExists

채널이 이미 열려 있어서 열지 못했습니다. Find 메서드를 호출하여 열려 있는 채널을 찾을 수 있습니다.

PushNotificationChannelNotOpened

채널이 아직 열리지 않았습니다. 이 작업을 시도하기 전에 채널을 열어야 합니다.

PushNotificationChannelOpenFailed

채널이 존재하지 않지만 열 수 없습니다. 채널을 다시 열어 봅니다.

PushNotificationChannelQuotaExceeded

이 단말기에서 최대 개수의 채널이 이미 열려 있습니다. 새 채널을 열려면 기존 채널을 제거해야 합니다.

PushNotificationChannelServerUnavailable

푸시 클라이언트 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 작업을 시도해 봅니다.

ShellInvalidInterval

지정한 간격이 허용되지 않습니다. 설명서에서 허용 간격을 확인합니다.

ShellInvalidRemoteImageUri

지정한 원격 이미지 URI가 잘못되었습니다. JPG 또는 PNG 파일에 대해 형식이 올바른 HTTP URI만 허용됩니다. HTTPS 및 다른 URI 유형은 사용할 수 없습니다.

ShellInvalidUri

지정한 로컬 이미지 URI가 잘못되었습니다. JPG 또는 PNG 파일에 대해 형식이 올바른 로컬 URI만 허용됩니다.

주의주의:

이 기능을 활성화하는 API는 Windows Phone 8 업데이트 3(OS 버전 번호 8.0.10492) 이상이 설치된 단말기에서만 사용할 수 있습니다. 이 기능을 사용하기 전에 단말기의 OS 버전을 확인해야 합니다.

사용자가 휴대폰에서 배터리 절약 모드 기능을 활성화한 경우 배터리가 최소 임계값 아래로 떨어져 배터리 절약 모드가 활성화되면 전력을 절약하기 위해 푸시 알림 수신이 비활성화됩니다. 앱이 푸시 알림에 크게 의존하는 경우에는 배터리 절약 모드가 활성화되었는지 감지하고 배터리 절약 모드가 활성화된 동안에는 푸시 알림을 받을 수 없다고 사용자에게 경고해야 할 수도 있습니다.

배터리 절약 모드가 활성화되어 있는지 감지하려면 PowerManager.PowerSavingModeEnabled 속성을 확인해야 합니다. 이 속성은 Windows Phone 8 업데이트 3 을 실행하는 단말기에서만 사용할 수 있으므로 단말기 OS 버전을 확인한 후에 리플렉션을 통해 이 속성에 액세스해야 합니다. 다음 예에서는 현재 배터리 절약 모드가 활성화되어 있는지 감지하는 방법을 보여 줍니다.


using Windows.Phone.System.Power;

public void CheckBatterySaverState()
{
    // The minimum phone version that supports the PowerSavingModeEnabled property
    Version TargetVersion = new Version(8, 0, 10492);

    if (Environment.OSVersion.Version >= TargetVersion) 
    {
        // Use reflection to get the PowerSavingModeEnabled value
        bool powerSaveOn = (bool)
            typeof(PowerManager).GetProperty("PowerSavingModeEnabled").GetValue(null, null);

        if (powerSaveOn)
        {
            MessageBox.Show("Battery Saver enabled. This app won’t receive notifications when Battery Saver is active.");
        }
    }
}

Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft