Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
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
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>
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
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