任何人都可以帮助我使用Azure通知中心,如何设置c#代码的设备安装。我有安装对象的问题。如何将其设置为将其作为参数传递给集线器客户端实例的CreateOrUpdateInstallation方法。我不清楚。
我在azure上有一个集线器,可以像本地的魅力一样使用设备注册,但是上传到azure不起作用。现在我想尝试使用istalation。
日Thnx
更新:4天后,我发现,您无法向自己发送通知。 Azure以某种方式知道您正在向您的手机发送通知,这就是为什么我的欢迎信息从未发送到我的手机。
更新:这就是现在我在后端代码中安装设备的方法:
[HttpGet]
[Route("api/push/test-installation")]
public async Task<IActionResult> NotificationInstalationTest()
{
string connectionString = "{{my connection string}}";
string hubName = "{{my hub name}}";
string token = "{{tokne}}";
NotificationHubClient hubClient = NotificationHubClient.CreateClientFromConnectionString(connectionString, hubName);
string notificationText = $"Test message for Azure delivery for Atila at: {DateTime.Now.ToShortTimeString()}";
var alert = new JObject
(
new JProperty("aps", new JObject(new JProperty("alert", notificationText))),
new JProperty("inAppMessage", notificationText)
).ToString(Newtonsoft.Json.Formatting.None);
IList<string> tags = new List<string>();
tags.Add("email");
IDictionary<string, string> pushVariables = new Dictionary<string, string>();
pushVariables.Add( "email", "atila@panonicit.com" );
Installation installation = new Installation();
installation.InstallationId = Guid.NewGuid().ToString();
installation.Platform = NotificationPlatform.Apns;
installation.PushChannel = token;
installation.Tags = tags;
installation.PushVariables = pushVariables;
await hubClient.CreateOrUpdateInstallationAsync(installation);
NotificationOutcome result = await hubClient.SendAppleNativeNotificationAsync(alert);
return Ok("Success");
}
现在,当我使用Postman点击此端点时,如果相同的端点调用来自iOS,它就不起作用了!
日Thnx
答案 0 :(得分:0)
如何将其设置为将其作为参数传递给集线器客户端实例的CreateOrUpdateInstallation方法。我不清楚。
根据我的理解,您使用安装模型从后端注册通知中心。对于WebAPI项目,假设您创建/更新安装的方法如下:
<强> InstallationController.cs 强>
//PUT api/installation
public async Task<HttpResponseMessage> Put(DeviceInstallation deviceUpdate)
{
Installation installation = new Installation();
installation.InstallationId = deviceUpdate.InstallationId;
//TODO:
await hub.CreateOrUpdateInstallationAsync(installation);
return Request.CreateResponse(HttpStatusCode.OK);
}
对于您的移动客户端,您可以参考以下方法:
private async Task<HttpStatusCode> CreateOrUpdateInstallationAsync(DeviceInstallation deviceInstallation)
{
using (var httpClient = new HttpClient())
{
//TODO: set your authorization header
//httpClient.DefaultRequestHeaders.Authorization
var putUri =$"{your-backend-endpoint}/api/installation";
string json = JsonConvert.SerializeObject(deviceInstallation);
var response = await httpClient.PutAsync(putUri, new StringContent(json, Encoding.UTF8, "application/json"));
return response.StatusCode;
}
}
此外,有关详细信息,您可以参考Registration management和here来建立使用注册模型的后端,以使用安装模型构建后端。