为多个用户发送 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);
我正在尝试通过 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);