我可以将Azure CustomTemplate推送通知与#34; content-available"在后台更新iOS应用程序?

时间:2016-06-24 13:49:02

标签: ios azure push-notification notifications azure-notificationhub

是否可以在Azure NotificationHub通知自定义模板中发送Apple特定标记?我想将#34; content-available":1发送到应用程序,而无需切换服务器以发送本机通知,但我无法弄清楚如何。

我有一个使用Azure Notification Hub自定义模板的iOS应用程序来发送推送通知。

我的模板效果很好,直到现在,当我有一种新类型的推送消息,我希望应用程序在后台获取信息。

我知道如何在原生iOS上​​执行此操作。如果我在我的应用程序中订阅本机通知并测试将此作为Azure的Apple本机通知发送:

{"aps":{ "content-available":1} [ other parameters...] } 

然后在我的App委托中调用应用程序(didReceiveRemoteNotification,fetchCompletionHandler)函数,我可以使用本机通知中的其他参数来获取信息,即使应用程序已关闭或在后台运行。

我尝试在模板中执行此操作时遇到两个问题。首先,我无法在此处找出w 将content-available参数放入自定义模板

其次,如果我提到该参数,我就无法订阅模板,因为" content-available"有一个" - "。

 MyHub!.registerTemplateWithDeviceToken(mobiledeviceToken!, name: "none", jsonBodyTemplate: "{\"aps\": {\"alert\":\"$(message)\",\"content-available\":\"$(content-available)\"}", expiryTemplate: "", tags: tags)

我收到此错误:

 PM</Detail></Error>" UserInfo={NSLocalizedDescription=Fail to perform registration operation. Response:<Error><Code>400</Code><Detail>Property name is content-available. Only ASCII-7 alphanumeric characters and '_' are permitted in the property name.

如何在自定义模板中发送此参数,以便iOS应用可以看到它,以及如何订阅该模板?

或者,我是否必须切换到原生通知?

1 个答案:

答案 0 :(得分:2)

看起来您应该使用\"#(content_available)\"而不是\"$(content-available)\"。请注意&#34; - &#34;不是字母数字字符,也是&#34;#&#34;将导致"content-available":1出现在实际有效负载中,而#34; $&#34;会使你不想要的"content-available":"1"

Here你可以找到一篇关于NH模板的好文章。