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_idstags

要根据用户名发送通知,请使用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文档中找到其他示例。