Azure 通知中心不适用于 ios

Posted

技术标签:

【中文标题】Azure 通知中心不适用于 ios【英文标题】:Azure Notification Hub doesn't work for ios 【发布时间】:2016-04-30 15:52:46 【问题描述】:

Following this tutorial 我创建了 azure 通知中心并添加到我的应用程序注册中。我的应用注册远程通知成功,当我尝试在后端注册设备时,我成功获得了我的安装 ID。

public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)

MobileServiceClient client = QSTodoService.DefaultService.GetClient;

const string templateBodyAPNS = "\"aps\":\"alert\":\"$(messageParam)\"";

JObject templates = new JObject();
templates["genericMessage"] = new JObject

    "body", templateBodyAPNS
;

// Register for push with your mobile app
var push = client.GetPush();
push.RegisterAsync(deviceToken, templates);

但是当尝试发送通知时

        // Get the settings for the server project.
        HttpConfiguration config = this.Configuration;
        MobileAppSettingsDictionary settings =
            this.Configuration.GetMobileAppSettingsProvider().GetMobileAppSettings();

        // Get the Notification Hubs credentials for the Mobile App.
        string notificationHubName = settings.NotificationHubName;
        string notificationHubConnection = settings
            .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;

        // Create a new Notification Hub client.
        NotificationHubClient hub = NotificationHubClient
        .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);

        // Sending the message so that all template registrations that contain "messageParam"
        // will receive the notifications. This includes APNS, GCM, WNS, and MPNS template registrations.
        Dictionary<string, string> templateParams = new Dictionary<string, string>();
        templateParams["messageParam"] = "some message";

        try
        
            var result = hub.SendTemplateNotificationAsync(templateParams);
        
        catch (System.Exception ex)
        
            config.Services.GetTraceWriter()
                .Error(ex.Message, null, "Push.SendAsync Error");
        

结果说“发送成功:0,发送失败:0。

这个问题的原因是什么?

更新

当我尝试通过 azure 发送通知时,我不认为 sertificate 或配置文件的问题 - 它发送。 (虽然我没有收到,但这已经是另一个问题了)。

更新 2

我也试过发送到注册标签,

string payload = "\"aps\":\"alert\":\"Notification Hub test notification\"";
List<string> tags = new List<string> "testTag";
hub.CreateAppleTemplateRegistrationAsync(token,payload,tags);

Dictionary<string, string> templateParams = new Dictionary<string, string>();
            templateParams["messageParam"] = "message";
var res = hub.SendTemplateNotificationAsync(templateParams, tags);

和苹果原生通知,但结果是一样的。

hub.SendAppleNativeNotificationAsync(payload);

顺便说一句,notificationId 为空,状态通知显示为“入队”。

【问题讨论】:

您是否已验证您正在使用“侦听、管理、发送”连接字符串(来自 Azure)作为 notificationHubConnection? 是的,我正在使用 FullSharedAccessSignature 进行连接 您确定为您的应用程序使用了正确的配置文件吗?如果不是,则不会收到任何内容。 【参考方案1】:

我最终从头开始学习教程、重新创建证书、配置文件、通知中心等,现在它可以工作了。

【讨论】:

以上是关于Azure 通知中心不适用于 ios的主要内容,如果未能解决你的问题,请参考以下文章

[Azure通知中心上的iOS13 apns-push-type标头

Azure iOS 推送通知在生产模式下未收到?

如何将原始推送通知从 Azure 通知中心发送到 iOS 设备?

如何在 iOS 的 Azure 移动应用通知中心注册目标推送通知

如何在不更新 IOS 应用程序的情况下使用 Azure 通知中心

以编程方式创建 Azure 推送通知中心