'One Signal - idsAvailable is deprecated
OneSignal's latest build version generate a warning like 'idsAvailable' is deprecated. How can I get 'playerID' using getPermissionSubscriptionState() instead idsAvailable as I did below?
OneSignal.idsAvailable({ (userId, pushToken) in
if (pushToken != nil) {
if let playerID = userId {
// do something
}
}
})
Solution 1:[1]
I just discovered in the documentation, look like "userID" means "playerID".
https://documentation.onesignal.com/docs/ios-native-sdk#section--getpermissionsubscriptionstate-
Solution 2:[2]
userId is the same as the playerId, putting it all together in some sample Analytics (singleton) class I use in my Swift 4 app:
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)")
}
}
}
Solution 3:[3]
Use this code
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);
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | iamburak |
| Solution 2 | HixField |
| Solution 3 | Ankit Panwar |
