그냥 여러개로 나누어서 적어보았다.. ㅋㅋ 웬지 그게 더 멋있어 보여서 (헐…)
요즘엔 다 이렇게 하더라 ㅋㅋ
자 이제 윈폰 클라이언트 프로그램을 만들어보자..
일단 윈폰 프로젝트를 열고
private HttpNotificationChannel httpChannel;
const string channelName = "TestAppUpdatesChannel";
// Constructor
public MainPage()
{
InitializeComponent();
//Create the channel
//만약 채널이 이미 있으면
httpChannel = HttpNotificationChannel.Find(channelName);
//이벤트 등록
if (httpChannel == null)
{
httpChannel = new HttpNotificationChannel(channelName, "HugeFlowAppTestService");
httpChannel.Open();
httpChannel.BindToShellToast();
}
SubscribeToChannelEvents();
SubscribeToService();
}
채널을 등록하고 open하고 bind 한다.
bindToshellToast()는 망고버전에 나온 좋은 기능이다 더 편리해졌다 ㅋ
만약 이미 등록되어있다면
그냥 이벤트만 연결하고 클라이언트 URI를 서버에 전달한다.
private void SubscribeToChannelEvents()
{
httpChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(httpChannel_ChannelUriUpdated);
httpChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(httpChannel_ShellToastNotificationReceived);
}
이렇게 이벤트 연결하고
void httpChannel_ShellToastNotificationReceived(object sender, NotificationEventArgs e)
{
StringBuilder message = new StringBuilder();
string relativeUri = string.Empty;
message.AppendFormat("Received Toast {0}:\n", DateTime.Now.ToShortTimeString());
// Parse out the information that was part of the message.
foreach (string key in e.Collection.Keys)
{
message.AppendFormat("{0}: {1}\n", key, e.Collection[key]);
if (string.Compare(
key,
"wp:Param",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.CompareOptions.IgnoreCase) == 0)
{
relativeUri = e.Collection[key];
}
}
// Display a dialog of all the fields in the toast.
Dispatcher.BeginInvoke(() => MessageBox.Show(message.ToString()));
}
이건 이제 메세지를 받았을때 프로그램에 보여주기 위한 이벤트이다. 메세지를 받았을때 메세지 박스로 띄워준다.
/// <summary>
/// MS에서 받아온 url을 서버(WCF Service)에 보낸다.
/// </summary>
private void SubscribeToService()
{
string appid = "1";
//string baseUri = "http://localhost:19976/Notifications/Register?uri={0}&appId={1}";
string baseUri = "http://192.168.10.174:6060/Notifications/Register?uri={0}&appId={1}";
string theUri = String.Format(baseUri, httpChannel.ChannelUri.ToString(),appid);
WebClient client = new WebClient();
client.DownloadStringCompleted += (s, e) =>
{
if (e.Error == null)
{
Dispatcher.BeginInvoke(() => UpdateStatus("Registration Success"));
}
else
{
Dispatcher.BeginInvoke(() => UpdateStatus(e.Error.Message));
}
};
client.DownloadStringAsync(new Uri(theUri));
}
이렇게 서버에게 URI를 보내 준다. WCF Rest 서비스니 웹처럼 파라미터를 넣어서 전달
이렇게 해서 클라이언트 완성
NotificationToastClient.zip
'Windows Phone 7' 카테고리의 다른 글
[WP7] Toast Notification 만드는법 4 (Mango Ver) (0) | 2011.05.27 |
---|---|
[WP7] Toast Notification 만드는법 3 (Mango Ver) (0) | 2011.05.27 |
[WP7] Toast Notification 만드는법 1 (Mango Ver) (0) | 2011.05.27 |
[wp7] Customizing WP7 Push Notification Tiles (0) | 2011.05.03 |
[wp7] 모바일 앱에 광고 탑재하는법 (2) | 2011.04.26 |