来自Android

时间:2016-10-20 21:51:05

标签: android azure azure-mobile-services azure-functions azure-notificationhub

我正在尝试发送推送通知,其中包含一条文字,其中包含" Email Read"个人用户阅读他们通过我的Android应用程序发送的电子邮件。

我通过SendGrid API发送电子邮件,并设置了一个Azure Function webhook端点,在读取电子邮件时会调用该端点。

我可以将Notification Hub注册ID和GCM令牌附加到通过webhook传回给我的电子邮件中。

使用GCM令牌,我知道我想要发送通知的设备/个人,我现在的挑战是如何调用Azure Notification Hub来定位个人用户?

目前Azure功能仅支持与Templating绑定Notification Hub,这又带来了另一项挑战,如何使用安装从Android设备注册Azure通知中心?

3 个答案:

答案 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)

NotificationHub中的

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通知。