Pengembangan Windows 10 - Kontrak Berbagi
Pada bab ini, kita akan belajar bagaimana membagi data antar aplikasi. Pengguna sering kali menemukan informasi yang ingin mereka bagikan dengan seseorang atau menggunakannya di aplikasi lain. Saat ini, pengguna ingin menggunakan teknologi untuk terhubung dan berbagi dengan orang lain.
Seorang pengguna mungkin ingin berbagi -
- Tautan dengan jejaring sosial mereka
- Salin gambar ke dalam laporan
- Unggah file ke penyimpanan cloud
Aplikasi hari ini, perlu memastikan bahwa data yang mereka gunakan juga tersedia bagi pengguna untuk dibagikan dan dipertukarkan. Berbagi adalah fitur ringan, yang mudah ditambahkan ke aplikasi UWP Anda. Ada beberapa cara bagi aplikasi untuk bertukar data dengan aplikasi lain.
Dalam aplikasi UWP, fitur berbagi dapat didukung dengan cara berikut;
Pertama, aplikasi dapat menjadi aplikasi sumber yang menyediakan konten yang ingin dibagikan oleh pengguna.
Kedua, aplikasi dapat menjadi aplikasi target yang dipilih pengguna sebagai tujuan untuk konten bersama.
Aplikasi juga bisa menjadi aplikasi sumber dan aplikasi target.
Berbagi Konten
Berbagi konten dari aplikasi, yang merupakan aplikasi sumber, sangat sederhana. Untuk melakukan operasi berbagi apa pun, Anda memerlukanDataPackageobjek kelas. Objek ini berisi data yang ingin dibagikan oleh pengguna.
Jenis konten berikut dapat disertakan DataPackage objek -
- Teks biasa
- Uniform Resource Identifier (URI)
- HTML
- Teks yang diformat
- Bitmaps
- Files
- Data yang ditentukan pengembang
Saat berbagi data, Anda dapat menyertakan satu atau beberapa format yang disebutkan di atas. Untuk mendukung berbagi dalam aplikasi Anda, Anda harus terlebih dahulu mendapatkan instance dariDataTransferManager kelas.
Ini kemudian akan mendaftarkan penangan kejadian yang dipanggil setiap kali a DataRequested acara terjadi.
DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager,
DataRequestedEventArgs>(this.ShareTextHandler);
Saat aplikasi Anda menerima file DataRequest objek, maka aplikasi Anda siap untuk menambahkan konten yang ingin dibagikan pengguna.
private void ShareTextHandler(DataTransferManager sender, DataRequestedEventArgs e){
DataRequest request = e.Request;
// The Title is mandatory
request.Data.Properties.Title = "Share Text Example";
request.Data.Properties.Description = "A demonstration that shows how to share text.";
request.Data.SetText("Hello World!");
}
Konten apa pun yang dibagikan aplikasi Anda, harus berisi dua properti -
- Properti Judul, yang wajib dan harus disetel.
- Konten itu sendiri.
Menerima Konten Bersama
Jika Anda ingin aplikasi Anda dapat menerima konten yang dibagikan maka hal pertama yang perlu Anda lakukan adalah menyatakan bahwa itu mendukung Share Contract. Setelah deklarasi, sistem akan membiarkan aplikasi Anda tersedia untuk menerima konten.
Untuk menambah dukungan Kontrak Saham -
Klik dua kali pada package.appmanifest mengajukan.
Pergi ke Declarationstab. MemilihShare Target dari Available Declarations daftar, dan klik pada Add tombol.
Jika Anda ingin aplikasi Anda menerima file apa pun sebagai konten bersama, Anda dapat menentukan jenis file dan format datanya.
Untuk menentukan Format Data yang Anda dukung, buka Data Formats bagian, dari Declarations halaman dan klik Add New.
Ketikkan nama format data yang Anda dukung. Sebagai contoh,"Text".
Untuk menentukan jenis file yang Anda dukung, di file Supported File Types bagian dari Declarations halaman, klik Add New.
Ketik ekstensi nama file yang ingin Anda dukung, misalnya, .pdf
Jika Anda ingin mendukung All file jenis, periksa SupportsAnyFileType kotak.
Ketika pengguna memilih aplikasi Anda sebagai aplikasi target untuk berbagi data kemudian OnShareTargetActivated acara dipecat.
Aplikasi Anda perlu menangani peristiwa ini untuk memproses data yang ingin dibagikan oleh pengguna.
protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) {
// Code to handle activation goes here.
}
Semua data yang ingin dibagikan pengguna dengan aplikasi apa pun terdapat di file ShareOperationobyek. Anda juga dapat memeriksa format data yang dikandungnya.
Diberikan di bawah ini adalah potongan kode yang menangani shared content dalam format teks biasa.
ShareOperation shareOperation = args.ShareOperation;
if (shareOperation.Data.Contains(StandardDataFormats.Text)) {
string text = await shareOperation.Data.GetTextAsync();
// To output the text from this example, you need a TextBlock control
// with a name of "sharedContent".
sharedContent.Text = "Text: " + text;
}
Mari kita lihat contoh sederhana dengan membuat proyek UWP baru, yang akan membagikan tautan web.
Diberikan di bawah ini adalah kode XAML di mana tombol dibuat dengan beberapa properti.
<Page
x:Class = "UWPSharingDemo.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local = "using:UWPSharingDemo"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable = "d">
<Grid Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel Orientation = "Vertical">
<TextBlock Text = "Share Web Link" Style = "{StaticResource
HeaderTextBlockStyle}" Margin = "30"></TextBlock>
<Button Content = "Invoke share contract" Margin = "10"
Name = "InvokeShareContractButton" Click = "InvokeShareContractButton_Click"
></Button>
</StackPanel>
</Grid>
</Page>
Kode C # di mana acara klik-tombol diimplementasikan dan kode berbagi URI diberikan di bawah ini.
using System;
using Windows.ApplicationModel.DataTransfer;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
// The Blank Page item template is documented at
http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
namespace UWPSharingDemo {
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page {
DataTransferManager dataTransferManager;
public MainPage() {
this.InitializeComponent();
dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += dataTransferManager_DataRequested;
}
void dataTransferManager_DataRequested(DataTransferManager sender,
DataRequestedEventArgs args) {
Uri sharedWebLink = new Uri("https://msdn.microsoft.com");
if (sharedWebLink != null) {
DataPackage dataPackage = args.Request.Data;
dataPackage.Properties.Title = "Sharing MSDN link";
dataPackage.Properties.Description = "The Microsoft Developer Network (MSDN)
is designed to help developers write applications using Microsoft
products and technologies.";
dataPackage.SetWebLink(sharedWebLink);
}
}
private void InvokeShareContractButton_Click(object sender, RoutedEventArgs e) {
DataTransferManager.ShowShareUI();
}
}
}
Ketika kode di atas dikompilasi dan dijalankan, Anda akan melihat halaman berikut di emulator.
Ketika tombol diklik, itu akan memberikan opsi untuk berbagi di aplikasi mana.
Klik pesan dan jendela berikut akan ditampilkan dari mana Anda dapat mengirim tautan ke siapa pun.