- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试通过 Azure NotificationHub REST Api 从 iOS 设备 (iPhone) 发送推送通知。我正在按照我在网上找到的 Azure 文档从 Xamarin.iOS 解决方案尝试此操作。
错误:“50002:提供商内部错误”
状态码:500
var hubUtil = new NotificationHubUtility("Endpoint=sb://company-name.servicebus.windows.net/;SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=00000000000000011111111111111122222222222222");
hubUtil.SendNotificationMessage("This is a TEST Notification!").ConfigureAwait(false);
public class NotificationHubUtility
{
public string Endpoint { get; private set; }
public string SasKeyName { get; private set; }
public string SasKeyValue { get; private set; }
public string HubName { get; private set; }
public string ApiVersion { get; private set; }
public NotificationHubUtility(string connectionString)
{
//Parse Connectionstring
string[] parts = connectionString.Split(new char[] {';'});
for (int i = 0; i < parts.Length; i++)
{
if (parts[i].StartsWith("Endpoint", StringComparison.CurrentCulture))
Endpoint = "https" + parts[i].Substring(11);
if (parts[i].StartsWith("SharedAccessKeyName", StringComparison.CurrentCulture))
SasKeyName = parts[i].Substring(20);
if (parts[i].StartsWith("SharedAccessKey", StringComparison.CurrentCulture))
SasKeyValue = parts[i].Substring(16);
}
HubName = "my-hub";
ApiVersion = "?api-version=2014-09-01";
}
public string GetSaSToken(string uri, int minUntilExpire)
{
string targetUri = Uri.EscapeDataString(uri.ToLower()).ToLower();
// Add an expiration in seconds to it.
long expiresOnDate = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
expiresOnDate += minUntilExpire * 60 * 1000;
long expires_seconds = expiresOnDate / 1000;
var toSign = targetUri + "\n" + expires_seconds;
// Generate a HMAC-SHA256 hash or the uri and expiration using your secret key.
IMacAlgorithmProvider hasher = WinRTCrypto.MacAlgorithmProvider.OpenAlgorithm(MacAlgorithm.HmacSha256);
var messageBuffer = WinRTCrypto.CryptographicBuffer.ConvertStringToBinary(toSign, Encoding.UTF8);
var keyBuffer = WinRTCrypto.CryptographicBuffer.ConvertStringToBinary(SasKeyValue, Encoding.UTF8);
var hmacKey = hasher.CreateKey(keyBuffer);
var signedMessage = WinRTCrypto.CryptographicEngine.Sign(hmacKey, messageBuffer);
string signature = Uri.EscapeDataString(WinRTCrypto.CryptographicBuffer.EncodeToBase64String(signedMessage));
var token = "SharedAccessSignature sig=" + signature + "&se=" + expires_seconds + "&skn=" + SasKeyName + "&sr=" + targetUri;
return token;
}
public async Task SendNotificationMessage(string message)
{
try
{
// basic http client (if needed)
var httpClient = new HttpClient();
httpClient.MaxResponseContentBufferSize = 1024000;
var notificationPayload = "{\"aps\":{\"alert\":\"" + message + "\"}}";
var notificationHubUrl = $"{Endpoint}{HubName}/messages/{ApiVersion}";
var authToken = GetSaSToken(notificationHubUrl, 10);
var request = new HttpRequestMessage(HttpMethod.Post, notificationHubUrl);
//request.Headers.Add("Content-Type", "application/json;charset=utf-8");
request.Headers.Add("ServiceBusNotification-Format", "apple");
request.Headers.Add("ServiceBusNotification-Apns-Expiry", DateTime.UtcNow.AddYears(1).ToString("YYYY-MM-DDThh:mmTZD"));
request.Headers.Add("Authorization", authToken);
var requestBody = new StringContent(notificationPayload, Encoding.UTF8, "application/json");
request.Content = requestBody;
var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseContentRead);
}
catch (Exception ex)
{
Console.Error.WriteLine(@"ERROR - Sending Notification {0}", ex.Message);
}
}
}
Endpoint=sb://company-name.servicebus.windows.net/;SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=00000000000000011111111111111122222222222222
我在这里错过了什么?我无法在线找到与此错误相关的很多文档。任何帮助将不胜感激。
对上面的代码进行以下 2 处更改为我解决了这个问题:
已更改
ApiVersion = "?api-version=2014-09-01";
到
ApiVersion = "?api-version=2016-07";
已更改
request.Headers.Add("ServiceBusNotification-Apns-Expiry", DateTime.UtcNow.AddYears(1).ToString("YYYY-MM-DDThh:mmTZD"));
到
request.Headers.Add("ServiceBusNotification-Apns-Expiry", DateTime.UtcNow.AddYears(1).ToString("yyyy-MM-ddTHH:mm:sszzz"));
最佳答案
Api 版本 2014-09-01 不正确。请使用 2016-07 作为 Api 版本,你应该没问题。
谢谢
索拉博
关于c# - 通过 Azure NotificationHub REST Api 从设备发送推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42259287/
我遇到了 NotificationHubs 的问题,偶尔通知无法以静默方式传递到 iOS 客户端。 我的通知中心设置为对 APNS 使用 token 身份验证(而不是旧证书身份验证)。 我将我的通知中
我正在学习通知中心和此 article有两种注册方式 来自使用 Microsoft.WindowsAzure.Messaging.NotificationHub 的设备的一个从设备注册。 第二个使用
我正在学习通知中心和此 article有两种注册方式 来自使用 Microsoft.WindowsAzure.Messaging.NotificationHub 的设备的一个从设备注册。 第二个使用
我已经设置了 Azure 通知中心,并且已完成将推送通知合并到我的 Android 应用中的所有步骤。该应用程序一直运行良好,可以正常接收推送通知。然后今天我去尝试发送推送,但失败了。因此,我从 Az
我正在尝试将失败的通知存储在db中,例如客户端无法访问互联网。这将使我能够从 backgroundService 检查是否缺少通知,然后从 backgroundService 创建它。 因此,我的 A
我正在尝试将失败的通知存储在db中,例如客户端无法访问互联网。这将使我能够从 backgroundService 检查是否缺少通知,然后从 backgroundService 创建它。 因此,我的 A
我通过 Azure 门户向移动平台发送通知。在 Windows 和 Android 平台上没有问题,但我无法向 IOS 平台发送 4 天通知,并收到此错误 最佳答案 根据您的描述,我已经测试了在Azu
我正在 Xamarin.iOS 上集成推送通知系统。我已经查看了 Azure 提供的文档:xamarin notification hubs ios push notification apns ge
有没有办法通过NotificationHub使用UWP应用发送通知?在许多教程中,他们使用 Microsoft.Azure.NotificationHubs Nuget 包通过 C# 控制台应用程序发
在成功登录后的应用程序中,我想使用标签注册到 NotificationHub,其中标签是电子邮件地址。 以下场景在 iOS 上运行良好: MessagingCenter.Subscribe(this,
我通过在 foreach 循环中连续发送许多通知,对使用 Azure 通知中心发送推送通知进行了一些延迟/性能测试。对于 100 个“SendNotification”请求,它工作正常,尽管它相对
有没有办法在企业代理后面使用带有身份验证的 azure-notificationhubs-java-backend 库? 我将在应用程序服务器(JBoss 6)下使用该库,因此我想避免经典的 Java
我通过在 foreach 循环中连续发送许多通知,对使用 Azure 通知中心发送推送通知进行了一些延迟/性能测试。对于 100 个“SendNotification”请求,它工作正常,尽管它相对
我已经使用 Azure 门户配置了一个通知中心,用于为移动应用程序实现推送通知。在导航到“访问策略”部分时,我看到了几个具有名称的策略:DefaultListenSharedAccessSignatu
我正在尝试使用 Azure REST API 从 ColdFusion 脚本进行推送。有一个有效的 PHP 脚本位于 here我尝试将 PHP 转换为 ColdFusion。下面是我到目前为止的代码,
我正在尝试使用 Azure REST API 从 ColdFusion 脚本进行推送。有一个有效的 PHP 脚本位于 here我尝试将 PHP 转换为 ColdFusion。下面是我到目前为止的代码,
我正在设置一个使用 Azure 推送通知的 Web API 项目。我想使用新的“安装”模型而不是旧的“注册”模型。然而,该文档有点有限。 查看MSDN ,Microsoft.Azure.Notific
我正在尝试通过 Azure NotificationHub REST Api 从 iOS 设备 (iPhone) 发送推送通知。我正在按照我在网上找到的 Azure 文档从 Xamarin.iOS 解
在 azure 上部署 azure 函数时,我收到错误,其中 func 找不到通知中心连接字符串设置。 Error indexing method 'NotifyMobiles.Run'Unable
在我的应用程序中将 Xamarin.Azure.NotificationHubs.Android Nuget 从古老的 0.6 升级到 1.1.4.1(这还涉及从支持库升级到 AndroidX)后 -
我是一名优秀的程序员,十分优秀!