NNUG Trondheim 30.09.2010 - Windows Phone 7

Preview:

DESCRIPTION

Introduksjon til Windows Phone 7 som plattform. Presentert på NNUG møte i Trondheim 30.09.2010.

Citation preview

Windows Phone 7

Jonas Follesø

NNUG Trondheim, 30. september 2010

ABOUT ME

JONAS FOLLESØjonas@follesoe.no

http://jonas.follesoe.no

@follesoe

AGENDA:- WP7 PLATFORM- PHONE APIs- TDD- BLEND 4- DEMOS!

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/2

07

92

78

7@

N0

0/2

24

86

23

39

1/

WINDOWS PHONE 7

A FRESH START!

XNA FOR GAMES

SILVERLIGHT FOR APPS

KNOW SILVERLIGHT?

THEN YOU KNOW WP7!

HELLO WORLD

DEMO

METRO DESIGN

LANGUAGE

PIVOT CONTROL

HUB CONTROL

BLEND 4DEMO

LAUNCHERS & CHOOSERS

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/m

ad

_hou

se_p

hoto

gra

ph

y/

44

40

87

13

80

/

• CameraCaptureTask• EmailAddressChooserTask• EmailComposeTask• MarketplaceDetailTask• MarketplaceHunTask• MarketplaceReviewTask• MarketplaceSearchTask• MediaPlayerLauncher• PhoneCallTask• PhoneNumberChooserTask• PhotoChooserTask• SaveEmailAddressTask• SavePhoneNumberTask• SearchTask• SmsComposeTask• WebBrowserTask

LAUNCH BUILT IN APP WITH SOME DATA

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/2

86

34

33

2@

N0

5/4

05

47

66

77

0/

private void smsCompose_Click(object sender, RoutedEventArgs e){ var smsCompose = new SmsComposeTask(); smsCompose.To = "97706660"; smsCompose.Body = "Hello NNUG!"; smsCompose.Show();}

LAUNCH BUILT IN APP TO CHOOSE

SOME DATA

private void choose_Click(object sender, RoutedEventArgs e){ var emailChooser = new EmailAddressChooserTask(); emailChooser.Completed += emailChooser_Completed; emailChooser.Show();}

private void emailChooser_Completed(object sender, EmailResult e){ if(e.TaskResult == TaskResult.OK) email.Text = e.Email;}

CHOSER & LAUCHER

DEMO

EXECUTION MODEL &

TOMBSTONING

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/9

81

09

48

@N

05

/15

83

50

67

87

/

NO MULTI TASKING

BUT...

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/n

3p

tun

3r/

33

76

69

74

90

/

FAST ACTIVATION &

DEACTIVATION

GIVES IMPRESSION OF

APP RUNNING IN

BACKGROUND

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/ci

rox/3

63

28

41

94

/

PAGE STATE• Poisition of ScollViewer• Content of TextBox• State of other UI elements

• OnNavigatedTo & OnNavigatedFrom

APP STATE• State not associated with

spesific page

• Managed by PhoneApplicationService

PERSISTENT DATA

• Data shared by all instances of app

• Save and loaded from Isolated Storage

TRANSIENT STATE

• Data for instance of application

• Stored in State dictionary

• Similar to cache

Launching Running

Closing Deactivating Activating

Chooser/Task/Other

PUSH NOTIFICATIONS

WHEN APP IS NOT RUNNING

TWO TYPES OF

NOTIFICATIONS

WP7 PUSH NOTIFICATIONS

Microsoft Push

Notification

Services

Your Web Applicatio

n

PUSH CLIENT

Notification Namespaces

Push Library

Your WP Application

1Open Channel

2 Hand off channel

URL

3 Pushmessage

4Push message

PUSH NOTIFICATION

S DEMO

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/ko

zlosk

i/2

30

65

10

52

0/

private void open_Click(object sender, RoutedEventArgs e){ var channel = HttpNotificationChannel.Find("NNUG");

if (channel == null) { channel = new HttpNotificationChannel("NNUG"); }

channel.ChannelUriUpdated += channel_ChannelUriUpdated; channel.ShellToastNotificationReceived += channel_ShellToastNotificationReceived; channel.Open();}

private void channel_ShellToastNotificationReceived

(object sender, NotificationEventArgs e){ foreach (var text in e.Collection) output.Text += text + "\r\n";}

ISOLATED STORAGE

FOR SIMPLE DATA STORAGE

NOSQLFOR WP7?

ISOLATED STORAGE

DEMO

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/om

arr

un

/46

72

53

12

53

/in

/ph

oto

stre

am

ACCELEROMETER

DEMO

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/h

ow

zey/2

88

04

55

76

2/

LOCATION AWARENESSIS KEY WHEN

ON THE GO

SAME API IN .NET 4 &

WP7

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/p

hoto

gra

ham

/19

83

24

03

1/

private void start_Click(object sender, System.Windows.RoutedEventArgs e){ var watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); watcher.PositionChanged += watcher_PositionChanged; watcher.Start();}

private void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e){ var location = e.Position.Location; var lat = location.Latitude; var lon = location.Longitude;}

TDD

FUNDAMENTALPRACTICE

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/m

ad

_hou

se_p

hoto

gra

ph

y/

44

40

87

13

80

/

TDDDEMO

FLIGHTS NORWAY

MONITORARRIVALS AND

DEPARTURES

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/sv

en

werk

/2

18

18

49

28

0/

RESTSERVICES

WITH FLIGHT INFORMATION

http://flydata.avinor.no/http://open.bekk.no/2009/12/13/hva-skjer-nar-man-gir-bort-flydata-gratis/

MVVM

PATTERN FOR BINDABLE UI

Data Model

VIEW

XAML

Code-BehindEvent

Handlers

APP LOGIC IN CODE BEHIND IS HARD TO TEST

AND MAINTAIN

Data Model

VIEW

XAML

Code-Behind

VIEW MODEL

State + Operations

Change notification

Data-binding and commands

SEPARATE USINGMVVM

MVVM SHOULD BE LIGHT WEIGHT

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/tr

eeh

ou

se1

97

7/2

89

24

17

80

5/

http://mvvmlight.codeplex.com/

FLIGHTS NORWAY

DEMO

DEMO

WP7 TWITTER CLIENT

SUMMARY:- WP7 PLATFORM- PHONE APIs- TDD- BLEND 4- DEMOS!

htt

p:/

/ww

w.fl

ickr

.com

/ph

oto

s/2

07

92

78

7@

N0

0/2

24

86

23

39

1/

FORK ME ON GITHUB

http://github.com/follesoe/FlightsNorway

http://github.com/follesoe/FrontEnd2010

BEKK CONSULTING ASSKUR 39, VIPPETANGEN. P.O. BOX 134 SENTRUM, 0102 OSLO, NORWAY.

WWW.BEKK.NO

Jonas FollesøSenior Consultant+47 977 06660

Jonas.folleso@bekk.nojonas@follesoe.no

Recommended