微软软件推送服务器,向 UWP 应用添加推送通知 - Azure Mobile Apps | Microsoft Docs
向 Windows 应用添加推送通知
06/25/2019
本文内容
概述
本教程介绍如何向 Windows 快速入门项目添加推送通知,以便每次插入一条记录时,向设备发送一条推送通知。
如果不使用下载的快速入门服务器项目,则需要推送通知扩展包。 有关详细信息,请参阅使用用于 Azure 移动应用的 .NET 后端服务器 SDK。
配置通知中心
Azure 应用服务的移动应用功能使用 Azure 通知中心发送推送内容,因此用户需为移动应用配置通知中心。
在 Azure 门户中,转到“应用服务” ,并选择应用后端。 在“设置” 下,选择“推送” 。
若要将通知中心资源添加到应用中,请选择“连接” 。 可以创建一个中心,也可以连接到一个现有的中心。
现在已将通知中心连接到移动应用后端项目。 稍后需对此通知中心进行配置,以便连接到将内容推送到设备的平台通知系统 (PNS)。
为推送通知注册应用程序
需要将应用提交到 Microsoft Store,然后将服务器项目配置为与 Windows 推送通知服务 (WNS) 集成,以便发送推送。
在 Visual Studio 解决方案资源管理器中,右键单击 UWP 应用项目,单击“应用商店” > “将应用与应用商店关联...” 。
在向导中,单击“下一步” ,使用 Microsoft 帐户登录,在“保留新应用名称” 中键入应用的名称,并单击“保留” 。
成功创建应用注册后,选择新应用名称,再依次单击“下一步” 和“关联” 。 这会将所需的 Microsoft Store 注册信息添加到应用程序清单中。
导航到应用程序注册门户,并使用 Microsoft 帐户登录。 单击上一步中关联的 Windows 应用商店应用。
在注册页中,记下“应用程序机密” 和“包 SID” 下的值,后面将使用这些值配置移动应用后端。
重要
客户端密钥和程序包 SID 是重要的安全凭据。 请勿将这些值告知任何人或随应用程序分发它们。 将“应用程序 ID” 与机密配合使用来配置 Microsoft 帐户身份验证。
App Center 还提供了有关为推送通知配置 UWP 应用的说明。
配置后端以发送推送通知
在 Azure 门户中,选择“浏览全部” > “应用程序服务” 。 然后选择“移动应用”后端。 在“设置”下 ,选择“应用服务推送” 。 然后选择通知中心名称。
转到“Windows (WNS)” 。 输入安全密钥(客户端密码)和从 Live 服务站点获取的包 SID。 接下来,选择“保存” 。
后端现已配置为使用 WNS 发送推送通知。
更新服务器以发送推送通知
使用下面与后端项目类型 —.NET 后端或 Node.js 后端匹配的过程。
.NET 后端项目
在 Visual Studio 中,右键单击服务器项目并单击“管理 NuGet 包” ,搜索 Microsoft.Azure.NotificationHubs,并单击“安装” 。 这会安装通知中心客户端库。
展开“控制器” ,打开 TodoItemController.cs,并添加以下 using 语句:
using System.Collections.Generic;
using Microsoft.Azure.NotificationHubs;
using Microsoft.Azure.Mobile.Server.Config;
在 PostTodoItem 方法中,在调用 InsertAsync 后添加如下代码:
// Get the settings for the server project.
HttpConfiguration config = this.Configuration;
MobileAppSettingsDictionary settings =
this.Configuration.GetMobileAppSettingsProvider().GetMobileAppSettings();
// Get the Notification Hubs credentials for the Mobile App.
string notificationHubName = settings.NotificationHubName;
string notificationHubConnection = settings
.Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;
// Create the notification hub client.
NotificationHubClient hub = NotificationHubClient
.CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
// Define a WNS payload
var windowsToastPayload = @""
+ item.Text + @"";
try
{
// Send the push notification.
var result = await hub.SendWindowsNativeNotificationAsync(windowsToastPayload);
// Write the success result to the logs.
config.Services.GetTraceWriter().Info(result.State.ToString());
}
catch (System.Exception ex)
{
// Write the failure result to the logs.
config.Services.GetTraceWriter()
.Error(ex.Message, null, "Push.SendAsync Error");
}
此代码指示通知中心在插入新项后,发送一条推送通知。
重新发布服务器项目。
Node.js 后端项目
设置后端项目。
将 todoitem.js 文件中的现有代码替换为以下内容:
var azureMobileApps = require('azure-mobile-apps'),
promises = require('azure-mobile-apps/src/utilities/promises'),
logger = require('azure-mobile-apps/src/logger');
var table = azureMobileApps.table();
table.insert(function (context) {
// For more information about the Notification Hubs JavaScript SDK,
// see https://aka.ms/nodejshubs
logger.info('Running TodoItem.insert');
// Define the WNS payload that contains the new item Text.
var payload = ""
+ context.item.text + "";
// Execute the insert. The insert returns the results as a Promise,
// Do the push as a post-execute action within the promise flow.
return context.execute()
.then(function (results) {
// Only do the push if configured
if (context.push) {
// Send a WNS native toast notification.
context.push.wns.sendToast(null, payload, function (error) {
if (error) {
logger.error('Error while sending push notification: ', error);
} else {
logger.info('Push notification sent successfully!');
}
});
}
// Don't forget to return the results from the context.execute()
return results;
})
.catch(function (error) {
logger.error('Error while running context.execute: ', error);
});
});
module.exports = table;
插入新的待办事项时,会发送一条包含 item.text 的 WNS toast 通知。
编辑本地计算机上的文件时,请重新发布服务器项目。
向应用添加推送通知
下一步,应用必须在启动时注册推送通知。 已启用身份验证时,请确保用户先登录,再尝试注册推送通知。
打开 App.xaml.cs 项目文件并添加以下 using 语句:
using System.Threading.Tasks;
using Windows.Networking.PushNotifications;
在同一文件中,将以下 InitNotificationsAsync 方法定义添加到 App 类中:
private async Task InitNotificationsAsync()
{
// Get a channel URI from WNS.
var channel = await PushNotificationChannelManager
.CreatePushNotificationChannelForApplicationAsync();
// Register the channel URI with Notification Hubs.
await App.MobileService.GetPush().RegisterAsync(channel.Uri);
}
此代码从 WNS 检索应用的 ChannelURI,然后将该 ChannelURI 注册到应用服务移动应用。
在 App.xaml.cs 中 OnLaunched 事件处理程序的顶部,为方法定义添加 async 修饰符,并添加对新 InitNotificationsAsync 方法的以下调用,如以下示例所示:
protected async override void OnLaunched(LaunchActivatedEventArgs e)
{
await InitNotificationsAsync();
// ...
}
这保证每次启动应用程序时都注册短期的 ChannelURI。
重新生成 UWP 应用项目。 应用现在已能够接收 toast 通知。
在应用中测试推送通知
右键单击 Windows 应用商店项目,单击“设为启动项目” ,并按 F5 键运行 Windows 应用商店应用。
该应用启动后,已注册该设备以接收推送通知。
停止 Windows 应用商店应用并对 Windows Phone 应用商店应用重复上一步操作。
此时,这两个设备会注册以接收推送通知。
重新运行 Windows 应用商店应用,在“插入 TodoItem” 中键入文本,并单击“保存” 。
请注意,完成插入后,Windows Store 和 Windows Phone 应用会从 WNS 收到一条推送通知。 即使在此应用未运行时,也在 Windows Phone 上显示此通知。
后续步骤
了解有关推送通知的详细信息:
如何使用 Azure 移动应用的托管客户端 使用模板可以灵活地发送跨平台推送和本地化推送。 了解如何注册模板。
诊断推送通知问题 有多种原因可能导致通知被丢弃或最终未到达设备。 本主题演示如何分析和确定推送通知失败的根本原因。
请考虑继续学习以下教程之一:
向应用添加身份验证 了解如何使用标识提供者对应用用户进行身份验证。
为应用启用脱机同步 了解如何使用移动应用后端向应用添加脱机支持。 借助脱机同步,最终用户即使在没有网络连接时也能够与移动应用进行交互(查看、添加或修改数据)。
微软软件推送服务器,向 UWP 应用添加推送通知 - Azure Mobile Apps | Microsoft Docs相关推荐
- 微软云服务器流量,使用 Visual Studio Mobile Center 进行真实用户度量 - Azure 流量管理器 | Microsoft Docs...
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 如何使用 Visual ...
- linux 内核配置raid,在 Linux VM 上配置软件 RAID - Azure Virtual Machines | Microsoft Docs
在 Linux 上配置软件 RAID 02/02/2017 本文内容 一种比较常见的情况是,在 Azure 中的 Linux 虚拟机上使用软件 RAID 将多个附加的数据磁盘显示为单个 RAID 设备 ...
- 配置消息推送服务器,自动化部署和消息推送
一.前言 1.思考:如何取得平衡? 代码写的太简单,可复用性较低,易读易懂: 代码写的太抽象,有一定的复用性,维护成本较高,需要专人维护,否则可能引起牵一发而动全身的问题. 如何避免过度抽象,过度简单 ...
- 基于mqtt协议的消息推送服务器,基于 MQTT 协议的推送服务
一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级& ...
- 消息推送服务器令牌,小程序-消息推送配置Token令牌错误校验失败如何解决
网上借个图 按微信要求:确认此次GET请求来自微信服务器,则原样返回echostr参数内容 都按要求来了,但怎么都不行,总是提示:Token校验失败,请检查确认 /** * 检验签名 */ publi ...
- 苹果微信推送服务器错误,接入WxPusher微信推送服务出现错误:Content type application/x...
背景 使用WxPusher微信推送服务 ,可以及时的将服务的一些运行异常信息,发送到自己的微信上,方便了解服务的运行状态(PS:这个服务是免费的). 你可以在这里看到WxPusher微信推送服务的接入 ...
- 友盟消息推送服务器demo,友盟消息推送总结
分享的文章连接 1 http://blog.csdn.net/shenjie12345678/article/details/41120637 2:http://dev.umeng.com/push ...
- wsus服务器推送指定的补丁,WSUS SelfUpdate 不发送自动更新 - Windows Server | Microsoft Docs...
WSUS SelfUpdate 服务不发送自动更新 10/20/2020 本文内容 本文提供了一种解决方案,可解决在使用 Microsoft Windows Server Update Service ...
- 微软服务器安装显卡驱动,适用于 Windows 的 Azure N 系列 NVIDIA GPU 驱动程序安装 - Azure Virtual Machines | Microsoft Docs...
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 在运行 Windows ...
最新文章
- Android开发必看知识,不看后悔
- html和xhtml和html5一些区别和笔记
- LPS25HB 气压计 资料整理
- 发现数据对象 -- 数据库开发的关键
- CentOS 5.3 安装nginx+mysql+php
- eclipse在server中tomcat server找不到的问题
- Vue+axios统一接口管理
- java string 练习_JAVA基础练习之String
- linux下mkdir头文件_Linux中mkdir函数与Windows中_mkdir函数的区别
- Markdown Cookbook by Eric
- Java关键字与保留字
- SODB、RBSP和EBSP
- 感知特性评价指标SSIM
- C语言知识点完美总结
- office2019安装D盘_office2016or2019安装在D盘的方法-可收藏备用
- vim编辑器 解决vim编辑异常
- opnet统计量介绍
- Cool Edit之扫频波的生成
- 使用webpack搭建react项目
- PPPoE拨号过程解析
热门文章
- WebBrowser(超文本浏览框)控件默认使用IE9,IE10的方法
- ISIS—BGP—VRRP 城域网典型架构图 拓扑实验
- Objective-C中对Url的参数进行编码
- post和get提交中文数据的转码问题
- mysql 时间差函数 timestampdiff datediff 简介
- 区块链 选择交易所 五个注意点
- python3 判断字符串是否包含指定字符
- linux gcc编译参数顺序问题
- UNREFERENCED_PARAMETER的作用 (unreferenced formal parameter 警告)
- 在VS2010平台上创建并使用dll