2

我正在尝试通过 OneSignal 向 API REST 发送 API 通知,当我为唯一用户发送它时它工作正常,但是当 Json 中必须有多个用户时,通知是为唯一用户发送的。

My JSON (listOnesignal):[{"key":"user","relation":"=","value":"YAlBcuwiOJ"},{"key":"user","relation":"=","value":"MSoVMRxzbh"}]    

var jsonBody = { 
                  app_id: "appid", 
                  android_background_data: true,
                  tags: listOneSignal,
                  data: {anything}
    };
4

2 回答 2

4

您需要在默认情况下OR在每个条目之间添加一个运算符。AND

[{"key":"user","relation":"=","value":"YAlBcuwiOJ"},
 {"operator": "OR"},
 {"key":"user","relation":"=","value":"MSoVMRxzbh"}]

请注意,每个 REST API 调用OR的字段限制为 200 个条目(包括 's) 。tags如果您需要一次定位更多设备,则可以使用include_player_ids,因为您最多可以发送 2,000 个。

有关更多详细信息,请参阅 OneSignal创建通知 REST API文档页面。

于 2016-05-16T00:12:03.780 回答
2

如果有人使用 OneSignal CSharp SDK,您可以这样做(尽管此示例使用标签而不是玩家 ID):

IList<INotificationFilter> filters = new List<INotificationFilter>();

foreach (var tag in tagList)
{
    var filter = new NotificationFilterField
    {
        Field = NotificationFilterFieldTypeEnum.Tag,
        Key = "tag_id",
        Value = tag,
        Relation = "="
    };

    if (filters.Count > 0)
        filters.Add(new NotificationFilterOperator { Operator = "OR" });

    filters.Add(filter);
}

var client = new OneSignalClient("...");

var options = new NotificationCreateOptions
{
    AppId = new Guid("..."),
    Filters = filters
};

options.Contents.Add(...);
client.Notifications.Create(options);
于 2018-02-12T23:58:08.327 回答