Ios Swift-如何从OneSignal SDK向特定用户名标记发送post通知?
如何从Swift/iOS本机SDK向特定标记(用户名:“@john”)发送post通知。我以前发过一个信号。我正在下面发送一个带有playerID的用户。但这还不够。有人可以使用不同的帐户登录。所以他们所有人都会有同样的球员ID。当我添加标记行时,它并不像我期望的那样工作。如何将播放器ID和用户名标记一起使用Ios Swift-如何从OneSignal SDK向特定用户名标记发送post通知?,ios,swift,push-notification,onesignal,Ios,Swift,Push Notification,Onesignal,如何从Swift/iOS本机SDK向特定标记(用户名:“@john”)发送post通知。我以前发过一个信号。我正在下面发送一个带有playerID的用户。但这还不够。有人可以使用不同的帐户登录。所以他们所有人都会有同样的球员ID。当我添加标记行时,它并不像我期望的那样工作。如何将播放器ID和用户名标记一起使用 OneSignal.sendTag("username", value: "\(username)") 如果有人解释一下,那就太好了 DataService.ds.REF_USERS.c
OneSignal.sendTag("username", value: "\(username)")
如果有人解释一下,那就太好了
DataService.ds.REF_USERS.child(userUUID).child("playerID").observeSingleEvent(of: .value, with: { snapshot in
if let playerID = snapshot.value as? String {
OneSignal.idsAvailable({ (userId, pushToken) in
print("UserId:%@", userId ?? "")
self.showErrorAlert("Player ID Here:", msg: "\(userId!)")
if (pushToken != nil) {
OneSignal.postNotification(["contents": ["en": "@username wrote a comment: \(trimmed)"],
"include_player_ids": [playerID],
"send_after": "2017-01-10 20:10:00 GMT+0300",
"tag": ["field": "tag", "key": "username", "relation": "=", "value": "john",
])
}
})
}
})
出于安全原因,OneSignal不允许您在应用程序代码中使用标记定位 OneSignal确实允许您使用应用程序中的
include\u player\u id
字段锁定设备
请注意,OneSignal也不允许您组合不同的目标参数。因此,您不能同时使用包含玩家ID
和标记
OneSignal.sendTag("username", value: "\(username)")
要基于用户名发送通知,请使用OneSignal.sendTag
方法分配用户名,如示例所示。接下来,从服务器端代码中,使用过滤器
目标参数向所有使用该用户名的用户发送通知
例如,下面是一个如何在Ruby中执行此操作的示例:
params = {"app_id" => "5eb5a37e-b458-11e3-ac11-000c2940e62c",
"contents" => {"en" => "English Message"},
"filters" => [
{"field": "tag",
"key": "username",
"relation": "=",
"value": "(username)"}
]
}
uri = URI.parse('https://onesignal.com/api/v1/notifications')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.path,
'Content-Type' => 'application/json;charset=utf-8',
'Authorization' => "Basic NGEwMGZmMjItY2NkNy0xMWUzLTk5ZDUtMDAwYzI5NDBlNjJj")
request.body = params.as_json.to_json
response = http.request(request)
puts response.body
您可以在OneSignal文档中找到其他示例。谢谢您的详细回答。我没有使用服务器端,而是使用临时解决方案,在用户注销时从数据库中删除playerID。这个答案将来也会很方便。但是如果我不使用服务器端代码呢?我需要通过移动SDK定位一个标签