Swift – 如何从OneSignal SDK发送post通知到特定的用户名标签?
如何从Swift / iOS Native SDK向特定标签发送帖子通知,例如(用户名:“@ john”)。 我之前发过过Tag OneSignal。 我发送给玩家ID以下的用户。 但这还不够。 有人可以使用不同的帐户登录。 因此所有玩家ID都是相同的。 当我添加标记行时,它不能像我期望的那样工作。 如何一起使用玩家ID和用户名标签。
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_player_ids
字段来定位设备。
请注意,OneSignal也不允许您组合不同的定位参数。 因此,您可能无法同时使用include_player_ids
和tags
。
要根据用户名发送通知,请使用OneSignal.sendTag
方法分配用户名,例如您的示例。 接下来,使用filters
定位参数,从服务器端代码向具有该用户名的所有用户发送通知。
例如,这是一个如何在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文档中找到其他示例。