【问题标题】:Azure push notification hub - how to handle payload formats for both iOS and Android?Azure 推送通知中心 - 如何处理 iOS 和 Android 的有效负载格式?
【发布时间】:2014-04-10 23:38:18
【问题描述】:

我正在尝试通过 Azure 通知中心同时支持 iOS 和 Android 平台。

iOS 平台需要以下形式的有效负载:

{"aps":{"alert":"Notification Hub 测试通知"}}

而 Android 平台需要以下形式的有效负载:

{"data":{"message":"Notification Hub 测试通知"}}

我知道可以修改有效负载以包含更多信息,但该示例足以解决问题。

鉴于我基于标签向目的地发送通知并且我没有记录每个推送通知注册使用的平台是发送通知两次的唯一选择,一次用于苹果本机,第二次用于 gcm本地人?

hubClient.SendAppleNativeNotificationAsync(payload, tag); hubClient.SendGcmNativeNotificationAsync(payload, tag);

或者,有没有办法通过多个有效负载向 Azure 通知中心发送通知,然后通知中心将使用适合目标设备的有效负载?

【问题讨论】:

    标签: android ios azure notifications payload


    【解决方案1】:

    您提出的解决方案就足够了,而且是最好的方法。

    如果您真的想避免额外的调用(同样没有必要对通知中心进行额外调用)。

    1. 在注册设备时还要注册一个“类型”标签
    2. 在通知中心查询“类型”标签和您要发送到的其他标签

      for(hubClient.getRegistrationsByTag(iosTag) 中的注册注册){ hubClient.SendAppleNativeNotificationAsync(payload, tag); }

      for(hubClient.getRegistrationsByTag(androidTag) 中的注册注册){ hubClient.SendGcmNativeNotificationAsync(payload, tag); }

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。首先,我尝试使用模板通知来解决它,但是当我想在 ios 和 android 上获得正确的徽章和声音更新时,我遇到了重大问题。所以我切换回 iOS 和 Android 的原生通知。我对该问题的最终解决方案是在发送通知时检查 NotificationDescription 的类型。我使用枚举器从通知中心获取所有需要的标签,然后检查本机类型并基于此发送通知。示例代码:

      if (typeof(AppleRegistrationDescription) == currentNotificationDescription.GetType())
      {
          var jsonPayload = "{\"aps\" : { \"alert\" : \"" + message + "\", \"badge\" : " + badge + ", \"sound\" : \"default\" }, \"acme1\" : \"bar\", \"acme2\" : 42 }";
          await _hubClient.SendAppleNativeNotificationAsync(jsonPayload, tag);
      }
      else if(typeof(GcmRegistrationDescription) == currentDesc.GetType())
      {
          var jsonPayload = "{\"data\" : { \"message\" : \"" + message + "\", \"badge\" : " + badge + ", \"sound\" : \"default\" }, \"acme1\" : \"bar\", \"acme2\" : 42 }";
          await _hubClient.SendGcmNativeNotificationAsync(jsonPayload, tag);
      }
      

      【讨论】:

      • 嗨@Freddy,您能说说您在使用模板通知时遇到的主要问题吗?你说你想在 ios 和 android 上有正确的徽章和声音更新。我不明白,你为什么不能用模板做到这一点?在开始实施之前,我目前正在尝试查看推送通知的不同方面。谢谢!
      • 在以前的 Azure 通知中心版本中,我只能使用模板发送简单的推送通知。这意味着没有声音,也没有徽章编号。也许我只是不明白如何正确配置我的模板,但找出如何去做是一团糟。我看到 Azure NotificationHub 和文档现在发生了变化。然后我切换到本机消息,因为模板不适用于声音和徽章(它适用于 ios 或 ANDROID,但不能同时适用于两者!)。使用本机推送一切正常。如果你解决了请告诉我!
      • @Freddy 我已经和 MS 谈过了,模板通知不支持在苹果上触发声音。我个人认为这很荒谬,但他们似乎并不在意。
      【解决方案3】:

      您可能不得不切换到模板通知。我知道这些是“平台无关的”,可以在特定应用程序的客户端上解析。
      我只使用了 Windows 平台的通知中心,所以我在这里可能是错的,只是想给一个提示。 http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.notifications.notificationhubclient.sendtemplatenotificationasync.aspx

      【讨论】:

      猜你喜欢
      • 2017-05-31
      • 2017-06-22
      • 1970-01-01
      • 2016-07-19
      • 2021-08-03
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多