3 votes

Swift - Comment envoyer une notification de poste depuis le SDK de OneSignal à un tag de nom d'utilisateur spécifique ?

Comment puis-je envoyer une notification de publication à un tag spécifique comme (nom d'utilisateur : "@john") à partir du SDK Swift/iOS Native. J'ai déjà utilisé sendTag OneSignal. Je l'envoie à un utilisateur avec son playerID. Mais ce n'est pas suffisant. Quelqu'un peut se connecter avec différents comptes. Donc le même playerID sera pour tous. Lorsque j'ajoute le tag line, cela ne fonctionne pas comme prévu. Comment faire fonctionner le tag Player ID && username ensemble.

OneSignal.sendTag("username", value: "\(username)")

Si quelqu'un peut expliquer cela, ce serait génial.

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",
                ])
        }

    })

} 
})

1voto

Gdeglin Points 6687

Pour des raisons de sécurité, OneSignal ne vous permet pas d'utiliser le ciblage des balises à partir du code de votre application.

OneSignal vous permet de cibler des dispositifs en utilisant le bouton include_player_ids à partir de votre application.

Notez que OneSignal ne vous permet pas non plus de combiner différents paramètres de ciblage. Vous ne pouvez donc pas utiliser à la fois include_player_ids et tags cibler ensemble.

Pour envoyer des notifications basées sur le nom d'utilisateur, utilisez l'option OneSignal.sendTag pour attribuer le nom d'utilisateur comme dans votre exemple. Ensuite, à partir de votre code côté serveur, utilisez la méthode filters paramètre de ciblage pour envoyer une notification à tous les utilisateurs ayant ce nom d'utilisateur.

Voici par exemple un exemple de la manière de procéder en 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

Vous pouvez trouver des exemples supplémentaires dans la documentation OneSignal ici .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X