0

Windows Phone에서 푸시 알림 자습서를 수행하고 있습니다. 처음에는 알림을 푸시하는 데 아무런 문제가 없습니다.Azure 모바일 서비스 채널의 Null 예외

그러나 며칠 후 나는 코딩을 다시 열어이 오류 가지고 : App.xaml.cs를에서

System.NullReferenceException was unhandled by user code 
    HResult=-2147467261 
    Message=Object reference not set to an instance of an object. 
    Source=UtemFtmkDB 
    StackTrace: 
     at UtemFtmkDB.MainPage.ButtonSave_Click(Object sender, RoutedEventArgs e) 
     at System.Windows.Controls.Primitives.ButtonBase.OnClick() 
     at System.Windows.Controls.Button.OnClick() 
     at System.Windows.Controls.Primitives.ButtonBase.<OnMouseLeftButtonUp>b__3() 
    InnerException: 

: 나는이 얻을 :App.CurrentChannel.ChannelUri.ToString()에서 데이터를 검색 할 때마다

private void AcquirePushChannel() 
{ 
    CurrentChannel = HttpNotificationChannel.Find("MyPushChannel"); 


    if (CurrentChannel == null) 
    { 
     CurrentChannel = new HttpNotificationChannel("MyPushChannel"); 
     CurrentChannel.Open(); 
     CurrentChannel.BindToShellTile(); 
    } 


} 

을 오류. 왜?

답변

0

채널이 아직 "연결됨"상태에 도달하지 않았을 수 있습니다.

확인 :

CurrentChannel.ConnectionStatus == ChannelConnectionStatus.Connected 

그게 사실 후에는 ChannelUri 대해 널 (NULL)이 아닌 값을 가져야한다.

0

당신은 ChannelUriUpdated 이벤트에 후크 할 것이다 : 채널 URI는 기존의 채널 변경 될 수 있음을

private void AcquirePushChannel() 
{ 
    CurrentChannel = HttpNotificationChannel.Find("MyPushChannel"); 

    if(null != CurrentChannel) 
    { 
     CurrentChannel.ChannelUriUpdated += CurrentChannelOnChannelUriUpdated;   
    } 
    else 
    { 
     CurrentChannel = new HttpNotificationChannel("MyPushChannel"); 
     CurrentChannel.ChannelUriUpdated += CurrentChannelOnChannelUriUpdated;   

     CurrentChannel.Open(); 
     CurrentChannel.BindToShellTile(); 
    } 
} 

private void CurrentChannelOnChannelUriUpdated(object sender, NotificationChannelUriEventArgs args) 
{ 
    // you can now get the URI from args.ChannelUri 
} 

참고. 따라서 새 채널을 만들 때와 상관없이 ChannelUriUpdated 이벤트를 청취해야합니다.