web-dev-qa-db-fra.com

Comment obtenir l'identifiant de joueur unique d'un utilisateur One Signal dans iOS?

Comment récupérer l'identifiant de joueur unique des utilisateurs OneSignal dans iOS? Je n'ai trouvé la configuration du SDK iOS que dans la documentation officielle de OneSignal.

Merci si des suggestions sont faites.

13
aznelite89

Vous devez utiliser les observateurs de OneSignal tels que OSSubscriptionObserver .

// Add OSSubscriptionObserver after UIApplicationDelegate
class AppDelegate: UIResponder, UIApplicationDelegate, OSSubscriptionObserver {

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
      // Add your AppDelegate as an subscription observer
      OneSignal.add(self as OSSubscriptionObserver)
   }

   // After you add the observer on didFinishLaunching, this method will be called when the notification subscription property changes. 
   func onOSSubscriptionChanged(_ stateChanges: OSSubscriptionStateChanges!) {
      if !stateChanges.from.subscribed && stateChanges.to.subscribed {
         print("Subscribed for OneSignal Push notifications!")
      }
      print("SubscriptionStateChange: \n\(stateChanges)")

      //The player id is inside stateChanges. But be careful, this value can be nil if the user has not granted you permission to send notifications. 
      if let playerId = stateChanges.to.userId {
         print("Current playerId \(playerId)")
      }
   }
}

Pour une meilleure explication, voici la documentation de addSubscriptionObserver

29
GabrielaBezerra

J'ai besoin d'obtenir l'ID du lecteur (ou UserId) quelque part dans mon code, et je ne veux pas l'enregistrer n'importe où.

J'ai fini par utiliser ce code:

let userId = OneSignal.getPermissionSubscriptionState().subscriptionStatus.userId
15
MBH
    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 // This one
    print("userID = \(userID)")
    let pushToken = status.subscriptionStatus.pushToken
    print("pushToken = \(pushToken)")
0
Ahmed Safadi