SlideShare a Scribd company logo
Develop for Windows 10
(PREVIEW)
Dan Ardelean – Mahiz
Twitter: @danardelean Email: dan.ardelean@live.com
Microsoft MVP Window Platform Development
Xamarin Certified Mobile Developer
2015 dan ardelean   develop for windows 10
Agenda
Windows Core
New Controls
App-to-App Communications
Action Center
First, Windows Core
One, Common source
One Windows kernel
One File I/O stack
One app model
More…
Easy for users to get
& stay current
Unified core
and app platform
The convergence journey
Windows 10
Converged
OS kernel
Converged
app model
UAP = Universal App Platform
A collection of contracts & versions
Target a version of UAP
not the Operating System
Platform Versioning
<TargetPlatform
Name="Microsoft.Universal"
minVersion="2.0.0.0"
maxVersionTested="3.5.0.0" />
Safely deploy one binary
to every type of device
Extension SDKs
UAP
Windows Core Windows Core Windows Core Windows Core
UAP UAP UAP
Desktop Mobile Xbox More…
Testing for capabilities
IsApiContractPresent
IsEnumNamedValuePresent
IsEventPresent
IsMethodPresent
IsPropertyPresent
IsReadOnlyPropertyPresent
IsTypePresent
IsWriteablePropertyPresent
Windows.Foundation.Metadata.ApiInformation
Test capabilities at runtime
var ns = "Windows.Phone.UI.Input.HardwareButtons";
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(ns))
{
Windows.Phone.UI.Input.HardwareButtons
.BackPressed += Back_BackPressed;
}
Platform extensions
<ItemGroup>

<SDKReference Include="Windows Desktop,
Version=10.0.9910.0"/>
<SDKReference Include="Windows Mobile,
Version=10.0.0.1"/>
</ItemGroup>
DEMO
Visual Studio
3:33
New Controls
Relative Panel
Adaptive
Relative to the panel
Relative to a sibling
Simplified XAML
Simplified Visual Tree
Simplified Visual State
Month Calendar
Basic operation
Date picker
Calendar view
Density bars
Investment
Outlook calendar
System calendar
SplitView
SplitView.PaneDisplayMode
SplitView.IsPaneOpen
"True"
SplitView.IsPaneOpen
"False"
Inline
Overlay
Compact Inline
Compact Overlay
Visual State setters & triggers
Setters set discrete properties
Many properties do not need animation
Triggers declare when a state is applied
No need to manually handle events in code-behind
<VisualState x:Name="wideState">
<VisualState.Setters>
<Setter Target="myPanel.Orientation" Value="Horizontal" />
</VisualState.Setters>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600"/>
</VisualState.StateTriggers>
</VisualState>
App to App Communication
enhancements in Windows 10
Enhanced App to App in Windows 10
Send file token, send data
Launch a *specific* app
App Services
Launch for Results
URI Activation++
Invoke a specific app
var options = new LauncherOptions();
options.TargetApplicationPackageFamilyName = "24919.InstapaperIt";
var launchUri = new Uri("instapaper:?AddUrl=http%3A%2F%2Fbing.com");
await Launcher.LaunchUriAsync(launchUri, options);
URI Activation++
Send Files
var options = new LauncherOptions();
options.TargetApplicationPackageFamilyName = "24919.InstapaperIt";
var token = SharedStorageAccessManager.AddFile (gpxFile);
ValueSet inputData = new ValueSet();
inputData.Add("Token", token);
var launchUri = new Uri("instapaper:?AddUrl=http%3A%2F%2Fbing.com");
await Launcher.LaunchUriAsync(launchUri, options, inputData);
Query URI Support
Discover if app already installed to handle a Uri
var queryUri = new Uri("instapaper:");
await Launcher.QueryUriSupportAsync(queryUri, LaunchUriType.LaunchUri);
?
var queryUri = new Uri("instapaper:");
string packageFamilyName = "24919.InstapaperIt";
await Launcher.QueryUriSupportAsync(queryUri, LaunchUriType.LaunchUriForResults, packageFamilyName);
Launch for Results
Launching the app
var options = new LauncherOptions();
options.TargetApplicationPackageFamilyName = "24919.Instap";
var launchUri = new Uri("instapaper:?AddUrl=http%3A%2F%2Fbing.com");
await Launcher.LaunchUriForResultsAsync(launchUri, options, data);
var resultData = new ValueSet();
resultData.Add("Result", value);
operation.ProtocolForResultsOperation.ReportCompleted(resultData);A
App1 App2
App Services
Web Services on Device
Client App A
Client App B Background Task
App with App Service
Action Center
managing your notification space
Action center & Quick actions
Action Center – User Experience
20 Notifications per app
Persistent notifications for 7 days (or shorter)
Users can:
- “chase” (tap) a notification (removes it from the action center)
- remove a group of notifications
- remove all notifications
First available on Phone in 8.1 - now on Windows
10 desktop as well!
Action Center Management APIs
Manage app notifications
Developers can:
• Remove one or many notifications
• Tag and group notifications
• Replace a notification with a new one
• Set an expiration on notifications
• Send “Ghost Toast” notifications (only show up in the notification center)
Action Center change triggers
ToastNotificationHistoryChangedTrigger
• Fires whenever a user dismisses a notification from Action Center
• Or when an app adds or removes or replaces a notification
Use to trigger a Background task in which you can maintain
consistency of unactioned item counts in app state and on
Tiles
Action Center change trigger
// Background task for a ToastNotificationHistoryChangedTrigger
public sealed class ActionCenterChangedTask: IBackgroundTask
{
public void Run(IBackgroundTaskInstance taskInstance)
{
var toasts = ToastNotificationManager.History.GetHistory();
if (toasts != null)
{
var count = toasts.Count();
if (count== 0)
{
BadgeUpdateManager.CreateBadgeUpdaterForApplication().Clear();
}
else
{
XmlDocument badgeXml = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeNumber);
XmlElement badgeElement = (XmlElement)badgeXml.SelectSingleNode("/badge");
badgeElement.SetAttribute("value", count.ToString());
BadgeNotification badge = new BadgeNotification(badgeXml);
BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badge);
}
}
}
}
Where to start
Installation
Windows 10 preview
• http://insider.windows.com/
Visual Studio 2015 preview
• http://www.visualstudio.com
The Visual Studio installer includes
the Windows 10 preview SDK
Extras
Microsoft Account
• Windows Developer License
Hyper-V (hardware dependent)
• Phone emulator
Question?

More Related Content

2015 dan ardelean develop for windows 10

  • 1. Develop for Windows 10 (PREVIEW) Dan Ardelean – Mahiz Twitter: @danardelean Email: dan.ardelean@live.com Microsoft MVP Window Platform Development Xamarin Certified Mobile Developer
  • 3. Agenda Windows Core New Controls App-to-App Communications Action Center
  • 4. First, Windows Core One, Common source One Windows kernel One File I/O stack One app model More…
  • 5. Easy for users to get & stay current Unified core and app platform The convergence journey Windows 10 Converged OS kernel Converged app model
  • 6. UAP = Universal App Platform A collection of contracts & versions
  • 7. Target a version of UAP not the Operating System
  • 9. Safely deploy one binary to every type of device
  • 10. Extension SDKs UAP Windows Core Windows Core Windows Core Windows Core UAP UAP UAP Desktop Mobile Xbox More…
  • 12. Test capabilities at runtime var ns = "Windows.Phone.UI.Input.HardwareButtons"; if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(ns)) { Windows.Phone.UI.Input.HardwareButtons .BackPressed += Back_BackPressed; }
  • 13. Platform extensions <ItemGroup> <!-- Reference to the .Net Framework and Windows SDK are automatic --> <SDKReference Include="Windows Desktop, Version=10.0.9910.0"/> <SDKReference Include="Windows Mobile, Version=10.0.0.1"/> </ItemGroup>
  • 16. Relative Panel Adaptive Relative to the panel Relative to a sibling Simplified XAML Simplified Visual Tree Simplified Visual State
  • 17. Month Calendar Basic operation Date picker Calendar view Density bars Investment Outlook calendar System calendar
  • 20. Visual State setters & triggers Setters set discrete properties Many properties do not need animation Triggers declare when a state is applied No need to manually handle events in code-behind <VisualState x:Name="wideState"> <VisualState.Setters> <Setter Target="myPanel.Orientation" Value="Horizontal" /> </VisualState.Setters> <VisualState.StateTriggers> <AdaptiveTrigger MinWindowWidth="600"/> </VisualState.StateTriggers> </VisualState>
  • 21. App to App Communication enhancements in Windows 10
  • 22. Enhanced App to App in Windows 10 Send file token, send data Launch a *specific* app App Services Launch for Results
  • 23. URI Activation++ Invoke a specific app var options = new LauncherOptions(); options.TargetApplicationPackageFamilyName = "24919.InstapaperIt"; var launchUri = new Uri("instapaper:?AddUrl=http%3A%2F%2Fbing.com"); await Launcher.LaunchUriAsync(launchUri, options);
  • 24. URI Activation++ Send Files var options = new LauncherOptions(); options.TargetApplicationPackageFamilyName = "24919.InstapaperIt"; var token = SharedStorageAccessManager.AddFile (gpxFile); ValueSet inputData = new ValueSet(); inputData.Add("Token", token); var launchUri = new Uri("instapaper:?AddUrl=http%3A%2F%2Fbing.com"); await Launcher.LaunchUriAsync(launchUri, options, inputData);
  • 25. Query URI Support Discover if app already installed to handle a Uri var queryUri = new Uri("instapaper:"); await Launcher.QueryUriSupportAsync(queryUri, LaunchUriType.LaunchUri); ? var queryUri = new Uri("instapaper:"); string packageFamilyName = "24919.InstapaperIt"; await Launcher.QueryUriSupportAsync(queryUri, LaunchUriType.LaunchUriForResults, packageFamilyName);
  • 26. Launch for Results Launching the app var options = new LauncherOptions(); options.TargetApplicationPackageFamilyName = "24919.Instap"; var launchUri = new Uri("instapaper:?AddUrl=http%3A%2F%2Fbing.com"); await Launcher.LaunchUriForResultsAsync(launchUri, options, data); var resultData = new ValueSet(); resultData.Add("Result", value); operation.ProtocolForResultsOperation.ReportCompleted(resultData);A App1 App2
  • 27. App Services Web Services on Device Client App A Client App B Background Task App with App Service
  • 28. Action Center managing your notification space
  • 29. Action center & Quick actions
  • 30. Action Center – User Experience 20 Notifications per app Persistent notifications for 7 days (or shorter) Users can: - “chase” (tap) a notification (removes it from the action center) - remove a group of notifications - remove all notifications First available on Phone in 8.1 - now on Windows 10 desktop as well!
  • 31. Action Center Management APIs Manage app notifications Developers can: • Remove one or many notifications • Tag and group notifications • Replace a notification with a new one • Set an expiration on notifications • Send “Ghost Toast” notifications (only show up in the notification center)
  • 32. Action Center change triggers ToastNotificationHistoryChangedTrigger • Fires whenever a user dismisses a notification from Action Center • Or when an app adds or removes or replaces a notification Use to trigger a Background task in which you can maintain consistency of unactioned item counts in app state and on Tiles
  • 33. Action Center change trigger // Background task for a ToastNotificationHistoryChangedTrigger public sealed class ActionCenterChangedTask: IBackgroundTask { public void Run(IBackgroundTaskInstance taskInstance) { var toasts = ToastNotificationManager.History.GetHistory(); if (toasts != null) { var count = toasts.Count(); if (count== 0) { BadgeUpdateManager.CreateBadgeUpdaterForApplication().Clear(); } else { XmlDocument badgeXml = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeNumber); XmlElement badgeElement = (XmlElement)badgeXml.SelectSingleNode("/badge"); badgeElement.SetAttribute("value", count.ToString()); BadgeNotification badge = new BadgeNotification(badgeXml); BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badge); } } } }
  • 34. Where to start Installation Windows 10 preview • http://insider.windows.com/ Visual Studio 2015 preview • http://www.visualstudio.com The Visual Studio installer includes the Windows 10 preview SDK Extras Microsoft Account • Windows Developer License Hyper-V (hardware dependent) • Phone emulator