登录后向 OneSignal 发送标记。

13
我希望在用户登录后将标签发送给特定的用户,以便他/她可以接收通知。只有已登录的用户才能接收通知。 当用户退出登录时,我将删除他/她的标签。 我该如何做到这一点?
我的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里的代码运行良好,我的用户已经能够收到通知。但是即使他们没有登录,他们也可以收到通知。


你可以向我展示如何使用sendtag吗?我仍然无法使用sendtag。 - Thiha Aung
2个回答

9

您需要在LogInViewController中使用来自AppDelegate的同一OneSignal实例。您可以将OneSignal设置为类级别的静态变量,以便在两个类之间共享。

要删除标签,您可以调用oneSignal.deleteTag("username")

更新: 从iOS 2.0 SDK开始,OneSignal类上的所有方法现在都是静态的。


2

Objective-C:

// Send tag: After login 
[OneSignal sendTag:@"key" value:@"value"];      

// Delete tag: After logout
[OneSignal deleteTag:@"key"];

Swift:

// Send tag: After login
OneSignal.sendTag("key", value: "value") // for sending that is inserting tag in OneSignal

// Delete tag: After logout
OneSignal.deleteTag("key")  // delete that specific tag from OneSignal db

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接