Estoy usando swift 3.0 y estoy tratando de agregar números de placa para mi aplicación. Creo que la forma correcta de hacer esto es similar a lo que está por debajo.

application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert |
            UIUserNotificationType.Badge, categories: nil
            ))

application.applicationIconBadgeNumber = 5

Sin embargo, me da un error por usar ‘|’ en UIUserNotificationSettings bloque y también recibirá el mensaje de error «Argumento de etiquetas (forTypes, categorías) no coincide con ninguna de las disponibles sobrecargas» para UIUserNotificationSettings si sólo tengo UIUserNotificationType.badge como el primer argumento. Hizo swift 3.0 cambiar la sintaxis de esta instrucción?

Todo ha cambiado la sintaxis con Swift 3, pero el tuyo es incluso pre-Swift 2. Eche un vistazo a stackoverflow.com/a/30763344/1187415 y, a continuación, inicie el «Convertir a Swift actual de la Sintaxis» convertidor en Xcode. O leer la documentación.
No me importa en absoluto acerca de los puntos, pero usted debe cambiar la respuesta correcta para esta pregunta como cambió con iOS 10.0. Es una pregunta muy común, y la gente debe saber lo que la respuesta correcta es, por ahora,

OriginalEl autor Lee | 2016-06-17

3 Comentarios

  1. 36

    Ha sido actualizado en tanto Swift 2 y Swift 3. Esta línea debería solucionar el problema. También asegúrese de que las demás líneas con UIUserNotificationType han tenido sus variables cambiado a minúsculas.

    let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
    Debe ser marcado como respuesta válida
    Swift 3 + iOS 10 usos UNNotificationSettings developer.apple.com/reference/usernotifications/…
    UIUserNotificationSettings ahora se ha quedado obsoleta para iOS 10.0. He publicado una respuesta por debajo de lo que el actual sintaxis recomendada.

    OriginalEl autor John Bridge

  2. 15

    De lo que yo entiendo, UIUserNotificationSettings ha quedado obsoleta para iOS 10.0. Ahora se recomienda que utilice la UNUserNotificationCenter.

    Aquí es lo que hice para asegurarme de que mi código era hasta la fecha:

    1) Importar el UserNotifications marco en su AppDelegate

    import UserNotifications

    2) Dentro de la didFinishLaunchingWithOptions función dentro de la AppDelegate, agregue el siguiente:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
        UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in
    
            if granted {
                UIApplication.shared.registerForRemoteNotifications()
            }
    
        }
    
        return true
    }

    Una vez que tienes las notificaciones registradas y permite, usted puede cambiar el número de placa en cualquier punto:

    UIApplication.shared.applicationIconBadgeNumber = value

    Esto funcionó para mí, acabo de probar el envío de una notificación remota a mi teléfono, y funcionó bien. Espero que esto ayude.

    sí, la respuesta es real para iOS 10.0 Gracias

    OriginalEl autor Pierce

  3. 2

    «rawValue» puede utilizar | operador.

    Este código funciona en swift3, no necesitamos hacer eso.

    let types = UIUserNotificationType(rawValue:UIUserNotificationType.alert.rawValue | UIUserNotificationType.sound.rawValue | UIUserNotificationType.badge.rawValue)
    
    application.registerUserNotificationSettings(UIUserNotificationSettings(types: types, categories: nil))

    OriginalEl autor Yamamoto

Dejar respuesta

Please enter your comment!
Please enter your name here