我有两个通知中心客户端(nodejs和C#),两者都用于将消息推送到集线器。
Node客户端发送完全正常,但C#客户端完成时发送了 no 消息。
以下是每个客户端使用的代码段。
C#
NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString("<Connection String>", "<Hub Name>");
var notice = @"{'aps':{'alert':'Notification Hub test notification'}}";
var result = await hub.SendAppleNativeNotificationAsync(notice, "<tag>");
Console.WriteLine(result.State);
的NodeJS
var azure = require('azure');
var notificationHubService = azure.createNotificationHubService('<Hub Name>','<Connection String>')
var notice = "{'aps':{'alert':'Notification Hub test notification'}}"
notificationHubService.apns.send("<tag>", notice, function(error, res){
console.log(res);
});
发送Android通知时,两者都可以正常工作,而直接从Azure门户测试功能发送的邮件也可以。
非常感谢任何协助。
答案 0 :(得分:0)
邓肯,
我认为问题是因为您使用单引号时有效负载格式不正确。请尝试以下方法:
var notice = "{\"aps\":{\"alert\":\"Notification Hub test notification\"}}";
答案 1 :(得分:0)
您可以尝试使用EnableTestSend
功能,并查看NotificationOutcome
属性以获取详细的错误消息。这将向10台设备发送测试发送消息。
bool enableTestSend = true;
NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(connString, hubName, enableTestSend);
var outcome = await hub.SendWindowsNativeNotificationAsync(toast);
Console.WriteLine(outcome.State);
foreach (RegistrationResult result in outcome.Results)
{
Console.WriteLine(result.ApplicationPlatform + "\n" + result.RegistrationId + "\n" + result.Outcome);
}
答案 2 :(得分:0)
TLDR - 不允许A& operator=( const A& other ) {
if (std::addressof(other) != this) {
A(other).swap(*this); // Copy constructor may throw
}
return *this;
}
A& operator=( A&& other ) noexcept { // note no const here
// we don't check self assignment because
// an object binds to an rvalue reference it is one of two things:
// - A temporary.
// - An object the caller wants you to believe is a temporary.
swap(other);
return *this;
}
(单引号)!有效载荷必须包含''
密钥
不是一个非常激动人心的解决方案,但......
alert
密钥存在,它也会被排队但不会由APNS提供答案 3 :(得分:0)
正如我的同事们已经提到的那样,你需要在C#中使用双引号作为第一步。
其次,您还需要转义json字符: 您的有效负载应如下所示:
var notice = "{{\"aps\":{{\"alert\":\"Notification Hub test notification\"}}}}";
基本上你通过添加额外的{{}}来逃避json括号{}。
这将向SendAppleNativeNotificationAsync()方法发送有效的json有效负载。现在发送的有效负载如下所示:
{&#34; aps&#34;:{&#34; alert&#34;:&#34; Notification Hub测试通知&#34;}}(这是iOS上的正确通知格式)
以下是Apple Developer网页上的valid json payloads for iOS。
您可以使用&#39;测试发送&#39;始终测试您发送的json是否是有效的通知有效内容。您正在使用的Azure通知中心中的功能。