Azure通知中心安装c#

时间:2017-10-20 13:39:53

标签: ios azure-notificationhub

任何人都可以帮助我使用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

1 个答案:

答案 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 managementhere来建立使用注册模型的后端,以使用安装模型构建后端。