ios - 一个信号 - idsAvailable 已弃用

原文 标签 ios swift onesignal

OneSignal 的最新构建版本会生成类似“”的警告。 idsAvailable ' 已弃用。如何使用 获取“玩家 ID” getPermissionSubscriptionState() 而是 idsAvailable 就像我在下面所做的那样?

    OneSignal.idsAvailable({ (userId, pushToken) in

        if (pushToken != nil) {

            if let playerID = userId {

                // do something

            }
        }
    })

最佳答案

OneSignal 保留了非常好的文档。

对于android,您可以使用idsAvailable 获取用户ID。返回用户 ID 和注册 ID 的方法。

userID aka playerID 是 OneSignal UUID 格式的字符串。 (每个设备每个应用程序唯一)
registrationID 是 Google 分配的标识符(每个设备每个应用程序唯一,重新安装时会发生变化)。

对于 iOS,您可以通过相同的方式获取用户 ID,但在 native iOS SDK 的 2.5.0+ 版本中添加了 getPermissionSubscriptionState 方法和 addSubscriptionObserver。

您可以按如下方式获取 Swift 的 OSPermissionSubscriptionState:

let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()

let hasPrompted = status.permissionStatus.hasPrompted
print("hasPrompted = \(hasPrompted)")
let userStatus = status.permissionStatus.status
print("userStatus = \(userStatus)")

let isSubscribed = status.subscriptionStatus.subscribed
print("isSubscribed = \(isSubscribed)")
let userSubscriptionSetting = status.subscriptionStatus.userSubscriptionSetting
print("userSubscriptionSetting = \(userSubscriptionSetting)")
let userID = status.subscriptionStatus.userId
print("userID = \(userID)")
let pushToken = status.subscriptionStatus.pushToken
print("pushToken = \(pushToken)")

对于 Objective-C:
OSPermissionSubscriptionState* status = [OneSignal getPermissionSubscriptionState];
status.permissionStatus.hasPrompted
status.permissionStatus.status

status.subscriptionStatus.subscribed
status.subscriptionStatus.userSubscriptionSetting
status.subscriptionStatus.userId
status.subscriptionStatus.pushToken

所以你上面的代码现在看起来像这样:
let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()

let userID = status.subscriptionStatus.userId
    print("userID = \(userID)")
let pushToken = status.subscriptionStatus.pushToken
    print("pushToken = \(pushToken)")

if pushToken != nil {
    if let playerID = userID {
        // do something
    }
}

关于ios - 一个信号 - idsAvailable 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43230152/

相关文章:

ios - 我应该把NSNotification的removeObserver放在哪里

javascript - 引导模态上的4位形式

api - OneSignal - 创建分段

ios - 是否可以在ViewController文件之外设置约束和对象?

objective-c - ASIHTTPRequest setTemporaryFileDownloadPath:不适用于某些URL

ios - scrollView图像不在使用midX的中心吗?

swift - putData方法未执行

swift - 为什么我们从线程移开?在Grand Central Dispatch中,关闭被称为On?

ios - 如果应用未在Swift iOS中运行,如何读取一个信号通知

java - Android Nougat 上的错误通知 : Couldn't expand RemoteViews for: StatusBarNotification.