我正在尝试发送推送通知,其中包含一条文字,其中包含" Email Read"个人用户阅读他们通过我的Android应用程序发送的电子邮件。
我通过SendGrid API发送电子邮件,并设置了一个Azure Function webhook端点,在读取电子邮件时会调用该端点。
我可以将Notification Hub注册ID和GCM令牌附加到通过webhook传回给我的电子邮件中。
使用GCM令牌,我知道我想要发送通知的设备/个人,我现在的挑战是如何调用Azure Notification Hub来定位个人用户?
目前Azure功能仅支持与Templating绑定Notification Hub,这又带来了另一项挑战,如何使用安装从Android设备注册Azure通知中心?
答案 0 :(得分:1)
我自己没试过,但这就是我认为你需要的东西:
有关安装模型的详细信息,请参阅Registration management 帖子。
答案 1 :(得分:1)
@Nikita G.整体指导正确。
我想附加实施级知识。
每个人都可以通过Notification Hub中的tag
进行管理,因为用户可以使用多个设备。 Azure Notification Hub标记系统适用于针对此情况发送推送。因此,您可以附加user:34939
之类的标记来识别用户(而不是识别设备)。
出于这个原因,您应该认为您的要求是识别device
或识别user
。无论何种情况,GCM令牌都不必附加到电子邮件链接。只有标记值(userid)足以识别用户,或者只有Hub注册ID足以识别设备。无论APNS或GCM令牌如何,集线器注册ID都有助于管理已注册的设备。
关于模板,是的。注册时需要模板。
仅供参考,标签有120个字符长度限制。 https://stackoverflow.com/a/21199385/361100
答案 2 :(得分:1)
tagExpression是动态的。有关详细信息,请参阅Configuring notification tag for Azure Function。此外,Azure功能现在支持向GCM注册发送通知。您需要在Binding to GCM上设置Notification Platform。
以下是将WNS推送通知发送到以queueTrigger形式出现的动态代码的示例:
function.json
{
"bindings": [
{
"name": "myQueueItem",
"type": "queueTrigger",
"direction": "in",
"queueName": "test-queue",
"connection": "AzureWebJobsDashboard"
},
{
"type": "notificationHub",
"name": "notification",
"hubName": "youthubname",
"connection": "NOTIFICATIONHUB_AppSettingName",
"direction": "out",
"tagExpression": "{userIdTag}",
"platform": "wns"
}
],
"disabled": false
}
C#QueueTrigger:
using System;
public static void Run(PushToTag myQueueItem, TraceWriter log, out string notification)
{
log.Info($"C# Queue trigger function processed: {myQueueItem.UserIdTag}");
notification = "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">Test message</text></binding></visual></toast>";
}
public class PushToTag
{
public string UserIdTag { get; set; }
public string UserName { get; set; }
}
示例队列数据
{"UserIdTag":"tag1" , "UserName":"joe"}
注意:tag1是客户注册的标签
您可以通过在通知平台中选择GCM来发送GCM通知。