我正在为应用程序创建Web API后端.该应用程序目前仅针对WP8进行规划,但我们还计划在以后推出其他平台的版本.
我们将推送通知基于Azure通知中心.该应用程序不会直接注册,但会调用Web API方法,该方法将为应用程序进行注册.
有两件事我无法绕过头脑:
我找不到有关向个别WP8用户发送通知的任何文档.我不想播出; 我只想向一个用户发送一个通知.这个用例是否受支持?如何使用Microsoft.ServiceBus.Notifications
API 完成此操作?
我发现了这个:http://www.windowsazure.com/en-us/documentation/articles/notification-hubs-aspnet-notify-users/ - 在通知方面,它实现了我需要的许多功能.该示例仅包含iOS和Windows应用商店应用.这是因为WP8不支持这个用例吗?我不明白为什么,但我对WP8有点新意.
最近,我们的Azure通知中心变成了一个非常神秘的实体.当Apple设备注册时,我们可以在Service Bus Explorer中看到它们,一旦我们尝试发送任何通知(来自SBE或Azure门户),我们就会收到"通知成功"消息,但设备上没有任何内容.刷新注册列表揭示了注册被删除的事实.
我们没有在代码中的任何地方删除它们,并且TTL尚未过期.
有什么建议?
我已经创建了一个带有Cordova的示例App和一个与Azure Notification Hubs对话的Mvc5应用程序.注册由后端处理,因为标签必须是安全的.
我们使用了从后端注册的三种不同的模板,用于iOS,WP8和Android平台; 后端可以$message
使用有效载荷发送推送通知sendtemplatenotificationasync
.
它工作但我们没有使用templateName
.
"您可以使用注册的TemplateName属性来识别模板".
一旦我使用templateName成功创建了一个注册,我该怎么办呢?
我期望找到一个API发送方法,除了标签或标签表达外,还能指定一个特定的templateName
; 我还没有找到这样的东西.
什么是含义和一般用例templateName
?
大纲
我正在尝试为我的应用游戏实施WNS.我目前在创建具有以下功能的新用户时发送通知,该功能有效:
public async void SendNotificationToTag(string tag, string content)
{
var wnsToast = "<toast><visual><binding template=\"ToastText01\">"
+ "<text id=\"1\">Breaking " +content + "An WNS News!"
+ "</text></binding></visual></toast>";
WindowsPushMessage wnsMessage = new WindowsPushMessage();
wnsMessage.XmlPayload = wnsToast;
await Services.Push.HubClient.SendWindowsNativeNotificationAsync(wnsToast, tag);
Services.Log.Info("WNS TEST - SendWindowsNativeNotificationAsync - done");
}
Run Code Online (Sandbox Code Playgroud)
我得到了每个用户名的通知,即个人通知.然后我更新用户监听的标签,查看集线器数据库,这似乎也有效:
使用此检查从集线器中提取标签
foreach (Microsoft.ServiceBus.Notifications.RegistrationDescription t in a)
{ …
Run Code Online (Sandbox Code Playgroud) 我在Azure门户中创建了一个服务总线/通知中心.
现在我正在尝试使用基于此doc的Postman的Azure REST API :https: //msdn.microsoft.com/en-us/library/azure/dn223265.aspx
这是我的Postman配置:
这是以下网址的POST方法(创建注册) https://mysite.servicebus.windows.net/mysite-notif/registrations/?api-version=2015-01 (出于隐私原因,我在该网址中替换为mysite)
在标题中,我输入了2个条目:
Content-Type application/atom + xml; type = entry; charset = utf-8
授权 Endpoint = sb:// [mysite] .servicebus.windows.net /; SharedAccessKeyName = DefaultFullSharedAccessSignature; SharedAccessKey = [mykey](这是我从Azure门户复制的连接信息)
在Body中,我选择了raw-XML(txt/xml)并粘贴:
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
<content type="application/xml">
<WindowsRegistrationDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect">
<Tags>myTag, myOtherTag</Tags>
<ChannelUri>{ChannelUri}</ChannelUri>
</WindowsRegistrationDescription>
</content>
</entry>
Run Code Online (Sandbox Code Playgroud)
(这是Windows Notification Service示例的本机注册)
当我从邮递员中发送此电话时,我收到401错误:
<Error>
<Code>401</Code>
<Detail>MalformedToken: The credentials contained in …
Run Code Online (Sandbox Code Playgroud) 我们被微软放弃Silverlight并专注于UWP而陷入困境.最终我们不得不开发两个双重关注的应用程序(UWP和Silverlight),这给我们带来了两个无法捆绑/打包在一起的应用程序.因此,我们决定将这些应用作为配套应用.
这两个应用程序都使用身份验证,目前它使用Microsoft身份验证.用于身份验证的服务属于该类型Azure App Service - Mobile
.除身份验证之外的服务还提供通知集线器,blob存储和SQL存储的接口.
因此,问题是是否可以拥有一个App Service - Mobile
(不是移动服务),并使用相同的服务验证两个不同的应用程序?此外,可以使用相同的通知中心向不同的应用发送通知吗?
或者我们需要为每个应用程序创建两个不同的服务,以便于使用身份验证和推送消息.然后我们可以将同一个数据库链接到两个App Service - Mobile
?但这会使通知中心的问题没有相同的注册?
因此,似乎在整个地方都有文档的精神,docs.microsoft再次取得了成功.
考虑发送推送通知,我遇到了这两个页面:
请注意,从任一页面到另一页面都没有引用.
所以我尝试搜索谷歌,对这个问题的标题进行类似的搜索,只发现上述两页以外的内容.
这让我想到了这个问题:App Center Push和Azure Notification Hub之间的关系(和/或区别)是什么?
push-notification azure-notificationhub uwp visual-studio-app-center
我们正在使用 Azure 函数通过 Azure NotificationHubClient 发送推送通知。这个函数在实时环境的高峰时间被调用很多,因此我们从 NotificationHubClient.SendNotificationAsync() 方法中抛出了很多 SocketExceptions。
异常详情:
Microsoft.Azure.NotificationHubs.Messaging.MessagingException: Unexpected exception encountered TimeStamp:2020-03-27T04:14:35.4655705Z ---> System.Net.Http.HttpRequestException: Cannot assign requested address ---> System.Net.Sockets.SocketException: Cannot assign requested address
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask`1 creationTask)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) …
Run Code Online (Sandbox Code Playgroud) 我已经成功实现了 Azure Function,它向 Android、iOS 和 UWP 的 NotificationHub 发送推送通知。在测试过程中,我发现当 Android 设备处于 Doze 模式时,锁定屏幕上不会发送推送通知。只有在我解锁手机时才会交付。
我发现了这个 stackoverflow 帖子,它帮助我使用方法SendFcmNativeNotificationAsync修复它。我使用了这个代码:
string payload = @"{
""data"":{
""notificationtype"":""sap"",
""title"":""value2"",
},
""priority"":""high""
}";
await hub.SendFcmNativeNotificationAsync(payload);
Run Code Online (Sandbox Code Playgroud)
然而,我使用SendNotificationAsync方法的实现适用于所有 3 个平台,但不适用于打盹模式。这是我发送通知的代码:
Dictionary<string, string> templateParameters = new Dictionary<string, string>();
templateParameters["alert"] = "Test";
templateParameters["title"] = "Whosap";
var notification = new TemplateNotification(templateParameters);
await hub.SendNotificationAsync(notification);
Run Code Online (Sandbox Code Playgroud)
我试图设置通知标题:
var headers = new Dictionary<string, string> { { "android", @"{""priority"": ""high""}" } };
notification.Headers = headers;
Run Code Online (Sandbox Code Playgroud)
但这没有用。有人知道如何在 TemplateNotification 对象中设置优先级并使用 SendNotificationAsync 方法发送它吗?
这就是我强制/取消强制设备进入打盹模式的方式: …
我正在创建一个 Xamarin 项目来测试 Azure 通知中心,但在执行本文中的步骤时遇到问题
在“创建 Firebase 项目并启用 Firebase Cloud Messaging ” 部分下,第 6 步已过时,因为 Google 似乎已更改其模型以获取服务器密钥,或者服务器密钥不适用于 FCM。
任何人都可以阐明如何获取Azure 通知中心的 Api 密钥吗?
azure firebase xamarin azure-notificationhub firebase-cloud-messaging