一个信号 - idsAvailable 已弃用
One Signal - idsAvailable is deprecated
OneSignal 的最新构建版本生成警告,如“idsAvailable”已弃用。我如何使用 getPermissionSubscriptionState() 而不是 idsAvailable 来获取 'playerID',就像我在下面所做的那样?
OneSignal.idsAvailable({ (userId, pushToken) in
if (pushToken != nil) {
if let playerID = userId {
// do something
}
}
})
我刚刚在文档中发现,看起来像 "userID" 意味着 "playerID"。
https://documentation.onesignal.com/docs/ios-native-sdk#section--getpermissionsubscriptionstate-
OneSignal 保留了非常好的文档。
对于 android,您可以使用 idsAvailable
方法获取用户 ID,其中 returns 用户 ID 和注册 ID。
userID aka playerID 是 OneSignal UUID 格式的字符串。 (每个应用程序每个设备唯一)
registrationID 是 Google 分配的标识符(每个设备每个应用程序唯一,重新安装时会发生变化)。
对于iOS,您可以通过相同的方式获取用户ID,但在原生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
相同,将它们放在一些示例分析(单例)中 class 我在我的 Swift 4 应用程序中使用:
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)")
}
}
}
使用此代码
public class MainActivity extends Activity implements OSSubscriptionObserver {
protected void onCreate(Bundle savedInstanceState) {
OneSignal.addSubscriptionObserver(this);
}
public void onOSSubscriptionChanged(OSSubscriptionStateChanges stateChanges) {
if (!stateChanges.getFrom().getSubscribed() &&
stateChanges.getTo().getSubscribed()) {
new AlertDialog.Builder(this)
.setMessage("You've successfully subscribed to push notifications!")
.show();
// get player ID
stateChanges.getTo().getUserId();
}
Log.i("Debug", "onOSSubscriptionChanged: " + stateChanges);
}
}
OneSignal 的最新构建版本生成警告,如“idsAvailable”已弃用。我如何使用 getPermissionSubscriptionState() 而不是 idsAvailable 来获取 'playerID',就像我在下面所做的那样?
OneSignal.idsAvailable({ (userId, pushToken) in
if (pushToken != nil) {
if let playerID = userId {
// do something
}
}
})
我刚刚在文档中发现,看起来像 "userID" 意味着 "playerID"。
https://documentation.onesignal.com/docs/ios-native-sdk#section--getpermissionsubscriptionstate-
OneSignal 保留了非常好的文档。
对于 android,您可以使用 idsAvailable
方法获取用户 ID,其中 returns 用户 ID 和注册 ID。
userID aka playerID 是 OneSignal UUID 格式的字符串。 (每个应用程序每个设备唯一) registrationID 是 Google 分配的标识符(每个设备每个应用程序唯一,重新安装时会发生变化)。
对于iOS,您可以通过相同的方式获取用户ID,但在原生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
相同,将它们放在一些示例分析(单例)中 class 我在我的 Swift 4 应用程序中使用:
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)")
}
}
}
使用此代码
public class MainActivity extends Activity implements OSSubscriptionObserver {
protected void onCreate(Bundle savedInstanceState) {
OneSignal.addSubscriptionObserver(this);
}
public void onOSSubscriptionChanged(OSSubscriptionStateChanges stateChanges) {
if (!stateChanges.getFrom().getSubscribed() &&
stateChanges.getTo().getSubscribed()) {
new AlertDialog.Builder(this)
.setMessage("You've successfully subscribed to push notifications!")
.show();
// get player ID
stateChanges.getTo().getUserId();
}
Log.i("Debug", "onOSSubscriptionChanged: " + stateChanges);
}
}