0

Urban Airship プッシュ通知を使用して、一度に複数の特定のユーザー (データベース全体ではなく) にメッセージを送信する必要があるアプリケーションがあります。

v3 /push API を使用すると、メッセージを単一のデバイスにプッシュできますが、アドバタイズされた「or」構文を使用してデバイスのリストを指定することはできません。次の JSON を (有効なデバイス トークンを使用して) /push API に送信すると、HTTP ステータス 500 が返されるため、バグがある可能性があります。/push/validate にあるテスト API は、同じ JSON を受け入れ、それを OK と見なします。

もちろん、API をループ内で何度も呼び出して、一度に 1 つのハンドセット トークンを渡すこともできますが、これは非効率的であり、マルチデバイス オプションが意図的にそこに配置されたことは明らかです。

誰かがこれを機能させましたか?

{
  "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 として具体的に指定したことに注意してください。そのため、通知ノードの特定の子オブジェクトが 2 つあり、ターゲットとするプラットフォームごとに 1 つです。単純な通知オブジェクトのみを使用している場合、これは必要ないかもしれませんがextra、アプリへのディープ リンクに役立つノードの値を渡すことができるようにしたかったのです。

于 2013-08-20T12:42:53.257 に答える