当个人用户通过我的Android应用程序发送的电子邮件被阅读时,我正在尝试发送一个带有文本的推送通知,其中显示“电子邮件已读”。
我通过Azure API发送电子邮件,并且设置了一个SendGrid函数webhook端点,当读取电子邮件时将调用该端点。
我可以将Notification Hub注册Id和GCM令牌附加到通过webhook传回给我的电子邮件。
有了GCM令牌,我知道我想要向哪个设备/个人发送通知,我现在的挑战是如何调用Azure notification Hub来针对个人用户?
目前Azure函数只支持使用模板的Notification Hub绑定,这给我带来了另一个挑战,我如何使用安装从Android设备注册Azure通知中心?
发布于 2016-10-21 07:06:04
我自己还没有试过,但我认为你需要的是:
有关安装模型的更多信息,请参阅Registration management post。
发布于 2016-10-21 07:56:54
@Nikita G.总体而言是正确的。
我想补充一下实现级别的知识。
由于用户可以使用多个设备,因此每个人都可以由通知中心中的tag进行管理。Azure通知集线器标签系统适用于发送这种情况的推送。因此,您可以附加一个像user:34939这样的标记来标识用户(而不是标识设备)。
因此,您应该认为您的需求是标识device或标识user。无论在什么情况下,GCM令牌都不必附加到电子邮件链接上。只有标签值(userid)足以标识用户,或者仅集线器注册id足以标识设备。集线器注册id有助于管理已注册的设备,而与APNS或GCM令牌无关。
关于模板,是的。注册过程中模板是必需的。
仅供参考,tag有120个字符长度限制。https://stackoverflow.com/a/21199385/361100
发布于 2016-10-25 01:47:18
NotificationHub中的tagExpression是动态的。更多详情请查看Configuring notification tag for Azure Function。此外,Azure函数现在支持向GCM注册发送通知。您需要将绑定上的通知平台设置为GCM。
下面是一个示例,用于将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通知。
https://stackoverflow.com/questions/40165148
复制相似问题