Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dengan menggunakan wizard di Visual Studio, Anda dapat membuat pemberitahuan push dari layanan seluler yang dibuat dengan Azure Mobile Services. Wizard Visual Studio menghasilkan kode untuk membantu Anda memulai. Topik ini menjelaskan bagaimana wizard memodifikasi proyek Anda, apa yang dilakukan kode yang dihasilkan, cara menggunakan kode ini, dan apa yang dapat Anda lakukan selanjutnya untuk mendapatkan hasil maksimal dari pemberitahuan push. Lihat Gambaran umum Windows Push Notification Services (WNS).
Cara wizard memodifikasi proyek Anda
Wizard pemberitahuan push memodifikasi proyek Anda dengan cara berikut:
- Menambahkan referensi ke Klien Terkelola Layanan Seluler (MobileServicesManagedClient.dll). Tidak berlaku untuk proyek JavaScript.
- Menambahkan file dalam subfolder di bawah layanan, dan memberi nama file push.register.cs, push.register.vb, push.register.cpp, atau push.register.js.
- Membuat tabel saluran di server database untuk layanan seluler. Tabel berisi informasi yang diperlukan untuk mengirim pemberitahuan push ke instans aplikasi.
- Membuat skrip untuk empat fungsi: menghapus, menyisipkan, membaca, dan memperbarui.
- Membuat skrip dengan API kustom, notifyallusers.js, yang mengirim pemberitahuan push ke semua klien.
- Menambahkan deklarasi ke file App.xaml.cs, App.xaml.vb, atau App.xaml.cpp Anda, atau menambahkan deklarasi ke file baru, service.js, untuk proyek JavaScript. Deklarasi mendeklarasikan objek MobileServiceClient, yang berisi informasi yang diperlukan untuk terhubung ke layanan seluler. Anda dapat mengakses objek MobileServiceClient ini, yang diberi nama Klien MyServiceName, dari halaman mana pun di aplikasi Anda dengan menggunakan nama Aplikasi.Klien MyServiceName.
File services.js berisi kode berikut:
var <mobile-service-name>Client = new Microsoft.WindowsAzure.MobileServices.MobileServiceClient(
"https://<mobile-service-name>.azure-mobile.net/",
"<your client secret>");
Pendaftaran untuk pemberitahuan push
Di push.register.*, metode UploadChannel mendaftarkan perangkat untuk menerima pemberitahuan push. Store melacak instans aplikasi Anda yang diinstal dan menyediakan saluran pemberitahuan push. Lihat PushNotificationChannelManager.
Kode klien mirip untuk backend JavaScript dan backend .NET. Secara default, saat Anda menambahkan pemberitahuan push untuk layanan backend JavaScript, contoh panggilan ke notifyAllUsers custom API dimasukkan ke dalam metode UploadChannel.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.MobileServices;
using Newtonsoft.Json.Linq;
namespace App2
{
internal class mymobileservice1234Push
{
public async static void UploadChannel()
{
var channel = await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
try
{
await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri);
await App.mymobileservice1234Client.InvokeApiAsync("notifyAllUsers");
}
catch (Exception exception)
{
HandleRegisterException(exception);
}
}
private static void HandleRegisterException(Exception exception)
{
}
}
}
Imports Microsoft.WindowsAzure.MobileServices
Imports Newtonsoft.Json.Linq
Friend Class mymobileservice1234Push
Public Shared Async Sub UploadChannel()
Dim channel = Await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync()
Try
Await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri)
Await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri, New String() {"tag1", "tag2"})
Await App.mymobileservice1234Client.InvokeApiAsync("notifyAllUsers")
Catch exception As Exception
HandleRegisterException(exception)
End Try
End Sub
Private Shared Sub HandleRegisterException(exception As Exception)
End Sub
End Class
#include "pch.h"
#include "services\mobile services\mymobileservice1234\mymobileservice1234Push.h"
using namespace AzureMobileHelper;
using namespace web;
using namespace concurrency;
using namespace Windows::Networking::PushNotifications;
void mymobileservice1234Push::UploadChannel()
{
create_task(PushNotificationChannelManager::CreatePushNotificationChannelForApplicationAsync()).
then([] (PushNotificationChannel^ newChannel)
{
return mymobileservice1234MobileService::GetClient().get_push().register_native(newChannel->Uri->Data());
}).then([]()
{
return mymobileservice1234MobileService::GetClient().invoke_api(L"notifyAllUsers");
}).then([](task<json::value> result)
{
try
{
result.wait();
}
catch(...)
{
HandleExceptionsComingFromTheServer();
}
});
}
void mymobileservice1234Push::HandleExceptionsComingFromTheServer()
{
}
(function () {
"use strict";
var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
app.addEventListener("activated", function (args) {
if (args.detail.kind == activation.ActivationKind.launch) {
Windows.Networking.PushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync()
.then(function (channel) {
mymobileserviceclient1234Client.push.registerNative(channel.Uri, new Array("tag1", "tag2"))
return mymobileservice1234Client.push.registerNative(channel.uri);
})
.done(function (registration) {
return mymobileservice1234Client.invokeApi("notifyAllUsers");
}, function (error) {
// Error
});
}
});
})();
Tag pemberitahuan push menyediakan cara untuk membatasi pemberitahuan ke subset klien. Anda dapat menggunakan metode untuk metode registerNative (atau RegisterNativeAsync) untuk mendaftar untuk semua pemberitahuan push tanpa menentukan tag, atau Anda dapat mendaftar dengan tag dengan memberikan argumen kedua, array tag. Jika Anda mendaftar dengan satu atau beberapa tag, Anda hanya menerima pemberitahuan yang cocok dengan tag tersebut.
Skrip sisi server (hanya backend JavaScript)
Untuk layanan seluler yang menggunakan backend JavaScript, skrip sisi server berjalan saat operasi hapus, sisipkan, baca, atau perbarui terjadi. Skrip tidak menerapkan operasi ini, tetapi berjalan ketika panggilan dari klien ke Windows Mobile REST API memicu peristiwa ini. Skrip kemudian meneruskan kontrol ke operasi itu sendiri dengan memanggil request.execute atau request.respond untuk mengeluarkan respons terhadap konteks panggilan. Lihat Referensi REST API Azure Mobile Services.
Berbagai fungsi tersedia dalam skrip sisi server. Lihat Mendaftarkan operasi tabel di Azure Mobile Services. Untuk referensi ke semua fungsi yang tersedia, lihat Referensi skrip server Layanan Seluler.
Kode API kustom berikut di Notifyallusers.js juga dibuat:
exports.post = function(request, response) {
response.send(statusCodes.OK,{ message : 'Hello World!' })
// The following call is for illustration purpose only
// The call and function body should be moved to a script in your app
// where you want to send a notification
sendNotifications(request);
};
// The following code should be moved to appropriate script in your app where notification is sent
function sendNotifications(request) {
var payload = '<?xml version="1.0" encoding="utf-8"?><toast><visual><binding template="ToastText01">' +
'<text id="1">Sample Toast</text></binding></visual></toast>';
var push = request.service.push;
push.wns.send(null,
payload,
'wns/toast', {
success: function (pushResponse) {
console.log("Sent push:", pushResponse);
}
});
}
Fungsi sendNotifications mengirimkan satu pemberitahuan sebagai pemberitahuan toast. Anda juga dapat menggunakan jenis pemberitahuan push lainnya.
Tips Untuk informasi tentang cara mendapatkan bantuan saat mengedit skrip, lihat Mengaktifkan IntelliSense untuk JavaScript sisi server.
Jenis pemberitahuan push
Windows mendukung pemberitahuan yang bukan pemberitahuan push. Untuk informasi umum tentang pemberitahuan, lihat Memilih metode pengiriman pemberitahuan.
Pemberitahuan toast mudah digunakan, dan Anda dapat meninjau contoh dalam kode Insert.js pada tabel saluran yang dihasilkan untuk Anda. Jika Anda berencana menggunakan petak peta atau pemberitahuan lencana, Anda harus membuat templat XML untuk petak peta dan lencana, dan Anda harus menentukan pengodean informasi yang dikemas dalam templat. Lihat Bekerja dengan petak peta, lencana, dan pemberitahuan toast.
Karena Windows merespons pemberitahuan push, Windows dapat menangani sebagian besar pemberitahuan ini saat aplikasi tidak berjalan. Misalnya, pemberitahuan push dapat memberi tahu pengguna saat pesan email baru tersedia bahkan saat aplikasi email lokal tidak berjalan. Windows menangani pemberitahuan toast dengan menampilkan pesan, seperti baris pertama pesan teks. Windows menangani petak peta atau pemberitahuan lencana dengan memperbarui petak peta langsung aplikasi untuk mencerminkan jumlah pesan email baru. Dengan cara ini, Anda dapat meminta pengguna aplikasi untuk memeriksanya untuk informasi baru. Aplikasi Anda dapat menerima pemberitahuan mentah saat dijalankan, dan Anda dapat menggunakannya untuk mengirim data ke aplikasi Anda. Jika aplikasi tidak berjalan, Anda dapat menyiapkan tugas latar belakang untuk memantau pemberitahuan push.
Anda harus menggunakan pemberitahuan push sesuai dengan panduan untuk aplikasi Windows, karena pemberitahuan tersebut menggunakan sumber daya pengguna dan dapat mengganggu jika digunakan secara berlebihan. Lihat Panduan dan daftar periksa untuk pemberitahuan push.
Jika Memperbarui petak peta langsung dengan pemberitahuan push, Anda juga harus mengikuti panduan dalam Panduan dan daftar periksa untuk petak peta dan lencana.
Langkah berikutnya
Menggunakan Windows Push Notification Services (WNS)
Anda dapat memanggil Windows Push Notification Services (WNS) secara langsung jika Layanan Seluler tidak memberikan fleksibilitas yang cukup, jika Anda ingin menulis kode server Anda di C# atau Visual Basic, atau jika Anda sudah memiliki layanan cloud dan Anda ingin mengirim pemberitahuan push darinya. Dengan memanggil WNS secara langsung, Anda dapat mengirim pemberitahuan push dari layanan awan Anda sendiri, seperti peran pekerja yang memantau data dari database atau layanan web lainnya. Layanan cloud Anda harus mengautentikasi dengan WNS untuk mengirim pemberitahuan push ke aplikasi Anda. Lihat Cara mengautentikasi dengan Windows Push Notification Service (JavaScript) atau (C#/C++/VB).
Anda juga dapat mengirim pemberitahuan push dengan menjalankan tugas terjadwal di layanan seluler Anda. Lihat Menjadwalkan pekerjaan berulang di Layanan Seluler.
Peringatan Setelah Anda menjalankan wizard pemberitahuan push sekali, jangan jalankan wizard untuk kedua kalinya untuk menambahkan kode pendaftaran untuk layanan seluler lain. Menjalankan wizard lebih dari sekali per proyek menghasilkan kode yang menghasilkan panggilan tumpang tindih ke metode CreatePushNotificationChannelForApplicationAsync , yang mengarah ke pengecualian runtime. Jika Anda ingin mendaftar untuk pemberitahuan push untuk lebih dari satu layanan seluler, jalankan wizard sekali lalu tulis ulang kode pendaftaran untuk memastikan bahwa panggilan ke CreatePushNotificationChannelForApplicationAsync tidak berjalan pada saat yang sama. Misalnya, Anda dapat menyelesaikan ini dengan memindahkan kode yang dihasilkan wizard di push.register.* (termasuk panggilan ke CreatePushNotificationChannelForApplicationAsync) di luar peristiwa OnLaunched, tetapi spesifikasinya akan bergantung pada arsitektur aplikasi Anda.
Topik terkait
- Gambaran umum Windows Push Notification Services (WNS)
- Gambaran umum pemberitahuan mentah
- Menyambungkan ke Windows Azure Mobile Services (JavaScript)
- Menyambungkan ke Windows Azure Mobile Services (C#/C++/VB)
- Mulai cepat: Menambahkan pemberitahuan push untuk layanan seluler (JavaScript)
Windows developer