2015-05-15 10 views
11

Desidero inviare tag a un utente specifico dopo aver effettuato l'accesso in modo da poter ricevere notifiche. Solo gli utenti registrati riceveranno notifiche. Quando si disconnette, eliminerò il suo tag. Come posso fare questo?Invia tag a OneSignal dopo il login

Il mio codice in AppDelegate:

let oneSignal: OneSignal = OneSignal(launchOptions: launchOptions, appId: "<my-app-id>") { 
     (message, additionalData, isActive) in 

     if (additionalData != nil) { 
      NSLog("APP LOG ADDITIONALDATA: %@", additionalData); 
      let displayMessage: NSString = NSString(format:"NotificationMessage:%@", message); 

      var messageTitle: NSString = ""; 
      if (additionalData["discount"] != nil) { 
       messageTitle = additionalData["discount"] as String 
      } 
      else if (additionalData["bonusCredits"] != nil) { 
       messageTitle = additionalData["bonusCredits"] as String; 
      } 
      else if (additionalData["actionSelected"] != nil) { 
       messageTitle = NSString(format:"Pressed ButtonId:%@", additionalData["actionSelected"] as String); 
      } 

      var alertView: UIAlertView = UIAlertView(title: messageTitle, 
       message:displayMessage, 
       delegate:self, 
       cancelButtonTitle:"Close"); 

      alertView.show(); 
     } 

     else if (isActive) { 
      var alertView: UIAlertView = UIAlertView(title:"OneSignal Message", 
       message:message, 
       delegate:self, 
       cancelButtonTitle:"Close"); 
      alertView.show(); 
     } 
    } 

Il mio codice nel mio LogInViewController:

let oneSignal = OneSignal() 
oneSignal.sendTag("username", value: self.usernameTextField.text) 

Il codice nel mio AppDelegate sta lavorando bene, i miei utenti già ricevono le notifiche. Ma possono ricevere notifiche anche se non hanno effettuato il login.

+0

puoi mostrarmi come utilizzare sendtag? Non riesco ancora a utilizzare sendtag. –

risposta

9

È necessario utilizzare la stessa istanza oneSignal da AppDelegate nel LogInViewController. Puoi rendere oneSignal statico a livello di classe in modo che possa essere condiviso tra entrambe le classi.

Per eliminare un tag è possibile chiamare oneSignal.deleteTag("username")

Aggiornamento: Come del SDK iOS 2.0 tutti i metodi della classe OneSignal ora sono statici.

1
Send tag: After login 
[oneSignal sendTag:@"key" value:@"value"]; 

deletetag: After logout 
[oneSignal deleteTag:@"key"]; 


Update 
Onesignal.sendtag(); //for sending that is inserting tag in one signal 
Onesignal.deteletag(); //delete that specific tag from one signal db 
Problemi correlati