为多个用户发送 API 通知 OneSignal

Send API notification OneSignal for multiple users

我正在尝试通过 OneSignal 向 API REST 发送 API 通知,当我发送一个唯一用户时它工作正常,但是当 [=16 中有多个用户时=],通知已发送给唯一用户。

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}
    };

您需要在每个条目之间添加一个 OR 运算符,因为默认使用 AND

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

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

有关详细信息,请参阅 OneSignal create notification REST API 文档页面。

如果有人在使用 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);