Отправить тег для OneSignal после входа в систему

Я хочу отправить тег конкретному пользователю после входа в систему, чтобы он мог получать уведомления. Только зарегистрированные пользователи получат уведомления. Когда он/она выйдет из системы, я удалю его/ее тег. Как я могу это сделать?

Мой код в 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();
        }
    }

Мой код в моем LogInViewController:

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

Код в приложении appDelegate работает нормально, мои пользователи уже получают уведомления. Но они могут получать уведомления, даже если они не вошли в систему.

Ответ 1

Вам нужно использовать тот же экземпляр oneSignal из AppDelegate в вашем LogInViewController. Вы можете сделать oneSignal static на уровне класса, чтобы он мог быть разделен между обоими классами.

Чтобы удалить тег, вы можете вызвать oneSignal.deleteTag("username")

Update: Начиная с SDK iOS 2.0 все методы класса OneSignal теперь статичны.

Ответ 2

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