One Signal – idsAvailable已弃用
OneSignal的最新版本生成了一个警告,例如’ idsAvailable ‘已被弃用。 如何使用getPermissionSubscriptionState()代替idsAvailable获取’playerID’,如下所示?
OneSignal.idsAvailable({ (userId, pushToken) in if (pushToken != nil) { if let playerID = userId { // do something } } })
OneSignal保留了非常好的文档。
对于android,您可以使用返回userID和registrationID的idsAvailable
方法获取userID。
userID aka playerID是OneSignal UUID格式的字符串。 (每个应用的每个设备唯一)registrationID是Google分配的标识符(每个应用每个设备唯一,重新安装时更改)。
对于iOS,您可以以相同的方式获取userID,但在本机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 } }
我刚刚在文档中发现,“userID”的意思是“playerID”。
https://documentation.onesignal.com/docs/ios-native-sdk#section–getpermissionsubscriptionstate-
userId
与playerId
相同,将它放在我在Swift 4应用程序中使用的一些示例Analytics(singleton)类中:
class Analytics : NSObject, OSSubscriptionObserver { ///the singleton static let shared = Analytics() func setupOneSignal(launchOptions: [UIApplicationLaunchOptionsKey : Any]?) { OneSignal.setLogLevel(.LL_VERBOSE, visualLevel: .LL_NONE) OneSignal.add(self as OSSubscriptionObserver) let settings : [String : Any] = [kOSSettingsKeyInAppLaunchURL : false] OneSignal.initWithLaunchOptions( launchOptions, appId:Environment.oneSignalAppId, handleNotificationReceived: { (osnotification) in //..... }, handleNotificationAction: { (osNotificationOpenedResult) in //..... }, settings: settings) } func onOSSubscriptionChanged(_ stateChanges: OSSubscriptionStateChanges!) { if let state = OneSignal.getPermissionSubscriptionState(), let userId = state.subscriptionStatus.userId, let pushToken = state.subscriptionStatus.pushToken { print("onesignal.userId : \(userId)") print("onesignal.pushToken : \(pushToken)") } } }
- 在animation之前改进HTML5 Canvas逐帧JPGanimation来完全caching
- 如何以编程方式禁用/启用UIBarButtonItem
- 2018年,美国和印度有哪些最佳iOS应用开发公司?
- 漫游时CTCarrier mobileNetworkCode是否改变?
- 目标C方便方法的定义是什么?
- 在故事板中创build一个独立的视图以编程方式使用
- NSURLSession:后台上传,然后调用服务api
- 有了UIPanGestureRecognizer,有没有一种方法只能像许多像素被淘汰之后那么频繁?
- 如何在embedded在UINavigationController中的UISearchController中添加范围button