0

我有一个应用程序需要使用 Urban Airship 推送通知一次向多个特定用户(但不是整个数据库)发送消息。

使用他们的 v3 /push API,可以将消息推送到单个设备,但是使用广告中的“或”语法来指定设备列表不起作用。当我将以下 JSON(但带有有效的设备令牌:)发送到 /push API 时,它会返回 HTTP 状态 500,所以我认为它们可能存在错误。他们在 /push/validate 的测试 API 接受相同的 JSON 并认为它没问题。

我当然可以在一个循环中多次调用 API,一次传递一个手机令牌,但它效率低下,显然多设备选项是故意放在那里的。

有没有人让这个工作?

{
  "audience": {
    "or": [
      {
        "apid": "3aec0ab4-92b1-4a6f-7218-61ea5753527c"
      },
      {
        "device_token": "8957de44dc3dcc7bc2e297162bb3f33108d1f5323dcc94b97d4038dcc9896d24"
      }
    ]
  },
  "notification": {
    "alert": "foo"
  },
  "device_types": "all"
}
4

1 回答 1

1

是的,我有这个工作。我正在使用他们的 PHP 库,但生成的有效负载是

{
  "audience": {
    "or": [
      {
        "apid": "dab7e9af-fff2-4437-b6f7-299321654e20"
      },
      {
        "device_token": "10ecb5256e965151b73ea374afd3a8447258d6d057a52418736a6e26bb2f7d06"
      }
    ]
  },
  "notification": {
    "android": {
      "alert": "My App update",
      "delayWhileIdle": false,
      "extra": {
        "feedItemId": "332"
      }
    },
    "ios": {
      "alert": "My App update",
      "badge": "+1",
      "extra": {
        "feedItemId": "332"
      }
    }
  },
  "device_types": [
    "android",
    "ios"
  ]
}

请注意,我已将目标设备平台明确指定为 iOS 和 Android。因此,我有两个特定的通知节点子对象,一个用于我所针对的每个平台。如果您只使用简单的通知对象,这可能不是必需的,但我希望能够传递extra节点中的值,这有助于深度链接到应用程序。

于 2013-08-20T12:42:53.257 回答