无法在 Android 上使用 Xamarin Azure 消息组件注册推送通知模板

Posted

技术标签:

【中文标题】无法在 Android 上使用 Xamarin Azure 消息组件注册推送通知模板【英文标题】:Unable to register push notification templates with Xamarin Azure Messaging component on Android 【发布时间】:2015-03-12 20:27:39 【问题描述】:

我有一个 Xamarin android 应用程序,它使用带有 Xamarin Azure 消息传递组件的 Azure 通知中心。如果我只是使用一些标签注册设备,基于示例代码,一切正常。如果我使用命名模板注册设备,则注册方法会引发 NotificationHubException 异常。 Xamarin.ios 的等效代码可以正常工作。

此代码有效:

protected override void OnRegistered(Context context, string registrationId)

    if (hub != null)
    
        List<string> tags = new List<string>();

        tags.Add("test1");
        tags.Add("test2");

        hub.Register(registrationId, tags.ToArray());
    

此代码引发异常

protected override void OnRegistered(Context context, string registrationId)

    if (hub != null)
    
        List<string> tags = new List<string>();

        tags.Add("test1");
        tags.Add("test2");

        var alerts = "\"data\":\"message\":\"$(message)\",\"title\":\"$(title)\"";
        hub.RegisterTemplate(registrationId, alerts, "alerts", tags.ToArray());
    

调用RegisterTemplate时,会抛出WindowsAzure.Messaging.NotificationHubException异常,包如下

<Error>
    <Code>400</Code>
    <Detail>Encountered unexpected character 'a'. TrackingId:bcecaffa-XXXX-XXXX-XXXX-XXXXXXXXX,TimeStamp:3/12/2015 3:55:06 PM</Detail>
</Error>

我调用 RegisterTemplate 是否正确?

【问题讨论】:

我想使用这个 registerTemplate 方法,但我没有得到第一个参数'registrationId',你能告诉我应该在第一个参数中发送什么吗?是 GCM 注册 ID 还是任何其他设备 ID? 【参考方案1】:

我相信你已经交换了参数 2 和 3。 试试这个:

hub.RegisterTemplate(registrationId, "alerts", alerts, tags.ToArray());

【讨论】:

谢谢,这就是问题所在。

以上是关于无法在 Android 上使用 Xamarin Azure 消息组件注册推送通知模板的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Xamarin Android 上播放本地视频

对于Xamarin Android,我无法处理点击事件的后台通知

Xamarin - 无法通过 Android(和 iOS)访问本地 api

Xamarin.forms,Android 部署问题。应用程序无法在模拟器和物理设备上部署

无法使用 C# 从 Xamarin.iOs 和 Xamarin.Android 连接到 MySql

无法在 SlidingUpPanelLayout Xamarin Android 中使用 ScrollView 布局