Menerima data

Artikel ini menjelaskan cara menerima konten di aplikasi Platform Windows Universal (UWP) yang dibagikan dari aplikasi lain dengan menggunakan Kontrak berbagi. Kontrak Berbagi ini memungkinkan aplikasi Anda disajikan sebagai opsi saat pengguna memanggil Berbagi.

Mendeklarasikan aplikasi Anda sebagai target berbagi

Sistem menampilkan daftar kemungkinan aplikasi target saat pengguna memanggil Berbagi. Agar muncul dalam daftar, aplikasi Anda perlu menyatakan bahwa aplikasi mendukung kontrak Berbagi. Ini memungkinkan sistem mengetahui bahwa aplikasi Anda tersedia untuk menerima konten.

  1. Buka file manifes. Ini harus disebut sesuatu seperti package.appxmanifest.
  2. Buka tab Deklarasi .
  3. Pilih Bagikan Target dari daftar Deklarasi yang Tersedia , lalu pilih Tambahkan.

Pilih jenis dan format file

Selanjutnya, putuskan jenis file dan format data apa yang Anda dukung. API Berbagi mendukung beberapa format standar, seperti Teks, HTML, dan Bitmap. Anda juga dapat menentukan jenis file kustom dan format data. Jika Anda melakukannya, ingatlah bahwa aplikasi sumber harus mengetahui jenis dan format tersebut; jika tidak, aplikasi tersebut tidak dapat menggunakan format untuk berbagi data.

Hanya daftar untuk format yang dapat ditangani aplikasi Anda. Hanya aplikasi target yang mendukung data yang dibagikan yang muncul saat pengguna memanggil Berbagi.

Untuk mengatur jenis file:

  1. Buka file manifes. Ini harus disebut sesuatu seperti package.appxmanifest.
  2. Di bagian Jenis File yang Didukung dari halaman Deklarasi , pilih Tambahkan Baru.
  3. Ketik ekstensi nama file yang ingin Anda dukung, misalnya, ".docx." Anda perlu menyertakan periode. Jika Anda ingin mendukung semua jenis file, pilih kotak centang SupportsAnyFileType .

Untuk mengatur format data:

  1. Buka file manifes.
  2. Buka bagian Format Data dari halaman Deklarasi , lalu pilih Tambahkan Baru.
  3. Ketik nama format data yang Anda dukung, misalnya, "Teks."

Menangani aktivasi berbagi

Saat pengguna memilih aplikasi Anda (biasanya dengan memilihnya dari daftar aplikasi target yang tersedia di UI berbagi), peristiwa OnShareTargetActivated dinaikkan. Aplikasi Anda perlu menangani peristiwa ini untuk memproses data yang ingin dibagikan pengguna.

protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
    // Code to handle activation goes here. 
} 

Data yang ingin dibagikan pengguna terkandung dalam objek ShareOperation . Anda dapat menggunakan objek ini untuk memeriksa format data yang dikandungnya.

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;
} 

Status berbagi laporan

Dalam beberapa kasus, mungkin perlu waktu bagi aplikasi Anda untuk memproses data yang ingin dibagikannya. Contohnya termasuk pengguna yang berbagi koleksi file atau gambar. Item ini lebih besar dari string teks sederhana, sehingga membutuhkan waktu lebih lama untuk diproses.

shareOperation.ReportStarted(); 

Setelah memanggil ReportStarted, jangan berharap ada lagi interaksi pengguna dengan aplikasi Anda. Akibatnya, Anda tidak boleh memanggilnya kecuali aplikasi Anda berada di titik di mana aplikasi dapat dimatikan oleh pengguna.

Dengan berbagi yang diperluas, ada kemungkinan bahwa pengguna mungkin menutup aplikasi sumber sebelum aplikasi Anda memiliki semua data dari objek DataPackage. Akibatnya, kami sarankan Anda memberi tahu sistem ketika aplikasi Anda telah memperoleh data yang dibutuhkan. Dengan cara ini, sistem dapat menangguhkan atau mengakhiri aplikasi sumber seperlunya.

shareOperation.ReportSubmittedBackgroundTask(); 

Jika terjadi kesalahan, hubungi ReportError untuk mengirim pesan kesalahan ke sistem. Pengguna akan melihat pesan saat mereka memeriksa status berbagi. Pada saat itu, aplikasi Anda dimatikan dan berbagi berakhir. Pengguna harus memulai lagi untuk membagikan konten ke aplikasi Anda. Bergantung pada skenario Anda, Anda dapat memutuskan bahwa kesalahan tertentu tidak cukup serius untuk mengakhiri operasi berbagi. Dalam hal ini, Anda dapat memilih untuk tidak memanggil ReportError dan melanjutkan berbagi.

shareOperation.ReportError("Could not reach the server! Try again later."); 

Terakhir, ketika aplikasi Anda telah berhasil memproses konten bersama, Anda harus memanggil ReportCompleted untuk memberi tahu sistem.

shareOperation.ReportCompleted();

Ketika Anda menggunakan metode ini, Anda biasanya memanggilnya dalam urutan yang baru saja dijelaskan, dan Anda tidak memanggilnya lebih dari sekali. Namun, ada kalanya aplikasi target dapat memanggil ReportDataRetrieved sebelum ReportStarted. Misalnya, aplikasi mungkin mengambil data sebagai bagian dari tugas di penangan aktivasi, tetapi tidak memanggil ReportStarted hingga pengguna memilih tombol Bagikan .

Saat pengguna memilih aplikasi Anda untuk menerima konten, kami sarankan Anda membuat QuickLink. QuickLink seperti pintasan yang memudahkan pengguna untuk berbagi informasi dengan aplikasi Anda. Misalnya, Anda dapat membuat QuickLink yang membuka pesan email baru yang telah dikonfigurasi sebelumnya dengan alamat email teman.

QuickLink harus memiliki judul, ikon, dan Id. Judul (seperti "Email Mom") dan ikon muncul saat pengguna mengetuk tombol Bagikan. Id adalah apa yang digunakan aplikasi Anda untuk mengakses informasi kustom apa pun, seperti alamat email atau kredensial masuk. Saat aplikasi Anda membuat QuickLink, aplikasi mengembalikan QuickLink ke sistem dengan memanggil ReportCompleted.

QuickLink sebenarnya tidak menyimpan data. Sebaliknya, ini berisi pengidentifikasi yang, saat dipilih, dikirim ke aplikasi Anda. Aplikasi Anda bertanggung jawab untuk menyimpan Id QuickLink dan data pengguna yang sesuai. Saat pengguna mengetuk QuickLink, Anda bisa mendapatkan Id-nya melalui properti QuickLinkId .

async void ReportCompleted(ShareOperation shareOperation, string quickLinkId, string quickLinkTitle)
{
    QuickLink quickLinkInfo = new QuickLink
    {
        Id = quickLinkId,
        Title = quickLinkTitle,

        // For quicklinks, the supported FileTypes and DataFormats are set 
        // independently from the manifest
        SupportedFileTypes = { "*" },
        SupportedDataFormats = { StandardDataFormats.Text, StandardDataFormats.Uri, 
                StandardDataFormats.Bitmap, StandardDataFormats.StorageItems }
    };

    StorageFile iconFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.CreateFileAsync(
            "assets\\user.png", CreationCollisionOption.OpenIfExists);
    quickLinkInfo.Thumbnail = RandomAccessStreamReference.CreateFromFile(iconFile);
    shareOperation.ReportCompleted(quickLinkInfo);
}

Lihat juga