c# web. Занятие 15
TRANSCRIPT
Темы лекции: Приложения Windows Store. Работа с Google API
Тренер: Игорь Шкулипа, к.т.н.
Разработка Веб-приложений на платформе Microsoft .NET Framework.
Занятие 15
http://www.slideshare.net/IgorShkulipa 2
Приложения Магазина Windows
• Приложение Магазина Windows выполняются наустройствах Windows (компьютерах, планшетах, ноутбуках) имогут продаваться в Магазине Windows.
• Приложения Магазина Windows Phone выполняются наустройствах Windows Phone и могут продаваться в МагазинеWindows Phone.
• Универсальные приложения доступны и в МагазинеWindows, и в Магазине Windows Phone. С помощью MicrosoftVisual Studio можно легко создавать приложения для устройствпод управлением Windows и Windows Phone из одного проекта.
http://www.slideshare.net/IgorShkulipa 3
Приложения Магазина реализуются на платформе Windows
Windows предоставляет вам множество ресурсов, которые помогутзаинтересовать пользователей:
• Живые плитки и экран блокировки предоставляют краткий обзорактуальной и значимой в определенном контексте информации.
• Push-уведомления предлагают вниманию пользователей важныеоповещения от приложений в нужный момент.
• В новом Центре поддержки Windows Phone вы можете упорядочивать иотображать уведомления и содержимое, ожидающие от пользователякаких-либо действий.
• Благодаря фоновой работе и триггерам работа приложениявозобновляется именно тогда, когда это нужно пользователю.
• Вы можете использовать голосовые функции и устройства Bluetooth снизким энергопотреблением, чтобы помочь пользователямвзаимодействовать с окружающим миром.
http://www.slideshare.net/IgorShkulipa 4
Несколько ссылок
О некоторых особенностях Windows 8 и WinRT(метро)-приложений
Разработка приложений под Windows 8: почему и как
Windows 8.1: новые API и возможности для разработчиков
http://www.slideshare.net/IgorShkulipa 7
XAML передача параметров между страницами
http://www.slideshare.net/IgorShkulipa 8
MainPage.xaml
<Page
x:Class="PassObjectThroughPages.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:PassObjectThroughPages"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Chartreuse">
<TextBox Name="EmailTB" HorizontalAlignment="Left“
Margin="521,201,0,0" TextWrapping="Wrap" Text="Email“
VerticalAlignment="Top" Width="322" />
<PasswordBox Name="PasswordTB" HorizontalAlignment="Left“
Margin="521,276,0,0" Password="password“
VerticalAlignment="Top" Width="322" />
<Button Name="LoginButton" Content="Login“
HorizontalAlignment="Left"
Margin="518,349,0,0“
VerticalAlignment="Top"
Width="328“
Click="LoginButton_Click"/>
</Grid>
</Page>
http://www.slideshare.net/IgorShkulipa 9
AnotherPage.xaml
<Page
x:Class="PassObjectThroughPages.AnotherPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:PassObjectThroughPages"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Chartreuse">
<TextBlock Name="WelcomeTB" HorizontalAlignment="Center“
Margin="641,378,652,0" TextWrapping="Wrap“
Text="TextBlock" VerticalAlignment="Top" FontSize="22“
Height="30"/>
</Grid>
</Page>
http://www.slideshare.net/IgorShkulipa 10
MainPage.xaml.cs
namespace PassObjectThroughPages
{
public class EmailPass
{
public string Email { get; set; }
public string Password { get; set; }
}
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void LoginButton_Click(object sender, RoutedEventArgs e)
{
var arg = new EmailPass
{ Email = EmailTB.Text, Password = PasswordTB.Password };
this.Frame.Navigate(typeof(AnotherPage), (object)arg);
}
}
}
http://www.slideshare.net/IgorShkulipa 11
AnotherPage.xaml.cs
namespace PassObjectThroughPages
{
public sealed partial class AnotherPage : Page
{
EmailPass EP;
public AnotherPage()
{
this.InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (e.Parameter is EmailPass) EP = e.Parameter as EmailPass;
WelcomeTB.Text = "Welcome, " + EP.Email;
}
}
}
http://www.slideshare.net/IgorShkulipa 13
Google API
http://www.daimto.com/
http://www.slideshare.net/IgorShkulipa 14
Настройка Google API
http://www.slideshare.net/IgorShkulipa 15
Настройка Google API
http://www.slideshare.net/IgorShkulipa 16
Настройка Google API
http://www.slideshare.net/IgorShkulipa 17
Добавление нового приложения в консоли Google
https://console.developers.google.com/
http://www.slideshare.net/IgorShkulipa 18
Добавление нового приложения в консоли Google
http://www.slideshare.net/IgorShkulipa 19
Добавление нового приложения в консоли Google
http://www.slideshare.net/IgorShkulipa 20
Включить необзодимые API
http://www.slideshare.net/IgorShkulipa 21
Пример. Консольное приложение
using System.Threading;
using System.Threading.Tasks;
using Google;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v2;
using Google.Apis.Drive.v2.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
UserCredential credential =
GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = “YOUR_CLIENT_ID",
ClientSecret = “YOUR_CLIENT_SECRET",
},
new[] {
DriveService.Scope.Drive,
DriveService.Scope.DriveFile},
Environment.UserName,
CancellationToken.None,
new FileDataStore("GoogleDrive.Auth.Store")).Result;
http://www.slideshare.net/IgorShkulipa 22
Пример. Консольное приложение
// Cсоздание сервиса
var service =
new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = “Google Drive Example"
});
// Получение списка файлов
FilesResource.ListRequest request = service.Files.List();
FileList files = request.Execute();
foreach (var f in files.Items)
{
Console.WriteLine("{0} - {1}", f.Title, f.MimeType);
}
var req =
service.HttpClient.GetByteArrayAsync
(files.Items[0].DownloadUrl);
byte[] byteArray = req.Result;
System.IO.File.WriteAllBytes
("d:\\Temp\\" + files.Items[0].Title, byteArray);
Console.ReadLine();
}
}
}