Не могу получить идентификатор игрока, используя один сигнал, пробовал все решения, доступные здесь - PullRequest
1 голос
/ 10 октября 2019

Я перепробовал все, и он либо возвращает ноль, либо не получает доступ к прослушивателю подписки ОС, это мой финальный запуск в моем файле делегата приложения. Я пробовал все доступные в сети решения, но ничего не работает, моя версия Onesignal> = 2.6.2 и <3.0 </p>

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    FirebaseApp.configure()
      OneSignal.add(self as OSSubscriptionObserver)


    let notificationReceivedBlock: OSHandleNotificationReceivedBlock = { notification in

         print("Received Notification: \(notification!.payload.notificationID)")
      }

      let notificationOpenedBlock: OSHandleNotificationActionBlock = { result in
         // This block gets called when the user reacts to a notification received
         let payload: OSNotificationPayload = result!.notification.payload

         var fullMessage = payload.body
         print("Message = \(fullMessage)")

         if payload.additionalData != nil {
            if payload.title != nil {
               let messageTitle = payload.title
                  print("Message Title = \(messageTitle!)")
            }

            let additionalData = payload.additionalData
            if additionalData?["actionSelected"] != nil {
               fullMessage = fullMessage! + "\nPressed ButtonID: \(additionalData!["actionSelected"])"
            }
         }
      }

      let onesignalInitSettings = [kOSSettingsKeyAutoPrompt: false,
         kOSSettingsKeyInAppLaunchURL: true]

      OneSignal.initWithLaunchOptions(launchOptions,
         appId: "My app id i removed",
         handleNotificationReceived: notificationReceivedBlock,
         handleNotificationAction: notificationOpenedBlock,
         settings: onesignalInitSettings)

      OneSignal.inFocusDisplayType = OSNotificationDisplayType.notification





  OneSignal.promptForPushNotifications(userResponse: { accepted in
    if(accepted){

    }else{

    }
  })



    return true


}

, и это мой слушатель в файле делегата приложения, я добавил это, потому что хочу, чтобы он обнаружиллюбое изменение состояния подписки, которое происходит

 func onOSSubscriptionChanged(_ stateChanges: OSSubscriptionStateChanges!) {
    if !stateChanges.from.subscribed && stateChanges.to.subscribed {
       print("Subscribed for OneSignal push notifications!")
    }
    print("SubscriptionStateChange: \n\(stateChanges)")


    if let playerId = stateChanges.to.userId {
       print("Current playerId \(playerId)")
    }
 }
...